2010-05-19 64 views
1

在修訂版1中存在一個文件夾。 在修訂版2中,該文件夾被意外刪除並且提交了更改。恢復TortoiseSVN中的文件夾或文件,同時保留所有歷史記錄

我們希望回滾使得文件夾存在,並保留它的歷史。

TortoiseSVN docs表示「如何」在標題爲「找回已刪除的文件或文件夾回來。」

引述:

找回已刪除的文件或如果您已刪除文件或文件夾,並已經提交該刪除操作到版本庫,那麼一個常規的TortoiseSVN夾回

- >還原不能再把它帶回來。但是文件或文件夾根本不會丟失。如果您知道修訂版本文件或文件夾被刪除(如果您不知道,請使用日誌對話框查找)打開版本庫瀏覽器並切換到該修訂版本。然後選擇您刪除的文件或文件夾,右鍵單擊並選擇[上下文菜單] - > [複製到...]作爲該複製操作的目標,選擇工作副本的路徑。

開關將文件複製到我的工作副本中,但是當我右鍵單擊此工作副本時,上下文菜單中沒有「複製到」選項。如果我打開repos瀏覽器,有一個複製到選項,但它似乎只需要該文件的副本。

我覺得解決的辦法是做一個分支/標籤,但如果我嘗試這從以前的版本相同的路徑在倉庫SVN拋出錯誤的路徑已經存在。

因此,如何恢復一個文件夾/文件在TortoiseSVN的同時還保留了所有的歷史。

的TortoiseSVN v1.6.8,建設19260 - 32位,顛覆1.6.11,

回答

6

做一個「反向合併」:

  1. 確保你的工作副本更新到HEAD,徹底清潔(不是絕對必要的,但總是一個好主意,試圖合併前)
  2. 右擊該文件夾並選擇TortoiseSVN>合併...
  3. 選擇「合併範圍的修改」,然後點擊「下一步」
  4. 從合併的URL回購路徑當前目錄(即包含已刪除文件的一個)
  5. 版本範圍合併是你刪除的文件(顯示日誌可以幫助這裏)
  6. 一定要選擇「反向合併」
  7. 命中「下一步」
  8. 所有默認的合併選項應該是足夠的修訂,所以打「合併」

該文件現在應添加和仍然保留其以往所有的歷史。

說明:包含

這種「回滾」修改刪除,但增加了合併信息到該目錄的屬性。 SVN可以通過這個元數據來跟蹤原始文件。在命令行中,你會做一個反向合併在其中刪除了它的改版:

svn merge -c -<revision-number> path/containing/file 

注意的轉數(即「負」修訂nunber)之前的連字符。

+0

謝謝,這個工作。我希望它可以像工作由khmarbaise提到CopyTo從幕後,但尚未證實的方法將保留歷史記錄。 – Topdown 2010-05-19 06:12:03

+0

如果我有時間來檢查出來以後,然後我會在這裏發佈結果。 – detly 2010-05-19 06:17:15

0

我想你可以使用「科/標籤...」在上下文菜單中選擇要做到這一點,只有指定特定版本作爲源和主幹作爲目的地。

AFAIK,這是svn copy命令行等效。

你也可以使用svn copy命令行以及...

+0

是的,我認爲這科/標籤的還,但它抱怨,因爲目標已經存在。必須是一些內部的TortoiseSVN檢查? 我會嘗試複製方法或向後合併建議由靈巧建議,如果沒有進一步的龜建議 – Topdown 2010-05-19 05:55:44

+0

目的地需要在回購,可能類似於'http:// someserver/svn/foo/trunk/MissingDir',寧可比工作副本。 – msandiford 2010-05-19 07:06:43

1

你描述一下「複製到」僅在回購瀏覽器是正確的。這正是您應該恢復文件的方式。另一方面,複製有什麼問題?

1

「複製到」,在版本庫瀏覽器是正確的。我想你錯過了這個事實,這是一個保留歷史信息的svn副本。正是你要求的。

相關問題