在SVN更新期间忽略文件夹

时间:2011-05-12 21:21:27

标签: svn svnignore

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

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

5 个答案:

答案 0 :(得分:50)

svn:ignore仅适用于Subversion存储库中尚未存在的文件。这个文件夹已经是。

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

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

$

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

$ svn update --set-depth infinity
U bigFolder
U bigFolder/File1
U bigFolder/File2
...

答案 1 :(得分:10)

您可以执行svn更新并特别提及其他所有目录,例如

svn update dir1 dir2 dir3

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

svn update `ls | grep -v big_dir`

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

答案 2 :(得分:8)

只是做:

svn up `svn ls | grep -v big_dir`

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

答案 3 :(得分:3)

除了@Bill Brasky所说的,一个建议是将巨大的文件夹移动到外部。这样你可以做svn up --ignore-externals

如果你不想要工作副本中的大文件夹,你可以查看稀疏检查:

svn checkout repo . --depth empty
svn up other dirs

答案 4 :(得分:0)

svn file structure:
trunk
|___ folder1
|___ folder2
|___ folder3
|___ other_folder

先结帐时,请使用即时,仅结帐第一级文件夹和文件:

  • svn co svn://svn-xxxx.com/svn/develop/trunk-深度即时干线,

然后,设置一些文件夹以供以后更新:

  • cd干线
  • svn up folder1 folder2 folder3-设置深度无限

好,现在只有文件夹123能够更新,而其他第一级文件夹仍保留在中继文件夹中