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