SVN 中的结果代码是什么意思?我需要一个快速参考。
9 回答
有关其他详细信息,请参阅 SVNBook:“工作副本文件和目录的状态”。
常见状态:
U : 工作文件已更新
G : 对 repo 的更改自动合并到工作副本中
M : 工作副本被修改
C : 此文件与 repo 中的版本冲突
? : 此文件不受版本控制
!:此文件受版本控制,但丢失或不完整
A : 此文件将被添加到版本控制中(提交后)
A+:此文件将被移动(提交后)
D:这个文件将被删除(提交后)
S:这表示文件或目录已从工作副本的其余部分(使用 svn 切换)的路径切换到分支
我:忽略
X:外部定义
~ : 类型改变
R:您的工作副本中的项目已被替换。这意味着该文件被安排删除,然后一个同名的新文件被安排添加到它的位置。
L : 项目被锁定
E:项目存在,因为它本来是由 svn 更新创建的。
另请注意,第二列中的结果代码是指文件的属性。例如:
U filename.1
U filename.2
UU filename.3
filename.1:文件已更新
filename.2:文件的一个或多个属性(例如 svn:keywords)已更新
filename.3:文件及其属性均已更新
你总是可以通过运行得到一个列表:
svn status --help
我想说一些关于“G”状态的事情,
G:对 repo 的更改自动合并到工作副本中
我觉得上面的定义不太清楚,可能会产生一点混乱,因为所有文件都会自动合并到工作副本中,正确的应该是:
U = 项目 (U) 已更新到存储库版本
G = 项目的本地更改与存储库合并(G)
C = 项目的本地更改 (C) 与存储库冲突
D = 从工作副本中删除的项目 (D)
A = 项目 (A) 添加到工作副本
还有一个“E”状态
E = 文件在更新前存在
如果您手动创建了通过执行更新创建的文件夹,则可能会发生这种情况。
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 cleanup 通常应该足以清除它)
项目未锁定。
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 新手期望该命令执行的操作,但没有意识到它仅将文件的当前状态与上次更新时从服务器获取的信息进行比较。
您的工作副本中的项目是最新的。
*
服务器上存在该项目的较新版本。
我通常通过 gui 使用 svn,无论是我的 IDE 还是客户端。因此,当我不得不求助于命令行时,我永远记不起这些代码。
我发现这个备忘单很有帮助: Subversion Cheat Sheet
查看 Subversion Book 参考:“工作副本文件和目录的状态”
强烈推荐给任何使用 SVN 做任何事情的人。
每当您无权访问文档 ( 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>"
}