我必须用svn签出需要一段时间的大型项目,所以我只是想知道我是否将其设置为--quiet
或者(-q)
没有打印消息会更快?或者这与它无关?
3 回答
除非您在以BAUD 300运行的VT100 终端或Teletype 终端上,否则该选项可能不会有多大用处。终端显示文件的速度可能比从服务器获取文件的速度要快。--quiet
如果您使用的是低于 1.7 的 Subversion 版本并且您使用的是 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)
目录。除binaries
二进制文件外的所有目录都将更新和扩展。
肯定是的,使用标准输出总是会使任何进程变慢。我最近做了转储、加载,当然还有签出和提交 10-15GB 的数据,并且总是使用 -q 来完成,因为它在非常长的时间内减少了进程持续时间。
这取决于。如果瓶颈是从服务器检索文件,那么它不会有任何区别。但是,如果您的控制台速度较慢,那么限制因素可能是它可以多快地向终端发送线路。
对于典型的情况,它不太可能产生影响,但是在某些极端情况下(通过慢速链接通过 SSH 连接到远程机器,并在那里结帐,到带有大量小文件的本地存储库)。