本手册用于描述 Subversion 1.6.x 版本系列。如果您运行的是其他版本的 Subversion,强烈建议您访问 https://svnbook.subversion.org.cn/ 并查阅适合您 Subversion 版本的手册。

名称

svn status (stat, st) — 打印工作副本文件和目录的状态。

概要

svn status [PATH...]

描述

打印工作副本文件和目录的状态。不带任何参数时,只打印本地修改的项(不访问版本库)。使用 --show-updates (-u) 选项,会添加工作副本版本号和服务器上过时的信息。使用 --verbose (-v) 选项,会在每个项上打印完整版本信息。使用 --quiet (-q) 选项,只打印本地修改的项的摘要信息。

输出中的前七列,每一列都只有一个字符宽,每一列都提供关于每个工作副本项的不同方面的信息。

第一列指示一个项是否被添加、删除或以其他方式更改

' '

没有修改。

'A'

项计划被添加。

'D'

项计划被删除。

'M'

项已被修改。

'R'

项在您的工作副本中被替换了。这意味着该文件计划被删除,然后一个具有相同名称的新文件计划被添加在其位置。

'C'

该项的内容(与属性相反)与从版本库接收到的更新冲突。

'X'

该项存在是因为一个 externals 定义。

'I'

该项被忽略(例如,使用 svn:ignore 属性)。

'?'

该项不在版本控制之下。

'!'

该项丢失(例如,您在没有使用 svn 的情况下移动或删除了它)。这也表示目录不完整(签出或更新被打断了)。

'~'

该项被版本化为一种对象(文件、目录、链接),但已被另一种对象替换。

第二列显示文件或目录属性的状态

' '

没有修改。

'M'

该项的属性已被修改。

'C'

该项的属性与从版本库接收到的属性更新冲突。

第三列只有在工作副本目录被锁定时才会被填充(见 名为“有时您只需要清理一下”的部分

' '

该项未锁定。

'L'

该项已锁定。

第四列只有在该项计划被添加带有历史记录时才会被填充

' '

提交时不计划历史记录。

'+'

提交时计划历史记录。

第五列只有在该项相对于其父目录被切换时才会被填充(见 名为“遍历分支”的部分

' '

该项是其父目录的子目录。

'S'

该项已被切换。

第六列用锁定信息填充

' '

当使用 --show-updates (-u) 选项时,该文件未锁定。如果 --show-updates (-u) 选项没有使用,这仅仅意味着该文件在该工作副本中未锁定。

K

该文件在该工作副本中已锁定。

O

该文件被另一个用户或在另一个工作副本中锁定。这只有在使用 --show-updates (-u) 选项时才会出现。

T

该文件在该工作副本中已锁定,但锁定已被窃取并且无效。该文件目前在版本库中已锁定。这只有在使用 --show-updates (-u) 选项时才会出现。

B

该文件在该工作副本中已锁定,但锁定已被破坏并且无效。该文件不再锁定。这只有在使用 --show-updates (-u) 选项时才会出现。

第七列只有在该项是树冲突的受害者时才会被填充

' '

该项不是树冲突的受害者。

'C'

该项是树冲突的受害者。

第八列始终为空。

过时信息出现在第九列(只有在您传递 --show-updates (-u) 选项时)

' '

您工作副本中的该项是最新的。

'*'

服务器上存在该项的更新版本。

其余字段宽度可变,以空格分隔。如果传递了 --show-updates (-u) 或 --verbose (-v) 选项,工作副本版本号将是下一个字段。

如果传递了 --verbose (-v) 选项,将显示最后一次提交的版本号和最后一次提交的作者。

工作副本路径始终是最后一个字段,因此它可以包含空格。

选项

--changelist ARG
--depth ARG
--ignore-externals
--incremental
--no-ignore
--quiet (-q)
--show-updates (-u)
--verbose (-v)
--xml

示例

这是查找您对工作副本所做更改的最简单方法

$ svn status wc
 M      wc/bar.c
A  +    wc/qax.c

如果您想找出工作副本中的哪些文件已过时,请传递 --show-updates (-u) 选项(这不会对您的工作副本进行任何更改)。在这里您可以看到,自上次更新工作副本以来,版本库中的 wc/foo.c 文件已更改

$ svn status -u wc
 M            965    wc/bar.c
        *     965    wc/foo.c
A  +          965    wc/qax.c
Status against revision:    981
[Note] 注意

--show-updates (-u) 在过时的项旁边放置一个星号(即,如果您稍后使用 svn update,将从版本库更新的项)。--show-updates (-u) 不会导致状态列表反映版本库中的该项版本(尽管您可以通过传递 --verbose (-v) 选项来查看版本库中的版本号)。

您可以从 status 子命令中获取的最多的信息如下所示

$ svn status -u -v wc
 M            965       938 sally        wc/bar.c
        *     965       922 harry        wc/foo.c
A  +          965       687 harry        wc/qax.c
              965       687 harry        wc/zig.c
Status against revision:   981

最后,您可以使用 --xml 选项以 XML 格式获取 svn status 输出

$ svn status --xml wc
<?xml version="1.0"?>
<status>
<target
   path="wc">
<entry
   path="qax.c">
<wc-status
   props="none"
   item="added"
   revision="0">
</wc-status>
</entry>
<entry
   path="bar.c">
<wc-status
   props="normal"
   item="modified"
   revision="965">
<commit
   revision="965">
<author>sally</author>
<date>2008-05-28T06:35:53.048870Z</date>
</commit>
</wc-status>
</entry>
</target>
</status>

有关 svn status 的更多示例,请参见 名为“查看您更改的概述”的部分.