2010-08-02 96 views
40

Subversion的手動狀態«!»: '!'如何修復Subversion狀態

缺失項目(例如,您已移動或者 未使用svn將其刪除)。這 還表示目錄是 不完整(結帳或更新被中斷的 )。

但是像Subversion一樣經常發生,沒有跡象表明如何解決問題。

通常情況下,我會使用我信任的Fix_Subversion.command,但這次它是後備箱,它將需要永久。

那麼有沒有更快的選擇?

+1

您是否移動或刪除了有問題的項目? – 2010-08-02 16:19:57

+0

是的。見下文。 – Martin 2010-08-02 17:02:53

+0

@Martin:謝謝你的劇本,它拯救了我的一天! – Hraban 2012-04-30 12:41:24

回答

44
svn revert /path/to/file 
svn rm /path/to/file  # if you want to delete it from svn itself 

金規則是:一旦某事是SVN控制下,任何移動,刪除,重命名,應該使用svn命令(SVN MV,SVN RM等),不使用普通的文件系統來完成/文件級瀏覽器功能。

+0

是的,我沒有複製和重命名。但是在每個市長改變之後,所有的svn命令和svn都會提交。但事情仍然搞砸了。 – Martin 2010-08-02 16:59:25

+0

_something_做了,或者你的svn實現在本地或服務器上被破壞。 – Wrikken 2010-08-02 17:20:06

+0

我不知道Eclipse是否會搞砸了。我在命令行上做了大多數與Subversion相關的工作。除了使用Eclipse重新分解進行包和類重命名之外。當然Eclipse有所需的Subversion插件。 – Martin 2010-08-03 05:26:38

14

運行後會發生什麼:

svn cleanup . 
svn update 
svn status 
+0

,如果您擔心時間遞歸到其他目錄,請將'--depth = files'添加到更新 – Rup 2010-08-02 16:24:09

+0

結果如下: > svn cleanup。 > SVN更新 的svn:的 '!/ svnroot/UIQ3/SVN/VCC /默認的' 報告:無法讀取數據塊大小:截斷安全連接(https://uiq3.svn.sourceforge.net) 不看起來不錯。我想我必須咬緊牙關,重新創建整個工作樹... – Martin 2010-08-02 17:04:30

0

你究竟做什麼分支您收到此錯誤之前?

如果您遇到與SVN規則的問題,你可能做一些錯誤(例如,使用mv/rm而不是svn mv/svn rm的分支)。

+0

我複製了一個項目來創建一個新的類似項目。我用«svn copy»來做到這一點。然後我承諾完成這個新項目並開始進行更改。 – Martin 2010-08-02 17:00:52

+0

@Martin:所以*所有*你做的是:'svn copy',* make changes *,'svn commit'?如果是這樣,那麼這些變化是什麼?他們涉及移動,添加或刪除文件嗎? – Zaz 2010-08-02 18:14:10

+0

提交後,我開始了「真正的」工作。重新包裝軟件包等等。隨着下一次登機手續,麻煩開始了。首先需要更新(對於一個男人項目來說很陌生)。該更新失敗了,並從那裏開始走下坡路。 但這不是真正的問題。我習慣於從Subversion中哀悼,我只是問是否有快速修復。 我想我不會再檢查整個樹,複製我的變化並再次提交。 – Martin 2010-08-02 18:25:10

3

我試圖恢復&清理,但它沒有解決我的問題。我發現的解決方案有點苛刻,但工作:

  1. 將old_folder重命名爲new_folder。
  2. from the parent issue svn up old_folder
  3. 從new_folder [避免從new_folder處理.svn文件夾]複製文件。

我刪除了new_folder並以這種方式設法清理了old_folder。

+2

這正是'Fix_Subversion.command'的作用。但我正在尋求更快/更好的解決方案。 此外:它可能不適用於Subversion 1.7,因爲Subversion 1.7只有一個.svn文件夾供整個工作副本使用。 – Martin 2012-01-26 15:04:00

+1

這對我來說是1.6。我拿到 」!」編輯一個文件後(沒有檢查它),然後切換到一個分支 – 2013-11-06 17:50:54

0

如果您刪除了一個文件,並且它的標記爲!,那麼只需運行svn rm --force <filename>即可告訴SVN從存儲庫中刪除該文件。