如果我 svn:ignore 一个非常大的文件夹,它会在 SVN 更新期间提高性能吗?
我的项目中有这个非常大(> 600MB)的文件夹。此文件夹中的文件根本不应更改。问题是每次我调用“svn update”都需要很长时间。有没有办法在更新过程中忽略此文件夹以加快更新过程?
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
...
您可以进行 svn update 并特别提及所有其他目录,例如
svn update dir1 dir2 dir3
或者, grep -v 找出你不想要的东西。
svn update `ls | grep -v big_dir`
或者, svn mv the big_dir up 到另一个文件夹并更改您的构建系统以从另一个目录获取内容。
做就是了 :
svn up `svn ls | grep -v big_dir`
使用“svn ls” 您不仅可以更新本地现有的目录和文件,还可以更新存储库中的新文件。因此,更新更完整,而不仅仅是排除。而且您不需要删除已经存在的文件,就像“--set-depth exclude”一样。
除了@Bill Brasky 所说的之外,一个建议是将巨大的文件夹移到外部文件夹中。这样你就可以做到svn up --ignore-externals
如果您不希望工作副本中的大文件夹,您可以查看稀疏结帐:
svn checkout repo . --depth empty
svn up other dirs
svn file structure:
trunk
|___ folder1
|___ folder2
|___ folder3
|___ other_folder
首先结帐时,使用立即数,仅结帐第一级文件夹和文件:
然后,设置一些文件夹以供稍后更新:
好的,现在noly文件夹123可以更新了,其他一级文件夹仍然保留在trunk文件夹中