2008-09-17 14 views
310

我一直在嘗試在Subversion中將目錄結構從一個位置移動到另一個位置,但我得到一個Item '*' is out of date提交錯誤。你如何克服svn'過時'的錯誤?

我已檢出最新版本(據我所知)。除了mv命令之外,svn st -u沒有任何區別。

+9

你試過svn了嗎? – Sklivvz 2008-09-17 21:41:02

+2

一個微不足道的問題是:如果刪除一個文件夾和內容,首先刪除內容,然後刪除該文件夾,然後再刪除該文件。 – Fattie 2014-11-21 13:36:06

+0

相關注意事項:http://subversion.apache.org/docs/release-notes/1.9.html#httpv1-commit-race – bahrep 2016-01-18 16:58:08

回答

571

我有時會在Windows上使用TortoiseSVN。我的解決方案是svn update該目錄,即使沒有修改下載或更新。它對元數據做了一些修改,從而可以修復它。

+3

我改變了文件夾的svn:ignore屬性,並開始得到過時的錯誤。但正如你所說,只是更新它的工作。 – Sushant 2009-10-21 06:49:24

+4

當我嘗試更新該目錄時,我得到「svn:兩個沒有目標的頂級報告」 另一個令人討厭SVN的原因。使用git,我從來沒有像移動目錄這樣的基本操作出現這種類型的愚蠢問題。 – 2010-06-05 00:21:59

+0

我使用Versions GUI在我的父文件夾中發生了'過期'錯誤。我更新了父文件夾,然後提交沒有錯誤。 – milesmeow 2010-12-15 20:18:37

2

你確定你已經檢出了頭部而不是較低的版本嗎?此外,你有沒有做過更新,以確保你有最新版本?

有關於此的討論http://svn.haxx.se/users/archive-2007-01/0170.shtml

+0

比方說,你要籤一箇舊版本嗎?那麼,什麼是最簡單的辦法使檢入工作? – OJW 2011-06-30 10:00:50

+0

如果您正在討論恢復到舊版本,請照常檢查。它會得到一個新的修訂版本號。 – jgreep 2011-07-14 18:15:55

2

直接在存儲庫中執行移動操作。

39

我相信這個問題來自.svn文件。這在舊的父母,新的父母或舊的父母中是不正確的。我會嘗試恢復到你的出發點。使用導出來獲取文件夾的乾淨副本。將乾淨的副本移動到新的位置,並使用添加和刪除來完成移動。這是手動完成SVN的工作,但它可能工作。

+4

Subversion實際上是複製然後刪除,這與在那裏刪除並添加在這裏相當不同。 – SnakE 2011-08-18 18:37:41

4

就像@ Alexander-Klyubin建議的那樣,在存儲庫中進行移動。這也會更快,特別是如果您有大量數據要移動,因爲您不必再​​通過網絡傳輸所有數據。

svn mv https://[email protected]/svn/old/ https://[email protected]/svn/new/ 

應該只是罰款

1

您是否使用svn mv,或者只是mv移動呢?我認爲只使用mv可能會導致此問題。

12

試圖更新本地副本,並恢復有問題的項目,仍然得到'過時'錯誤。這工作出於某種原因:

svn update --force /path/to/dir/or/file 
0

發生這種情況時,我更新了早期版本與樹幹文件的分支。我使用Windows資源管理器從我的trunk結帳文件夾中複製文件夾,並將它們粘貼到發佈分支簽出文件夾的Eclipse視圖中。現在Windows資源管理器被配置爲不顯示以「。」開頭的「隱藏」文件,因此我忘記了所有不正確的.svn文件被粘貼到我的發佈分支結帳文件夾中。衛生署!

我的解決方案是吹走損壞的Eclipse項目,再次檢查出來,然後更仔細地複製新文件。我也改變了Windows顯示「隱藏」的文件。

1

我把目錄轉移到我的本地機器進行安全保存,然後svn刪除了這個愚蠢的目錄,然後提交。當我試圖從我的本地機器添加文件夾時,仍然拋出錯誤(當我嘗試重命名文件夾時,SVN移動做了同樣的事情)。所以我回復了,然後我做了一個mkdir DIRNAME,添加並提交了。然後我添加了內容並提交,並且工作。

40

嘗試所有明顯的事情後,和這裏的一些其他建議,沒有運氣任何,谷歌搜索導致這個鏈接(鏈接不再工作) - Subversion says: Your file or directory is probably out-of-date

概括地說,訣竅是轉到.svn目錄(位於包含違規文件的目錄中),並且刪除「all-wcprops」文件

當沒有別的事情的時候爲我工作。

5

謝謝。這只是爲我解決了它。 svn update --force /路徑到文件名/

如果您最近在本地目錄中的文件是相同的,則沒有任何提示。如果文件不同,它會提示輸入tf,mf等等...選擇mf(我的全部)確保沒有任何內容被覆蓋,並且我可以在完成時提交。

周杰倫 CompuMatter

0

試圖去提交一些文件時,我得到這個錯誤,只有它是一個文件/文件夾並沒有在我的工作拷貝存在。我真的不想經歷移動文件和重新檢查的麻煩,最後,我最終編輯了.svn/entries文件並刪除了違規的目錄引用。

1

我刪除了幾個目錄,每個目錄都包含一些文件後,我隨機收到了這個錯誤。我通過Netbeans刪除了這些目錄,並意識到它並未實際刪除它們。它似乎只是刪除目錄中的所有內容,並刪除了Netbeans中對該目錄的引用。儘管如此,它們仍然存在於文件系統中。確保它們已從文件系統中刪除並再次嘗試提交。

5

我管理通過敲擊更新按鈕

3

刪除你的文件或使用 之前執行命令的路徑來解決它做的更改

sudo rm -r /path/to/dir/ 

後BK:

svn up and commit or delete 
1

如果通過簡單地檢出一個新的工作副本並替換.svn目錄來解決類似的問題,則將新提交的錯誤拋出提交錯誤之一。我的理由是,在存儲庫損壞並從備份還原後,工作副本指向已恢復的存儲庫中不存在的修訂。還得到「項目過時」的錯誤。在提交之前更新工作副本並沒有解決這個問題,但是如上所述替換了.svn。

24

我發現,這個工作對我來說:

svn update 
svn resolved <dir> 
svn commit 
2

有消息「過時」的錯誤的至少一個其他的原因。在我的情況下,問題是通過運行「svn propset svn:ignore -F .gitignore」創建的.svn/dir-props。首次。刪除.svn/dir-props似乎是個不錯的主意,可能會導致其他錯誤,所以最好使用「svn propdel」來清理錯誤的「svn propset」。

# Normal state, works fine. 
> svn commit -m"bump" 
Sending  eac_cpf.xsl 
Transmitting file data . 
Committed revision 509. 

# Set a property, but forget to commit. 
> svn propset svn:ignore -F .gitignore . 
property 'svn:ignore' set on '.' 

# Edit a file. Should have committed before the edit. 
> svn commit -m"bump"     
Sending  . 
svn: Commit failed (details follow): 
svn: File or directory '.' is out of date; try updating 
svn: resource out of date; try updating 

# Delete the property. 
> svn propdel svn:ignore .    
property 'svn:ignore' deleted from '.'. 

# Now the commit works fine. 
> svn commit -m"bump"  
Sending  eac_cpf.xsl 
Transmitting file data . 
Committed revision 510. 
10

我有同樣的問題在多個文件夾,這就是我所做的承諾:

1)在「團隊同步」透視圖,右鍵單擊文件夾>覆蓋和更新
2)再次刪除文件夾
3)提交併開心

0

在我的情況下,只刪除本地版本和重新簽出新副本是一個解決方案。

0

我剛剛得到這個錯誤。我建議你首先檢查你的服務器,如果原始文件在那裏。有時更改不會在您的本地文件夾中進行。 如果這是您的情況,請刪除您的文件夾並重新結帳。

0

爲了解決這個問題,我需要恢復帶有問題的文件,並更新我的工作副本,之後我再次修改了文件,在這些步驟之後錯誤再也沒有發生。

-1

更isyly使這個:

1)複製我修改的代碼在一個記事本。 2)接下來,更新文件。 3)在更新的文件中複製記事本的代碼。 4)在svn中提交。

0

只要執行svn進入命令行或者如果你在windows中選擇svn update選項。

  • 一旦這樣做,這可以讓你做出進一步的行動,如提交和其他。
1

我做到了這一點,它爲我工作:
1.備份您的文件。您可以簡單地將您的代碼複製到文本文件。
2.右鍵單擊要提交的文件>> Team >> Show History。 3.在「顯示歷史記錄」面板中,您將看到該文件的所有修訂。右鍵單擊文件的最新版本>>獲取版本:它將覆蓋您的本地更改。
4.現在,將您的代碼與備份文件(步驟#1)中的最新文件合併。
5.同步並提交新合併的文件。

2

如果您使用的是github svn bridge,那很可能是因爲github的一些事情發生了變化。該解決方案很簡單,你只需運行svn switch,它可以正確地找到自己,然後更新,一切都將工作。只要運行從你結賬的根

svn info | grep Relative 
svn switch path_from_previous_command 
svn update 

svn switch `svn info | grep Relative | sed 's_.*: __'` 
svn update 

該解決方案的基礎來自Lee Preimesberger's blog

0

我剛剛從trunk得到這個當我試圖commit以下目錄。 trunk目錄中的svn update沒有解決錯誤;但是,從父目錄(其中.svn目錄所屬的位置)執行svn update確實解決了該錯誤。

我對發生了什麼事情(其中一個用例可能有多個原因,這個「svn:E160024:資源過期;嘗試更新」)的猜測:沿着trunk,有一個branches目錄。我從GitHub中將branches/branch-1轉換爲master。從父目錄做svn update(也就是我的工作拷貝的根),而不是trunk似乎已經做在branches除了東西trunk。當我再次嘗試commit時,沒有錯誤。

然而,正如我上面所說的,這是其中可能還有很多其他一例。

邊注:不像什麼有人建議,我不相信這是在.svn目錄手動播放一個好主意。

1

將您的服務器和客戶端升級到Subversion 1.9。

如果隨機發生的out of date錯誤時,它通常不應該,當您運行提交,則可能表明您使用的是過時的和不支持的Subversion 1.7或以上的客戶端或服務器。

您應該升級服務器和客戶端以解決問題。請參閱相關的Subversion 1.9發行說明條目:"Out of date" errors when committing over HTTPv1

1

錯誤是因爲您沒有更新該特定文件,先進行更新,然後只有您可以提交該文件。

1

嘗試直接在.svn中進行更改。沒有什麼幫助,所以我的解決方案。

在Eclipse>窗口>顯示視圖>歷史我見過該文件是不是最新的版本,但我做了多個SVN「覆蓋&更新」 /「恢復」 /刪除文件和檢驗。

所以我去了Package Explorer>右鍵點擊文件>用替換爲> Latest from Repository

再來看看查看歷史記錄顯示該文件是現在最新的版本。

1

「清理」它會讓你走上正軌。

右鍵單擊SVN文件夾,單擊「清理」,這樣做,如果你得到這個錯誤。

相關問題