在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方式。