2011-09-29 274 views
6

我是SVN的新手,我想要递归地忽略一个目录,就像在Git中一样。我有一个目录,sample,我想要递归地忽略。SVN全局忽略递归?

>svn status 
sample/first/1.jpg 
sample/second/2.jpg 
sample/third/3.jpg 

我曾尝试:

  1. svn ps svn:ignore "*" .(下sample目录)
  2. ~/.subversion/config设置全局忽略的global-ignores = sample

但还是它显示了同样的结果,当我运行svn status

>svn status 
sample/first/1.jpg 
sample/second/2.jpg 
sample/third/3.jpg 

我如何递归忽略SVN的目录?

回答

4

如果你想忽略的目录samples和范围内的所有内容,你必须包含的samples目录的目录设置svn:ignore。你自己在samples之内。请注意两件事:

  1. svn:ignore只影响unversions文件。这意味着,SVN已知的文件和目录仍然会显示出来。

  2. svn:ignore设置不是累积的或递归的。如果你想忽略只有 * .jpg文件,你必须在每个目录中设置svn:ignore*.jpg

请注意,该命令svn propset-R(亦称递归)选项,这威力帮助。但请记住,propset不是propadd。如果你想在树中设置不同的值,这当然只是一个问题。

7

svn -R propset svn:ignore . -F somefile.txt

哪里somefile.txt是包含所有的svn文件不理你想递归设置模式。

+0

谢谢。你拯救了我的一天。 – itsaboutcode

+0

我刚刚运行'svn -R propset svn:ignore -F。\ ignorePatterns.txt',并收到以下错误:'svn:E205001:显式目标参数要求' –

+1

@ShaunLuttin在我的示例中,svn:ignore在当前工作目录'。' (在我的例子中,它没有引号)。在你的例子中,你省略了目录,并移动了点来创建文件'。\ ignorePatterns.txt'的相对路径。您不能针对_nothing_提交一组属性,因为SVN基于虚拟文件系统。您需要针对目录或文件提交属性。 –

1

http://svnbook.red-bean.com/en/1.5/svn-book.html#svn.advanced.props.special.ignore

“在SVN中发现的模式:忽略属性只适用于在其上设置该属性的目录,而不是任何子目录。”

[...]

“一旦对象是Subversion的控制下,忽略模式机制已不再适用于它。换句话说,不要指望颠覆以避免犯您对所做的更改一个版本化的文件,因为该文件的名称与忽略模式相匹配 - Subversion始终注意到它的所有版本化对象。“

您可以使用-R标志,但仅适用于属性递归 - 它不会更改属性效果,因此不适用于任何创建的新目录。

此外,我建议使用propedit而不是ps,因为它允许多线程编辑,否则处理多个忽略模式是棘手的。

0

对于那些在* nix:

虽然文档意味着~.subversion/config应该已经在它的默认配置,矿(在Ubuntu SVN 1.6.17)是空的。

这是我终于开始工作(这是整个文件)格式,包括默认设置,我已经添加* .IGNORE的结尾:

[Miscellany] 
global-ignores=*.o *.lo *.la #*# .*.rej *.rej .*~ *~ .#* .DS_Store *.ignore 
1

有一个新的SVN属性从SVN 1.8开始做这件事。见this page from the SVN book底部:

svn:global-ignores 

它适用于您设置的文件夹和下面的一切,你不需要指定递归。例如,设置当前目录:

svn propset svn:global-ignores "bin obj" .