2012-01-12 28 views
1

我对我们正在使用的文件进行了小改动,并且要提交我的编辑。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) 

不应该“上次更改”我的变化,而不是一个由otherguy 18天以前?所以我把这个回购文件放在那里看看有什么是真实的。

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

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

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

+0

原来他人做了和我一样的改变,所以我的提交从未做出(或需要)。 – 2012-01-12 12:54:31

回答

2

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

红皮书说:

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

如果你的工作拷贝是过时的(或者你有本地修改) ,你希望看到一个文件的HEAD修订版本的工作拷贝, SVN猫-r HEAD文件名会自动获取的 HEAD版本的指定路径:

是你的本地pom.xm我实际上与从回购中获取的不同?

+0

我的工作副本绝对是最新的。当然,HEAD中已经存在的改变的可能性很小(由otherguy添加),所以在更新之后,我的改变将是多余的。那会给所描述的行为,不是吗? – 2012-01-12 12:10:13

+0

这将是一个逻辑上的解释。当然,我们必须通过svn status和svn cat的svn客户端源代码。东西告诉我我没有时间:-) – rene 2012-01-12 12:47:28

+0

原来是这样的! Otherguy在他上一次提交中改变了完全相同的东西,这使得我的完全多余,因此不需要提交。 – 2012-01-12 12:53:14

相关问题