2013-09-22 273 views
1

當尋找SVN還原命令的解釋,我看到了如下的解釋:需要澄清SVN恢復

此子命令不需要網絡接入,並解決任何 衝突狀態。但是,它不會恢復已刪除的目錄。

我想知道,爲什麼它不需要網絡訪問,以及爲什麼它不能恢復已刪除的目錄。

+2

當你說「我看到下面的解釋」時,通常會提供一個鏈接來幫助他人閱讀你所指的內容,並確保它是一個值得信賴的來源,而且你沒有誤解任何東西。 – alroc

回答

1

svn revert不需要網絡訪問,因爲每個工作副本都存儲每個文件的「原始」副本,因爲它是在上次更新時從存儲庫下載的。因此revert將該文件複製到您的工作副本中。

至於刪除的目錄,這可能不再是真實的。在1.7之前的版本中,每個目錄可以被當作一個獨立的工作副本,因此它可能無法恢復那些沒有原始副本的目錄。

1

svn.svn文件夾中保存有關工作副本的信息,並使用它在工作副本上執行一些管理任務,而無需訪問資源庫即通過網絡。如果你瀏覽這些目錄,你會發現一個本地數據庫文件和一堆.svn-base文件的束縛子目錄。這些反映了您上次執行svn updatesvn checkout時工作副本的狀態。因此,如果您在工作副本中更改文件svn可以根據相應的本地保存的.svn-base文件來區分差異,從而可以恢復更改。

有關目錄結構的信息不會保存。如果要恢復目錄上的更改,最簡單的方法是從該目錄的父級執行 svn update - 顯然需要存儲庫並因此需要網絡連接。

看來你正在閱讀老版本的svn客戶端的幫助,發佈在this question的答案中。

隨着1.7版(至少,我不能確認哪個版本的正是這種變化是)及以上svn help revert狀態:

注:此子命令不需要網絡訪問,並且解決所有的衝突狀態

而且在我的本地拷貝的一個經過一些測試:

使用文件系統

Cmd-$> rd /Q /S <working copy> 

刪除或使用SVN命令

Cmd-$> svn remove <working copy> 
D   <working copy> 
D   <working copy>\<file1> 
D   <working copy>\<file2> 

刪除使用命令

Cmd-$> svn revert -R . 

我能夠在兩種情況下恢復。