本文档旨在描述 Subversion 1.2。如果您正在运行更新版本的 Subversion,我们强烈建议您访问 https://svnbooks.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
旁边没有修订号意味着它在工件副本中还不存在。)
最后,这里简要概述了您可能会看到的最常见的状态代码
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 P
和 U
代码合并为 U
。当发生合并或冲突时,Subversion 只是打印 G
或 C
,而不是打印关于它的整句话。
有关 svn update 的更详细讨论,请参阅 “更新您的工作副本”部分。