失去了我們的 SVN 伺服器...下一步該怎麼辦?

失去了我們的 SVN 伺服器...下一步該怎麼辦?

所以...我們遺失了 SVN 儲存庫。不幸的是,我們也沒有可行的後援。

怎麼辦?只需從具有最新更新的人那裡執行“svn 導出”並重新開始?有什麼辦法可以恢復歷史記錄嗎?或將我們的本地結帳連接到新伺服器?

答案1

如果您擁有的只是結帳,那麼您將獲得代碼快照,但沒有歷史記錄。

您可以從中建立一個新的儲存庫。至於在設定後將現有的簽出連接到新的儲存庫,這可能比它的價值更麻煩。從最舊的簽出建立新的儲存庫,然後將較新的簽出的變更提交為更新會更容易。

至於恢復歷史記錄,我不知道如果在某個時間點沒有轉儲儲存庫(透過 svnadmin dump),這怎麼可能。即使是舊的轉儲也會為您提供從儲存庫的建立到轉儲的建立位置的所有歷史記錄。

也許有人在某個時候在你的倉庫上使用了 git-svn ?這可能保留了一些歷史記錄,但將其放回新的 Subversion 儲存庫中可能並不容易。

資料復原的成本很高,但如果您的儲存庫所在的儲存裝置沒有被物理破壞或破壞性覆蓋(並且不是 SSD),那麼它也可能是一種選擇。

答案2

如果您確實丟失了您的儲存庫,並且沒有備份,那麼是的 - 它消失了。沒有什麼魔法可以恢復真正丟失的資料。

因此,如果您有某人的工作副本,您可以建立新的儲存庫並將檔案新增至其中。你失去了所有歷史(顯然),但歷史已經失去了。

您可以將硬碟發送到恢復公司以嘗試恢復所有資料。一旦您擁有儲存庫(或至少是 db/revs 和 db/revprops 目錄),您就可以從中重新建立儲存庫(透過將它們複製到新儲存庫的目錄)。如果事實證明您沒有整個資料庫,那麼事情會有點棘手,但仍然可以恢復其餘資料 - 您可能必須將其全部發送到 collabnet 並從他們那裡獲得一些支援將損壞的資料檔案還原到新的工作儲存庫中。

現在,您從具有最新更新的人那裡說“svn導出”......這表明該人有一個您可以從中導出的備份副本。是這種情況嗎,還是您將其與工作副本混淆了?

答案3

正如馬克上面所說,如果您沒有儲存庫轉儲(來自伺服器),則無法建立歷史記錄。 SVN 簽出僅包含簽出位置的提示。對不起,你是SOL。我想這就是人們喜歡分散式原始碼控制的原因。在我們公司,我將其設定為每天兩次將 svn diff 發送到 amazon s3。

答案4

首先:沒有 SVN-Repo 的備份是一件痛苦的事,永遠不應該發生。但是,同樣的事情也發生在我身上。我開始再次逐一添加數千個文件,因為我不想簽入臨時文件或其他被動文件。

幾乎所有的歷史都失去了。但最後的簽入狀態沒有遺失!我設法獲得了最後的簽入狀態,因此新的存儲庫與舊的存儲庫類似,並且我還獲得了最後的差異!

這是我的食譜:

  1. 備份您的本地結帳
  2. 清理您的本地結帳請參閱:截圖 svn-cleanup_to_last_state
  3. 建立新的倉庫
  4. 將新的儲存庫簽出到新的空白資料夾中
  5. 將舊的清理副本複製到新資料夾中
  6. 簡單地添加所有文件
  7. 提交它
  8. 使用 1 中的備份覆蓋新的結帳資料夾。

現在您已經像以前一樣獲得了所有文件,以及最後一個差異,並且僅對文件進行了版本控制,就像以前一樣。

相關內容