在Subversion的整个源代码树中recursion地忽略文件
我并不是Subversion的新手,但是到现在为止,我一直使用乌龟,而从来没有使用commadn。 我的问题是,如何忽略来自整个源的* .o文件而不仅仅是根目录。
例如,如果我有以下文件:/myfile.o /folder1/myfile2.o /folder1/folder1.1/myfile3.o /folder2/myfile4.o
如果svn propedit svn:ignore“。” 在根目录下添加* .o,会忽略myfile.o,但不会忽略/folder1/myfile2.o,/folder1/folder1.1/myfile3.o,/folder2/myfile4.o。 有没有办法为整个项目添加* .o in(我无法做到这一点,我知道可以做到这一点,因为这个项目是在一个存储库与许多其他项目)?
请让我知道,如果我需要澄清。 谢谢!
编辑
下面提供的原始答案是在Subversion v1.8之前给出的,它引入了一个设置默认存储库级别忽略(称为svn:global-ignores
)的方法,而不必覆盖/replace根目录和每个子目录下的svn:ignore
属性。 从1.8开始,实现你想要的最好的方法就是调用下面的命令(荣誉TManhente):
svn propset svn:global-ignores '*.o' .
在早期版本(及更高版本)上,仍然可以使用下面原始答案中指出的方法; 但是,请注意,这里假设你可以用每个子目录中的svn:ignore
属性来代替/覆盖这个属性…对于一个小的/新的版本库来说这可能是正确的,但是如果你有一个大的/旧的存储库,其中一些子目录可能有独立的svn:ignore
你不想覆盖的属性。
原始答案
您可以在“svn propset”中使用“-R”或“–recursive”选项,如以下命令所示:
svn propset svn:忽略“* .o”。 --recursive
更多信息
对于这两种情况,您可以使用以下命令获取更多关于svn propset的信息:
svn help propset
只是一个更新:Subversion 1.8.0介绍了inheritance的属性和存储库口述的configuration(对于自动道具和忽略) ,也可以在这种情况下使用。
您可以在根path中设置新的svn:global-ignores
属性。 它将“只影响植根于物业的道路上的子树”。
这个新属性的设置就像svn:ignore
:
svn propset svn:global-ignores '*.o' .
有关更多信息,请参见Subversion 1.8.0发行说明 。
正如@ hackmaster.a在评论中所指出的那样,在接受的答案中给出的例子具有消除所有先前的svn:ignore
设置的副作用。 使用propedit
而不是propset
也不行。
以recursion方式添加多个文件的正确方法是将它们的名称放在由svn propset svn:ignore "[LIST]" .
设置的svn:ignore
属性中用新行分隔的svn propset svn:ignore "[LIST]" .
例如:
svn propset svn:ignore -R "*.pkl > *.class > Thumbs.db > data.tmp" .
当然,这只是shell提示符。
这个命令会改变svn:ignore
属性.
当前目录及其每个子文件夹以recursion方式。