2012-01-12 38 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

相關問題