在SVN更新期间忽略文件夹

Chr*_*ker 37 svn svnignore

如果我svn:忽略一个非常大的文件夹,它会提高SVN更新期间的性能吗?

我的项目中有这个非常庞大的(> 600MB)文件夹.此文件夹中的文件根本不应更改.问题是每次我调用"svn update"都需要永远.有没有办法在更新期间忽略此文件夹以加快更新过程?

Dav*_* W. 53

svn:ignore仅对已经不在Subversion版本库文件是.这个文件夹已经是.

您可以使用svn update --set-depth exclude folderName从工作目录中删除此文件夹:

$ svn update --set-depth exclude bigFolder  #Removes "bigFolder" from workdir
D bigFolder

$
Run Code Online (Sandbox Code Playgroud)

下次进行更新时,bigFolder将不会显示在您的工作目录中.如果你想要它,你将不得不重置深度:

$ svn update --set-depth infinity
U bigFolder
U bigFolder/File1
U bigFolder/File2
...
Run Code Online (Sandbox Code Playgroud)

  • 我不喜欢删除文件夹的内容.我想不更新现有的. (9认同)
  • 您可以对多个文件和目录使用--set-depth排除。像svn update --set-depth排除dir1 dir2 file1 ... (2认同)

Bil*_*sky 10

你可以做一个svn更新,并特别提到每个其他目录,例如

svn update dir1 dir2 dir3
Run Code Online (Sandbox Code Playgroud)

或者,grep -v你不想要的东西.

svn update `ls | grep -v big_dir`
Run Code Online (Sandbox Code Playgroud)

或者,将big_dir转换为另一个文件夹并更改构建系统以从其他目录获取内容.

  • 它不会更新新文件夹,只会更新. (2认同)

Fed*_*TIK 9

做就是了 :

svn up `svn ls | grep -v big_dir`
Run Code Online (Sandbox Code Playgroud)

使用"svn ls"您不仅可以更新本地存在的目录和文件,还可以更新存储库中的新文件.因此,更新比完全排除更完整.而且您不需要删除现有文件,例如"--set-depth exclude".

  • 你说的没错.解析`ls`的常见缺陷是它不能很好地处理名字中带换行符的文件名.`svn ls`避免了这个问题,因为svn不允许你在名字中添加带换行符的文件.`svn add'a b'svn:E160005:路径'/ svn-test/a\012b'中的控制字符'0x0a'无效 (2认同)