本文档旨在描述 Apache™ Subversion® 的 1.7.x 系列。如果您运行的是其他版本的 Subversion,强烈建议您访问 https://svnbook.subversion.org.cn/ 并查阅适合您 Subversion 版本的文档。

状态和更新的区别

Subversion 试图消除 cvs statuscvs update 命令之间的许多混淆。

cvs status 命令有两个目的:首先,向用户显示工作副本中的任何本地修改;其次,向用户显示哪些文件已过时。不幸的是,由于 CVS 的状态输出难以阅读,许多 CVS 用户根本没有使用此命令。相反,他们养成了运行 cvs updatecvs -n update 来快速查看其更改的习惯。如果用户忘记使用 -n 选项,则会产生副作用,即合并他们可能尚未准备好处理的存储库更改。

Subversion 通过使 svn status 的输出对人和解析器都易于阅读来消除这种混乱。此外,svn update 仅打印有关已更新文件的的信息, 打印本地修改。

状态

svn status 打印所有具有本地修改的文件。默认情况下,不会联系存储库。虽然此子命令接受相当多的选项,但以下是最常用的选项

-u

联系存储库以确定并显示过时信息。

-v

显示版本控制下的所有条目。

-N

非递归运行(不进入子目录)。

svn status 命令有两种输出格式。在默认的 简短 格式中,本地修改看起来像这样

$ svn status
M       foo.c
M       bar/baz.c

如果您指定 --show-updates (-u) 选项,则使用更长的输出格式

$ svn status -u
M             1047   foo.c
        *     1045   faces.html
        *            bloo.png
M             1050   bar/baz.c
Status against revision:   1066

在这种情况下,会出现两个新列。如果文件或目录已过时,则第二列包含一个星号。第三列显示项目的当前工作副本的修订版号。在前面的示例中,星号表示如果我们更新,则会修补 faces.html,并且 bloo.png 是存储库中新添加的文件。(bloo.png 旁边没有修订版号表示它尚未存在于工作副本中。)

有关 svn status 的更详细讨论,包括对前面示例中显示的状态代码的解释,请参见 名为“查看您的更改概述”的部分

更新

svn update 更新您的工作副本,并且只打印关于它更新的文件的信息。

Subversion 将 CVS 的 PU 代码合并为 U。当发生合并或冲突时,Subversion 只打印 GC,而不是关于它的完整句子。

有关 svn update 的更详细讨论,请参阅 名为“更新您的工作副本”的部分