37

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

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

4

5 回答 5

57

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
...
于 2011-05-13T01:02:28.103 回答
11

您可以进行 svn update 并特别提及所有其他目录,例如

svn update dir1 dir2 dir3

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

svn update `ls | grep -v big_dir`

或者, svn mv the big_dir up 到另一个文件夹并更改您的构建系统以从另一个目录获取内容。

于 2011-05-12T21:32:29.060 回答
10

做就是了 :

svn up `svn ls | grep -v big_dir`

使用“svn ls” 您不仅可以更新本地现有的目录和文件,还可以更新存储库中的新文件。因此,更新更完整,而不仅仅是排除。而且您不需要删除已经存在的文件,就像“--set-depth exclude”一样。

于 2013-06-13T09:42:06.143 回答
3

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

如果您不希望工作副本中的大文件夹,您可以查看稀疏结帐:

svn checkout repo . --depth empty
svn up other dirs
于 2011-05-13T00:28:23.443 回答
0
svn file structure:
trunk
|___ folder1
|___ folder2
|___ folder3
|___ other_folder

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

  • svn co svn://svn-xxxx.com/svn/develop/trunk --depth immediates trunk,

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

  • cd后备箱
  • svn up folder1 folder2 folder3 --set-depth infinity

好的,现在noly文件夹123可以更新了,其他一级文件夹仍然保留在trunk文件夹中

于 2020-01-04T11:34:17.827 回答