SVN 中的结果代码是啥意思?
Posted
技术标签:
【中文标题】SVN 中的结果代码是啥意思?【英文标题】:What do the result codes in SVN mean?SVN 中的结果代码是什么意思? 【发布时间】:2010-09-05 08:19:41 【问题描述】:SVN 中的结果代码是什么意思?我需要一个快速参考。
【问题讨论】:
【参考方案1】:有关更多详细信息,请参阅 SVNBook:"Status of working copy files and directories"。
常见状态:
U:工作文件已更新
G:对 repo 的更改会自动合并到工作副本中
M:工作副本已修改
C:此文件与 repo 中的版本冲突
?:此文件不受版本控制
!:此文件受版本控制,但丢失或不完整
A:此文件将被添加到版本控制中(提交后)
A+:该文件将被移动(提交后)
D:此文件将被删除(提交后)
S:这表示文件或目录已从工作副本其余部分的路径(使用 svn 切换)切换到 分支
我:忽略
X:外部定义
~:类型已更改
R:您的工作副本中的项目已被替换。这意味着该文件被安排删除,然后一个同名的新文件被安排添加到它的位置。
L:项目被锁定
E:项目存在,因为它会被 svn 更新创建。
【讨论】:
"R": 这个文件被替换了E
怎么样?所有the documentation 都说“已存在”,这没什么用。
+1,但是“G:对 repo 的更改已自动合并到工作副本中”不在给定的源中(还有吗?)
UU(第二列 U 也是)表示文件已更新及其属性。在一些邮件列表(svn.haxx.se)中找到了。但后来我在 Matt Miller 的一些回答中也看到了 :)【参考方案2】:
另请注意,第二列中的结果代码是指文件的属性。例如:
U filename.1
U filename.2
UU filename.3
filename.1:文件已更新 filename.2:文件上的一个或多个属性(例如 svn:keywords)已更新 filename.3:文件及其属性均已更新
【讨论】:
【参考方案3】:你总是可以通过运行得到一个列表:
svn status --help
【讨论】:
【参考方案4】:我想说一下“G”状态,
G:对 repo 的更改自动合并到工作副本中
我觉得上面的定义不太清楚,可能会产生一点混乱,因为所有文件都会自动合并到工作副本中,正确的应该是:
U = 项目 (U) 已更新到存储库版本
G = 项目的本地更改与存储库合并(G)
C = 项目的本地更改 (C) 与存储库冲突
D = 从工作副本中删除的项目 (D)
A = 项目 (A) 添加到工作副本
【讨论】:
关于“G”状态。我在 2 个不同的签出目录中有 2 个更改副本。我从一个签出目录提交了更改,当我更新另一个签出目录时,它显示“G”状态,表明本地目录中的更改已与存储库合并。【参考方案5】:还有一个“E”状态
E = 文件在更新前存在
如果您手动创建了本应通过执行更新创建的文件夹,则可能会发生这种情况。
【讨论】:
【参考方案6】: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
仅当项目的工作副本相对于其父项切换时,才会填充第五列
项目是其父目录的子目录。
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】:我通常通过 gui 使用 svn,无论是我的 IDE 还是客户端。因此,当我不得不求助于命令行时,我永远记不起代码。
我发现这份备忘单很有帮助: Subversion Cheat Sheet
【讨论】:
没有列出G状态。【参考方案8】:查看 Subversion Book 参考:"Status of working copy files and directories"
强烈推荐给任何使用 SVN 做任何事情的人。
【讨论】:
【参考方案9】:如果您无权访问文档 (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>"
【讨论】:
IMO,不是“当你赶时间”而是“当你无权访问文档时”(例如 SVNBook)。 @bahrep 谢谢,这就是看待它的方式。按建议更正。以上是关于SVN 中的结果代码是啥意思?的主要内容,如果未能解决你的问题,请参考以下文章