2010-01-08 89 views
3

我沒有在SVN工作拷貝,我有以下幾點:SVN:忘記刪除的文件

[email protected]# gvim Dual_On_Off_Model.h 
[email protected]# gvim Dual_On_Off_Model.cpp 
(... made the files, saved them ...) 
[email protected]# svn add Dual_On_Off_Model.* 
[email protected]# svn st 
M Multiple_On_Off_Model.h 
A Dual_On_Off_Model.h 
A Dual_On_Off_Model.cpp 
[email protected]# rm Dual_On_Off_Model.* <- Stupid on my part, but discovered 
              <- I didn't need the class 

所以後來:

[email protected]# svn st 
M Multiple_On_Off_Model.h 
! Dual_On_Off_Model.h 
! Dual_On_Off_Model.cpp 
[email protected]# svn commit 
svn: Commit failed (details follow): 
svn: '/home/sheep/src/secret_project_x/trunk/superduperd/Dual_On_Off_Model.h' is 
scheduled for addition, but is missing 

基本上,我刪除了我的工作拷貝文件,而無需使用svn rm,現在svn很生氣,因爲它找不到這些文件。

由於我不需要Dual_On_Off_Model。*,現在他們已經到了天空中的大硬盤,有沒有辦法在工作副本上使用Jedi mind trick讓它停止對我大吼?

+0

@Manuel Aldana - 試過你的修改答案,肯定有效。再次發佈,你會被選爲最佳答案,因爲它不需要bash-fu或創建文件。 – 2010-01-08 01:17:10

回答

5

EDITED BETWEEN:

使用:

svn revert -R .

它會恢復到你的本地副本的SVN版本。

+0

試過這個。它不適用於我上面的場景。 – 2010-01-08 00:55:29

+0

對不起,忘記了:嘗試使用-R選項(我也更正了答案文本) – 2010-01-08 01:11:53

+0

這適用於我的方案,但對於刪除了它的目錄並未恢復.svn子目錄(儘管它確實還原了實際文件,很奇怪)。這意味着當我運行svn狀態時,它給了'?'在這些目錄旁邊。我刪除了有問題的目錄(使用rm -rf)並運行svn,一切恢復正常。 – Jeff 2012-05-09 20:05:37

6

只需重新添加文件(或使用這些名稱的空文件),然後使用svn rm刪除它們。

2

svn revert *失敗,因爲*擴展到目錄中的每個文件,並且您需要恢復不在目錄中的文件。改爲嘗試svn revert Dual_On_Off_Model.h Dual_On_Off_Model.cpp

要恢復絕對一切,你可以使用bash的一點福:

svn status | awk '{print $2}' | xargs svn revert 

抓住第二個字了svn status的輸出的每一行(假設你有你的文件名沒有空格.. ),然後將這些作爲參數傳遞給svn revert

0

我的靈感來自於喬許·凱利的回答是:

svn st | awk '$1 == "!" {print $2}' | xargs svn revert 

應該修復有這個問題的整個樹。