如果我svn:忽略一个真正的大文件夹,它会提高SVN更新期间的性能吗?在SVN更新期间忽略文件夹
我的项目中有这个非常庞大(> 600MB)的文件夹。这个文件夹中的文件不应该改变。问题在于,每次我打电话给“svn update”时,都会花费很长时间。有没有办法在更新期间忽略此文件夹以加快更新过程?
如果我svn:忽略一个真正的大文件夹,它会提高SVN更新期间的性能吗?在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
...
我不喜欢它删除文件夹。我只想不更新现有的。 – 2013-06-13 09:27:01
你可以做一个svn更新,并特别提及每个其他目录,例如
svn update dir1 dir2 dir3
或者,grep -v输出你不想要的东西。
svn update `ls | grep -v big_dir`
或者SVN MV的big_dir成另一个文件夹,改变你的构建系统,以获得从其他目录的内容。
它不会更新新的文件夹,只存在。 – 2013-06-13 09:26:25
除了@Bill Brasky说的,一个建议是将巨大的文件夹移动到外部。这样,你可以做svn up --ignore-externals
如果你不想在你的工作拷贝巨大的文件夹,你可以看看稀疏检出:
svn checkout repo . --depth empty
svn up other dirs
只要做到:
svn up `svn ls | grep -v big_dir`
使用“SVN LS”你可以更新不仅在本地现有的目录和文件,但新档案库中的文件。因此,更新更完整,而不仅仅是排除。而且你不需要删除已经存在的文件,比如“--set-depth exclude”。
解析'ls'输出通常是一个坏主意[http://mywiki.wooledge.org/ParsingLs](http://mywiki.wooledge.org/ParsingLs) – Doppelganger 2014-06-24 19:45:23
@Doppelganger在这篇文章中,它是关于'ls'。在答案代码'svn ls'中。这有点不同。 – 2014-06-25 08:11:25
你是对的。解析'ls'常见的缺陷是它不能很好地处理名称中带有换行符的文件名。 'svn ls'避免了这个问题,因为svn不会让你在他们的名字中添加带有换行符的文件。'SVN加“一 B” 的svn:E160005:无效的控制字符在路径“0X0A”“/ SVN-测试/ A \ 012b'' – Doppelganger 2014-06-26 14:22:57
与此类似SO贴子http://stackoverflow.com/questions/116074/how-to-ignore-a-directory-with-svn – 2011-05-12 21:26:58
svn:ignore只能用于忽略* unversioned *文件。您仍然可以添加由svn:ignore匹配的文件,并且它们将像存储库中的任何其他文件一样对待。 – 2011-05-12 21:28:50
你可以试试看看是否有帮助。 – MichaelHouse 2011-05-12 21:32:24