在subversion中递归忽略整个源树中的文件而不删除现有的ignore属性

时间:2012-01-24 13:11:05

标签: svn svnignore

我希望在我的svn中添加一行:例如,忽略模式“* .bak”。

我希望这是为整棵树递归完成的。我可以按照here所描述的那样做:

svn propset svn:ignore '*.bak' . --recursive

但是我发现这个方法会删除我现有的任何忽略规则。

有没有什么方法可以递归地向svn:ignore属性添加一个新行而不删除已存在的内容?

我的许多子目录已经有多个忽略模式,我不希望所有子目录都有相同的忽略模式。我只想为每个目录添加一个新模式。

我希望这一切都清楚。谢谢你的帮助!

4 个答案:

答案 0 :(得分:2)

使用find命令:

    find . -name "*.bak" \
       -execdir bash -c 'svn -q propset svn:ignore -F <((svn propget svn:ignore; basename "{}") | sort -u) .' \;

我使用sort -u来保持一致性和唯一性。

答案 1 :(得分:0)

要忽略多个“类型”或“模式”,您需要提供文件

svn propset svn:ignore -F patterns.txt

所以,要做你想做的事,你需要更进一步,获得道具名单,附上临时文件等等。

或者您可以编写一个直接与SVN / Dav服务器对话的Web客户端,获取道具并设置它们。

答案 2 :(得分:0)

svn propedit 修改属性

答案 3 :(得分:0)

juj给出的答案有效,但只会添加已存在此类文件的目录的忽略模式,因此您可能需要在将来重新运行该脚本。此外,您在svn:ignore属性中获取特定文件名(与模式相反)。

以下答案中提供了一个没有上述问题的替代解决方案: unix.stackexchange post