2010-07-08 67 views
7

SVN倉庫被安裝在服務器上,該服務器得到下來, 我有三個工作拷貝,他們都做了一些改變,而不是它們提交到基地 怎麼辦在這種情況下,請幫助我我失去了我的SVN倉庫

+0

得到一個新的服務器並重新設置svn服務器。 – RageZ 2010-07-08 08:19:28

+0

這是否意味着您已經丟失了存儲庫? – Groo 2010-07-08 08:21:16

+3

@格羅:我真的很希望他們做了備份庫。如果沒有,這對人生來說是一個很好的教訓;-) – Joey 2010-07-08 08:23:56

回答

9

這是否意味着您已經丟失了存儲庫?

在這種情況下(如果你沒有備份的話)我想以最簡單的做法是:

  1. 創建一個新的存儲庫的地方。
  2. 選擇您的一個工作副本(從最舊的副本開始,即具有較少更改的副本)。
  3. 將新存儲庫檢出到該機器上的空文件夾中。
  4. 出口你的工作拷貝(不復制)到您在步驟3中得到了空文件夾既然你可能將舊的工作副本後,刪除你,這將是明智的出口版本的文件,也(如果您使用的是Tortoise SVN,則在「導出」對話框的頂部會有一個複選框)。
  5. 提交您的更改。

重複步驟2.至5.所有工作副本,你有。在第5步中,您將需要手動合併。如果需要,請注意添加任何未版本控制的文件。

你將失去​​所有以前的修訂歷史記錄,但沒有工作的數據應該丟失這樣,只要你把所有的工作拷貝。

+0

如果您沒有將回購備份在某處,那麼這是一個不錯的乾淨修復程序。 – Steven 2010-07-09 12:13:14

3

使用svn diff > a.patch在每個工作副本中創建修補程序,然後將其應用於來自其他兩個工作副本的修補程序:patch -p0 < a.patch

下一次,使用一些DVCS,如Git或水銀:)東西

1

你有存儲庫的備份?如果是,請在某處加載svnadmin,然後將更改提交到此新位置。使用svn switch將您的工作副本指向新服務器。

如果否,那麼你已經失去了你的項目的歷史,並且沒有辦法找回它。

您所能做的只是在某處創建一個新的存儲庫,並將三個單獨的副本一個接一個地提交給它。您可能需要刪除工作副本中的所有.svn目錄才能執行此操作。

使用DVCSMercurialGit避免類似的情況(和其他許多問題)。

+2

我不認爲主張DVCS而不是備份策略是特別合理的建議。 – 2010-07-08 08:41:08