SVN中的结果代码是什么意思?


300

SVN中的结果代码是什么意思?我需要快速参考。

Answers:


518

有关更多详细信息,请参见SVNBook:“工作副本文件和目录的状态”

常见状态:

U:工作文件已更新

G:回购中的更改已自动合并到工作副本中

M:工作副本已修改

C:此文件与存储库中的版本冲突

:此文件不受版本控制

:此文件受版本控制,但丢失或不完整

:此文件将添加到版本控制中(提交后)

A +:此文件将被移动(提交后)

D:此文件将被删除(提交后)

S:这表示文件或目录已从其余工作副本的路径(使用svn开关)切换到分支

:无视

X:外部定义

:类型已更改

R:项目已在您的工作副本中替换。这意味着已计划删除该文件,然后已计划将具有相同名称的新文件替换到该位置。

L :项目已锁定

E:通过svn更新,该项目已经存在,并且已经创建。


12
“ R”:此文件已替换
清单

8
E呢 所有文档说的都是“已存在”,这没有帮助。
流行

2
+1,但没有提供“ G:回购中的更改已自动合并到工作副本中”(不再吗?)
朱利安(Julian

86

另请注意,第二列中的结果代码引用了文件的属性。例如:

U   filename.1
 U  filename.2  
UU  filename.3

filename.1:文件已更新
filename.2:文件中的一个或多个属性(例如svn:keywords)已更新
filename3 .:文件及其属性均已更新


36

您始终可以通过运行以下命令获取列表:

svn status --help

19

我想谈谈“ G”状态,

G:回购中的更改已自动合并到工作副本中

我认为上面的定义并不明确,可能会引起一些混乱,因为所有文件都会自动合并到工作副本中,正确的应该是:

U =项目(U)修改为存储库版本

G =项目的本地更改与存储库合并

C =资料库对商品的本地更改(C)

D =从工作副本中删除的项目(D)

A =项目(A)加入工作副本


关于“ G”状态。我在2个不同的检出目录中有2个更改的副本。我提交了一个checkout-dir的更改,当我更新另一个checkout-dir时,它显示“ G”状态,表明本地目录中的更改已与存储库合并。
GuruM

18

还有一个“ E”状态

E =文件在更新之前已存在

如果您手动创建了通过执行更新创建的文件夹,则可能会发生这种情况。


13

我通常通过gui(我的IDE或客户端)使用svn。因此,当我不得不诉诸命令行时,我永远都不会记得这些代码。

我发现此备忘单有很大帮助:Subversion备忘


1
它没有列出G状态。
方舟

13

SVN状态栏

$ svn status
L index.html

命令的输出分为六列,但这并不明显,因为有时列为空。也许用这种方式ls -l而不是什么都用破折号指示空列会更有意义。然后,例如,L index.html看起来像--L--- index.html,这很明显使我们唯一拥有的信息在第三列中,即关于锁定的信息。无论如何,一旦您知道它开始变得更有意义了。

SVN状态第一列:A,D,M,R,C,X,I,?,!,〜

第一列表示已添加,删除或以其他方式更改了项目。

      没有修改。

 A    该项目已计划添加。

 D    项目已计划删除。

 M    项目已被修改。

 R    项目已替换为您的工作副本。这意味着已计划删除该文件,然后已计划将具有相同名称的新文件替换到该位置。

 C    项目的内容(与属性相反)与从存储库收到的更新冲突。

 X    项目与外部定义有关。

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

 ?    该项目不受版本控制。

 !    项目丢失(例如,您在不使用svn的情况下将其移动或删除了)。这也表明目录不完整(签出或更新被中断)。

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

SVN状态第二栏:M,C

第二列说明文件或目录属性的状态。

      没有修改。

 M    该项目的属性已被修改。

 C    该项目的属性与从存储库收到的属性更新冲突。

SVN状态第三栏:L

仅在工作副本目录被锁定的情况下填充第三列(svn清理通常应足以将其清除)

      项目未锁定。

 L    项目已锁定。

SVN状态第四栏:+

仅当计划将其添加历史记录时,才会填充第四列。

      没有预定的提交历史记录。

 +    历史记录已提交。

SVN状态第五栏:S

仅当项目的工作副本相对于其父项切换时,才会填充第五列

      Item是其父目录的子级。

 S    项目已切换。

SVN状态第六栏:K,O,T,B

第六列填充有锁定信息。

      使用–show-updates时,文件未锁定。如果未使用–show-updates,则仅表示该文件未锁定在该工作副本中。

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

 O    文件被另一个用户或另一个工作副本锁定。仅在使用–show-updates时出现。

 T    文件已锁定在此工作副本中,但是该锁已被盗并且无效。该文件当前已锁定在存储库中。仅在使用–show-updates时显示。

 B    文件已被锁定在此工作副本中,但是该锁已被打破并且无效。文件不再锁定仅在使用–show-updates时出现。

SVN状态第七栏:*

过时的信息将出现在第七列中(仅当您通过–show-updates开关时)。这是刚接触SVN的人们希望命令执行的任务,而不是意识到它仅将文件的当前状态与上一次更新时从服务器获取的信息进行比较。

      工作副本中的项目是最新的。

 *    服务器上存在该项目的较新版本。



7

每当您无权访问文档(SVNBook)时,键入(Linux):

svn help status | grep \'\?\'
svn help status | grep \'\!\'
svn help status | grep \'\YOUR_SYMBOL_HERE\'

或在〜/ .bashrc文件中插入以下函数,如下所示:

svncode() {
  symbol=$1
  [ $symbol ] &&  svn help status | grep \'$(echo $symbol)\' || \
  echo "usage: svncode <symbol>"
}

在此处输入图片说明


1
IMO,不是“急着”,而是“当您无权访问文档时”(例如SVNBook)。
bahrep

@bahrep谢谢,这就是查看方法。根据建议进行了更正。
艾伦(Alan)
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.