svn提交失败,但repo中的旧版本随我的编辑而改变

时间:2012-01-12 10:57:38

标签: svn commit

我对我们正在使用的文件做了一些小改动,并准备提交我的编辑。

$ svn commit -m "comment"
Sending        pom.xml
svn: E160042: Commit failed (details follow):
svn: E160042: File or directory 'pom.xml' is out of date; try updating
svn: E160024: resource out of date; try updating

AFAIK,现在回购中没有任何变化,对吧? 显然有人做了改变,我忘了在编辑文件之前更新我的工作副本,我更新。

$ svn update
Updating '.':
U    another.unrelated.file
G    pom.xml
Updated to revision 11943.

正如预期的那样,我们的更改被合并(进入我的工作副本,对吗?),所以我检查状态。

$ svn status

没有变化?为什么?是否应将 pom.xml 的合并工作副本标记为已修改? 我运行svn info看看发生了什么。

$ svn info
Path: .
Working Copy Root Path: working/dir
URL: https://not.relevant
Repository Root: https://not.relevant
Repository UUID: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Revision: 11943
Node Kind: directory
Schedule: normal
Last Changed Author: otherguy
Last Changed Rev: 11856
Last Changed Date: 2012-01-04 16:12:42 +0100 (Wed, 04 Jan 2012)

不应该“最后更改”是我的更改,而不是8天前 otherguy 的更改?所以我抓住了repo文件,看看那里有什么实际的。

svn cat https://company.com/repo/path/to/pom.xml | less

它显示了该文件的合并版本! (随着我和其他人的变化)。

这里发生了什么? svn是否在不更新任何元数据的情况下使用我的更改更改了文件的现有修订版?这甚至可能吗?

1 个答案:

答案 0 :(得分:2)

我认为您的工作副本仍然过时。

红皮书说:

http://svnbook.red-bean.com/en/1.5/svn.ref.svn.c.cat.html

  

如果您的工作副本已过期(或您有本地修改)   并且您希望在工作副本中看到文件的HEAD修订版,   svn cat -r HEAD FILENAME将自动获取HEAD修订版   指定的路径:

您的本地pom.xml实际上与从repo中提取的pom.xml有什么不同吗?