在subversion中递归地忽略整个源树中的文件

ala*_*lin 50 svn version-control tortoisesvn

我不是Subversion的新手,但到目前为止我一直使用Tortoise而不是commadn系列.我的问题是,我如何忽略来自ENTIRE源的所有文件,如*.o,而不仅仅是根.

例如,如果我有以下文件:/myfile.o /folder1/myfile2.o /folder1/folder1.1/myfile3.o /folder2/myfile4.o

如果svn propedit svn:忽略"." 在根目录中,并添加*.o,它将忽略myfile.o,但不会忽略/folder1/myfile2.o,/folder1/folder1.1/myfile3.o,/folder2/myfile4.o.有没有办法为整个项目添加*.o(我无法为整个存储库执行此操作,我知道可以完成,因为此项目位于包含许多其他项目的存储库中)?

如果我需要澄清,请告诉我.谢谢!

Mic*_*yan 68

编辑

下面提供的原始答案是在Subversion v1.8之前给出的,它引入了一种方法来设置默认存储库级别ignore(被调用svn:global-ignores)而不覆盖/替换svn:ignore根目录和每个子目录上的属性.从1.8开始,实现所需内容的最佳方法是调用以下命令(信用转到TManhente):

svn propset svn:global-ignores '*.o' .
Run Code Online (Sandbox Code Playgroud)

在早期版本(以及更高版本)上,您仍然可以使用下面原始答案中指出的方法; 但是,请注意,这假设您可以替换/覆盖svn:ignore每个子目录中的属性...这对于小/新的存储库可能没问题但如果您有一个大/旧存储库可能不是您想要的其中一些子目录可能具有svn:ignore您不希望覆盖的独立属性.

原始答案

您可以在"svn propset"中使用"-R"或"--recursive"选项,如以下命令所示:

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

更多信息

对于这两种情况,您可以使用以下命令获取有关svn propset的更多信息:

svn help propset

  • 接受的答案将消除所有其他svn:忽略设置,如果你有它们.你可能会想要http://stackoverflow.com/questions/3086418/svn-revert-all-properties-changes (44认同)
  • hackmaster的评论应该固定在这个帖子的顶部.一个"接受的答案",其中包含了破坏你的存储库(至少它的某些部分)的指令并不是一件好事;) (3认同)
  • 我想通过hackmaster发出警告,并感谢他提供链接解决方案.仅供参考,我选择了〜/ .subversion/config中的全局配置解决方案 (2认同)

TMa*_*nte 39

只是一个更新:Subversion 1.8.0引入了继承属性存储库Dictated配置(对于自动道具和忽略),在这种情况下也可以使用它.

您可以svn:global-ignores在根路径中设置新属性.它将"仅影响根据属性设置的路径生成的子树".

这个新属性设置如下svn:ignore:

    svn propset svn:global-ignores '*.o' .
Run Code Online (Sandbox Code Playgroud)

有关更多信息,请参阅Subversion 1.8.0发行说明.