4

我有一个涉及许多子目录的大目录树。在许多目录中,我使用了svn propedit svn:ignore ., 并忽略了给定目录中的文件和/或目录。现在,我想忽略所有子目录中名为foo. 在这个答案中,建议调用:

svn propset --recursive svn:ignore foo .

从树的根。问题是,一旦调用它,它就会覆盖各个子目录中所有预定义的忽略 - 这是不希望的。本质上,我想在树中每个目录的忽略列表中附加一行,其中包含条目fooSVN 支持这种动作吗?如果不是,那么我正在考虑编写此任务的脚本,并在每个(树的根在哪里)所需的行中添加到文件dir-prop-base(似乎包含忽略列表) 。这样做安全吗?,即手动弄乱内容?./sub/directory/.svn..svn

4

1 回答 1

6

我建议为此任务使用 bash 脚本。但是不要直接操作文件,而是使用svn 命令工具。该解决方案简单且安全。find -type d ! -path "*/.svn*" -exec /tmp/add_svn_ignore.sh {} +如果从工作目录执行,则以下脚本可能会完成这项工作:

#! /bin/bash
ignore="foo"
for pathname in "$@"; do
    lines="$( svn propget svn:ignore "$pathname" )"
    grep -F -x -q "$ignore" - <<< "$lines" ||
    svn propset svn:ignore "$lines"$'\n'"$ignore" "$pathname"
done
于 2012-05-19T08:59:28.640 回答