SVN中的结果代码是什么意思?我需要一份简短的推荐信。


更多详细信息请参见SVNBook:“工作拷贝文件和目录的状态”。

常见状态:

U: Working file was updated G: Changes on the repo were automatically merged into the working copy M: Working copy is modified C: This file conflicts with the version in the repo ?: This file is not under version control !: This file is under version control but is missing or incomplete A: This file will be added to version control (after commit) A+: This file will be moved (after commit) D: This file will be deleted (after commit) S: This signifies that the file or directory has been switched from the path of the rest of the working copy (using svn switch) to a branch I: Ignored X: External definition ~: Type changed R: Item has been replaced in your working copy. This means the file was scheduled for deletion, and then a new file with the same name was scheduled for addition in its place. L : Item is locked E: Item existed, as it would have been created, by an svn update.


我通常通过gui(我的IDE或客户端)使用svn。因此,当我不得不求助于命令行时,我总是记不住代码。

我发现这个小抄很有帮助: 颠覆小抄


查看Subversion Book中的参考:“工作副本文件和目录的状态”

强烈推荐给任何使用SVN做任何事情的人。


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

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

文件名。1:文件更新 文件名。原因2:更新了文件中的一个或多个属性(如svn:keywords) 文件名。3:文件和属性都更新了


你总是可以通过运行:

svn status --help

我想说一些关于G的情况,

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

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

U =项目(U)提前到存储库版本

项的本地更改由存储库修改

C =项的本地更改(C)与存储库冲突

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

A =项目(A)添加到工作副本


还有一个“E”的状态

E =更新前文件已存在

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


当你无法访问文档(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>"
}


SVN状态列

$ svn status
L index.html

命令的输出被分成六列,但这并不明显,因为有时这些列是空的。也许像ls -l那样用破折号来表示空列会更有意义,而不是什么都不做。然后,例如,L index.html将看起来像——L——index.html,这使得我们所拥有的唯一信息是在第三列关于锁定的信息。不管怎样,一旦你知道了,它就变得更有意义了。

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

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

没有修改。

计划添加的项目。

D项目计划删除。

修改M Item。

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

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

X Item与外部定义相关。

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

吗?项不在版本控制之下。

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

~ Item被版本化为一种类型的对象(文件、目录、链接),但已被不同类型的对象所取代。

SVN状态第二列:M、C

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

没有修改。

修改“M属性”。

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

SVN状态第三列:L

只有当工作副本目录被锁定时才会填充第三列(svn清理通常足以清除它)

项目未锁定。

L物品被锁定。

SVN状态第四列:+

仅当项目计划使用-history添加时才填充第四列。

提交时没有安排历史记录。

+历史与提交计划。

SVN状态第五列:S

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

Item是其父目录的子目录。

S Item切换。

SVN状态第六列:K、O、T、B

第六列填充锁信息。

使用-show-updates命令时,文件不锁定。如果没有使用-show-updates,这仅仅意味着文件没有被锁定在这个工作副本中。

K文件被锁定在这个工作副本中。

文件被其他用户锁定或在另一个工作副本中。这只在使用-show-updates时出现。

T文件被锁在这个工作副本中,但是锁已经被盗并且无效。该文件当前锁定在存储库中。只有在使用- show-updates时才会出现

B文件被锁在这个工作副本中,但是锁已经被打破并且无效。只有在使用-show-updates时才会出现。

SVN状态第七列:*

过时的信息出现在第七列(仅当您传递-show-updates开关时)。这是初次接触SVN的人所期望的,而没有意识到它只是将文件的当前状态与上次更新时从服务器获取的信息进行比较。

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

*服务器上存在该物品的更新版本。