在svn上签出(co)项目是否会在安静时更快?

在svn上签出(co)项目是否会在安静时更快?,svn,repository,svn-repository,Svn,Repository,Svn Repository,我必须使用svn签出需要一段时间的大型项目,所以我只是想知道我是否将其设置为--安静或(-q),这样就不会打印任何消息,这样会更快吗?还是这与此无关?视情况而定。如果瓶颈是从服务器检索文件,那么它不会有任何区别。但是如果你有一个速度慢的控制台,那么限制因素可能是它向终端喷出线路的速度 对于一个典型的例子来说,这不太可能有什么不同,但也有一些极端的例子(通过慢速链接SSH到远程机器,然后在那里签出,到一个有很多小文件的本地repo)。肯定是的,使用标准输出总是会减慢任何进程。我最近对10-15GB

我必须使用svn签出需要一段时间的大型项目,所以我只是想知道我是否将其设置为
--安静
(-q)
,这样就不会打印任何消息,这样会更快吗?还是这与此无关?

视情况而定。如果瓶颈是从服务器检索文件,那么它不会有任何区别。但是如果你有一个速度慢的控制台,那么限制因素可能是它向终端喷出线路的速度


对于一个典型的例子来说,这不太可能有什么不同,但也有一些极端的例子(通过慢速链接SSH到远程机器,然后在那里签出,到一个有很多小文件的本地repo)。

肯定是的,使用标准输出总是会减慢任何进程。我最近对10-15GB的数据进行了转储、加载,当然还有签出和提交,并且总是使用-q,因为它可以在相当长的时间内减少进程的持续时间。

除非您以300或a的速度运行,
--quiet
选项可能不会有多大的好处。终端显示文件的签出速度可能快于从服务器获取文件的速度

如果您使用的Subversion版本早于1.7,并且您使用的是Windows,则从Subversion下载的反病毒程序扫描文件时可能会出现问题。在较旧版本的Subversion中,每个文件下载两次:一次在您的工作目录中,一次在
.svn
目录下,作为基本版本,您可以使用它来执行
svn diff
,而不会影响服务器。许多Windows用户抱怨由于此问题导致签出缓慢。更新到1.7或1.8将使Windows签出更快


您可以尝试稀疏签出,只签出所需的文件。例如,我们确实发布了分支,我发现简单地签出整个分支,然后只更新我正在处理的项目更容易:

$ svn co --depth=immediates $RSVP/branches/5.2
这将检出整个分支和该分支上的所有项目,但仅检出该分支下的目录。我得到了项目名称,但我不签出项目下的任何内容。我现在需要更新我的vibortz项目:

$ svn up --set-depth=infinity 5.2/vibortz
现在,这个项目中的所有文件都已签出。你可以更进一步

$ svn up --set-depth=immediates 5.2/vibortz
A  docs
A  src
A  dependencies
我对文档或依赖项不感兴趣,但我对本项目中的缓冲区代码感兴趣:

$ src up --set-depth=infinity 5.2/vibortz/src/buffer
A  src/buffer
A  ...
我将整个项目(事实上,整个分支!)作为Subversion工作目录,但我只是签出我真正感兴趣的文件。我可以根据需要更新其他目录

大多数时候,当我听说一个项目要花很长时间才能签出时,这是因为编译后的二进制文件被签入了这个项目(这是一个否定的说法,但我们不会在这里讨论)。您想要签出整个项目,但不想要二进制文件。同样,稀疏签出可能适合您。假设BASH:

$ src co --depth=immediates $URL/trunk/vibortz
A  vibortz/binaries
A  vibortz/docs
A  vibortz/resources
A  vibortz/source
我只需要资源和来源:

$ src up --set-depth=infinity vibortz/source vibortz/resources
如果我想要除二进制文件以外的所有目录,我可以这样做:

$ shopt -s extglob    # Kornshell users don't have to do this...
$ cd vibortz
$ src up --depth=infinity !(binaries)

!(二进制文件)
从我的更新中排除目录
binaries
。除二进制文件外的所有目录都将更新和扩展。

有趣的答案集。我认为最好的办法是自己测量,因为它可能取决于你的环境。在*nix上可以使用
time
命令,在Windows上可以使用Powershell的
Measure命令
cmdlet。