2009-02-23 115 views
3

這裏有一個小SVN問題目錄:SVN:如何重新打造了創建但未提交尚未

創建本地目錄:

$ svn mkdir output 
A   output 

我不小心將其刪除:

rm -rf output 

現在,我該如何重新創建它?我嘗試這樣做:

$ svn mkdir output 
svn: 'output' is already under version control 

這:

$ svn revert output 
Reverted 'output' 

但它仍然不存在。

更新:人們認爲一個簡單的mkdir output應該已經足夠後刪除它。但在我的SVN版本中並非如此。它忽略了我也刪除了output/.svn目錄的事實。當然,只有mkdir output不會帶回那一個。所以,不知何故,SVN必須參與output目錄的重新創建。 (我使用SVN 1.4.6。)

回答

7

在SVN正式將其刪除:

$ svn rm --force output 
svn: 'output' does not exist 

然後重新創建它:

$ svn mkdir output 
A   output 

,上面從svn remove輸出是有點誤導。我認爲刪除失敗了,它不會改變任何東西。

這不是SVN最直觀的方法,但這種方式可行。

+0

的svn:「產出」不存在更是一個警告,我認爲,「SVN RM」確實刪除丟失的目錄。 從我看到的,--force參數在這裏不是必要的 – 2009-02-23 20:53:47

2

只要mkdir output應該已經足夠了。

+0

我認爲這是不對的 - 請參閱我的更新。 – Frank 2009-02-23 21:08:16

1

您也可以嘗試重新創建目錄,只需mkdir

svn mkdir創建目錄,並且也執行相當於svn add,但只需一步。

所以你有問題的原因是因爲「添加」完成。既然你沒有提交,恢復將什麼都不做,並且svn mkdir將不起作用,因爲Subversion已經列出了在下一次提交時添加的目錄(因爲你的rm在Subversion之外)。

1

需要了解的是SVN維護的目錄和本地文件系統維護的目錄之間的區別。

的四個命令,在原始帖子發出後,請執行下列操作

  1. 告訴SVN你希望一個名爲「輸出」目錄添加到SVN存儲庫 - 它通過添加信息的響應「變更表「
  2. 取出‘輸出’從本地文件系統 - SVN不知道這個正在發生的
  3. 告訴SVN你希望一個名爲目錄添加‘輸出’到SVN倉庫 - 它抱怨,因爲」你已經告訴我了!​​「
  4. 告訴SVN你已經改變了主意有關將「輸出」目錄 - 它要求,通過其「修改列表」

如果你只是簡單地發出刪除該信息...

mkdir output 

...作爲第三步,一切都會好起來的 - 使用文件系統刪除目錄,因此應該使用文件系統進行恢復。沒有理由讓SVN參與修復工作,正如您發現的那樣,嘗試這麼做只會讓事情混淆不清。

HTH

+0

等待,但.svn子目錄呢?在那種情況下,這將會失去。我刪除了由SVN創建的目錄,並在其中添加了一個沒有.svn的新目錄。我認爲這不會起作用。 – Frank 2009-02-23 16:08:57

相關問題