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