我希望在我的svn中添加一行:例如,忽略模式“* .bak”。
我希望这是为整棵树递归完成的。我可以按照here所描述的那样做:
svn propset svn:ignore '*.bak' . --recursive
但是我发现这个方法会删除我现有的任何忽略规则。
有没有什么方法可以递归地向svn:ignore属性添加一个新行而不删除已存在的内容?
我的许多子目录已经有多个忽略模式,我不希望所有子目录都有相同的忽略模式。我只想为每个目录添加一个新模式。
我希望这一切都清楚。谢谢你的帮助!
答案 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