【问题标题】:Append directories to ignored list in SVN将目录附加到 SVN 中的忽略列表
【发布时间】:2012-05-25 18:56:36
【问题描述】:

我有一个包含许多子目录的大目录树。在许多目录中,我使用了svn propedit svn:ignore .,并忽略了给定目录中的文件和/或目录。现在,我想忽略 all 子目录中名为 foo 的目录。在this answer,建议调用:

svn propset --recursive svn:ignore foo .

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

【问题讨论】:

    标签: svn


    【解决方案1】:

    我建议为此任务使用 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
    

    【讨论】:

    • 感谢您的回复!我试过了,你建议的find 命令似乎是错误的,每个“类型”字母都得到find: illegal option 错误,最后是find: d: No such file or directory。我正在使用 OS X 以防万一。再次感谢。
    • 我正在使用 GNU 查找。在 OS X 上,find 在第一个选项之前需要一个路径。试试find . -type d ... 而不是find -type d ...
    猜你喜欢
    • 1970-01-01
    • 2020-05-05
    • 1970-01-01
    • 2010-09-12
    • 2011-10-12
    • 1970-01-01
    • 1970-01-01
    • 2011-01-03
    • 2019-04-04
    相关资源
    最近更新 更多