当 --quiet 时,在 svn 上签出 (co) 项目是否会更快?

G.R*_*sky 5 svn repository svn-repository

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

Dav*_* W. 3

除非您使用的是波特率300运行的VT100 终端电传打字机终端,否则该选项可能不会有太大作用。终端显示的文件检出速度可能比从服务器获取文件的速度快。--quiet

如果您使用的 Subversion 版本早于 1.7 并且使用的是 Windows,则防病毒程序在扫描从 Subversion 下载的文件时可能会出现问题。在旧版本的 Subversion 中,每个文件都会下载两次:一次在您的工作目录中,一次在该.svn目录下作为基本版本,您可以使用它而svn diff无需打扰服务器。许多 Windows 用户抱怨由于这个问题结账速度慢。更新到 1.7 或 1.8 将使 Windows 结账速度更快。


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

$ svn co --depth=immediates $RSVP/branches/5.2
Run Code Online (Sandbox Code Playgroud)

这将检查整个分支以及该分支上的所有项目,但仅检查紧邻该分支下的目录。我得到了项目名称,但我没有检查项目下的任何内容。我现在需要更新我的 vibortz 项目:

$ svn up --set-depth=infinity 5.2/vibortz
Run Code Online (Sandbox Code Playgroud)

现在,该项目中的所有文件都已检出。你可以更进一步。

$ svn up --set-depth=immediates 5.2/vibortz
A  docs
A  src
A  dependencies
Run Code Online (Sandbox Code Playgroud)

我对文档或依赖项不感兴趣,但我对此项目中的缓冲区代码感兴趣:

$ src up --set-depth=infinity 5.2/vibortz/src/buffer
A  src/buffer
A  ...
Run Code Online (Sandbox Code Playgroud)

我将整个项目(事实上,整个分支!)作为 Subversion 工作目录,但我只签出我真正感兴趣的文件。我可以根据需要更新其他目录。

大多数时候,当我听说某个项目需要很长时间才能签出时,这是因为已编译的二进制文件已签入该项目(这是一个禁忌,但我们不会在这里讨论)。您想要签出整个项目,但不需要二进制文件。同样,稀疏结账可能对你有用。假设 BASH:

$ src co --depth=immediates $URL/trunk/vibortz
A  vibortz/binaries
A  vibortz/docs
A  vibortz/resources
A  vibortz/source
Run Code Online (Sandbox Code Playgroud)

我只想要资源和来源:

$ src up --set-depth=infinity vibortz/source vibortz/resources
Run Code Online (Sandbox Code Playgroud)

如果我想要除二进制文件之外的所有目录,我可以这样做:

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

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