我不是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(我无法为整个存储库执行此操作,我知道可以完成,因为此项目位于包含许多其他项目的存储库中)?
如果我需要澄清,请告诉我。谢谢!
答案 0 :(得分:67)
修改
下面提供的原始答案是在Subversion v1.8之前给出的,它引入了一种方法来设置默认存储库级别ignore(称为svn:global-ignores
)而不覆盖/替换根目录上的svn:ignore
属性和每个子目录。从1.8开始,实现你想要的最好的方法就是调用以下命令(功劳归功于TManhente):
svn propset svn:global-ignores '*.o' .
在早期版本(以及更高版本)上,您仍然可以使用下面原始答案中指出的方法;但是,请注意,这假设您可以替换/覆盖每个子目录上的svn:ignore
属性...这可能对于一个小/新的存储库很好,但如果你有可能不是你想要的一个大/旧的存储库,其中某些子目录可能具有您不希望覆盖的独立svn:ignore
属性。
原始答案
您可以在“svn propset”中使用“-R”或“--recursive”选项,如以下命令所示:
svn propset svn:ignore '*.o' . --recursive
更多信息
对于这两种情况,您可以使用以下命令获取有关svn propset的更多信息:
svn help propset
答案 1 :(得分:39)
只是一个更新:Subversion 1.8.0引入了继承属性和存储库Dictated配置(用于自动道具和忽略),在这种情况下也可以使用。
您可以在根路径中设置新的svn:global-ignores
属性。它将“仅影响根据设置属性的路径生成的子树”。
此新属性的设置与svn:ignore
:
svn propset svn:global-ignores '*.o' .
Subversion 1.8.0 Release Notes提供了更多信息。
答案 2 :(得分:3)
正如@ hackmaster.a在评论中指出的那样,在接受的答案中给出的示例具有消除所有先前svn:ignore
设置的副作用。使用propedit
代替propset
并不起作用。
以递归方式添加多个文件的正确方法是将其名称放在由svn:ignore
属性集svn propset svn:ignore "[LIST]" .
例如:
svn propset svn:ignore -R "*.pkl
> *.class
> Thumbs.db
> data.tmp" .
当然>
只是shell提示。
此命令将递归更改svn:ignore
当前目录及其每个子文件夹的.
属性。