本文档旨在描述 Subversion 1.2。如果您正在运行更新版本的 Subversion,我们强烈建议您访问 https://svnbooks.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

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

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 旁边没有修订号意味着它在工件副本中还不存在。)

最后,这里简要概述了您可能会看到的最常见的状态代码

A    Resource is scheduled for Addition
D    Resource is scheduled for Deletion
M    Resource has local Modifications
C    Resource has Conflicts (changes have not been completely merged
       between the repository and working copy version)
X    Resource is eXternal to this working copy (may come from another
       repository).  See the section called “svn:externals
?    Resource is not under version control
!    Resource is missing or incomplete (removed by another tool than
       Subversion)

有关 svn status 的更详细讨论,请参阅 svn status”部分

更新

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

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

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

TortoiseSVN 官方中文版 1.14.7 发布