本文件旨在描述 Subversion 1.4。如果您使用的是更新版本的 Subversion,我们强烈建议您访问 https://svnbook.subversion.org.cn/ 并参考与您的 Subversion 版本相对应的版本。
在 Subversion 中,我们试图消除 cvs status 和 cvs update 命令之间的许多混乱。
cvs status 命令有两个目的:首先,向用户显示工作副本中的任何本地修改;其次,向用户显示哪些文件已过时。不幸的是,由于 CVS 的状态输出难以阅读,许多 CVS 用户根本没有使用此命令。相反,他们养成了运行 cvs update 或 cvs -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 旁边没有修订版号,表示它尚未存在于工作副本中。)
此时,您应该快速查看 svn status 中所有可能的状态代码列表。以下是您将看到的一些更常见的状态代码:
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 “Externals Definitions”
? Resource is not under version control
! Resource is missing or incomplete (removed by another tool than
Subversion)
有关 svn status 的更详细讨论,请参阅 “查看更改概述”部分.
svn update 更新您的工作副本,并且只打印有关它更新的文件的信息。
Subversion 已将 CVS P 和 U 代码合并为一个 U。当发生合并或冲突时,Subversion 只打印 G 或 C,而不是关于它的整句话。
有关 svn update 的更详细讨论,请参阅 “更新您的工作副本”部分.