我有一个涉及许多子目录的大目录树。在许多目录中,我使用了svn propedit svn:ignore .
,并忽略了给定目录中的文件和/或目录。现在,我想在所有子目录中忽略名为foo
的目录。在this answer中,建议调用:
svn propset --recursive svn:ignore foo .
来自树的根。问题是,一旦调用它,它将覆盖各个子目录中的所有预定义忽略 - 这是不希望的。基本上我想附加到树中每个目录的忽略列表,其中包含条目foo
。 SVN是否支持这种操作?如果没有,那么我正在考虑编写此任务的脚本,并在每个{{{}添加到文件dir-prop-base
(似乎包含忽略列表) 1}}(其中./sub/directory/.svn
是树的根)所需的行。 这样做是否安全?,即手动弄乱.
内容?
答案 0 :(得分: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