2011-08-02 30 views
4

我有SVN倉庫一個硬盤驅動器和它「死」。在我設法恢復之前,我在另一個硬盤上創建了新的存儲庫,並將所有文件從版本1開始提交到新存儲庫,並丟失了所有歷史記錄。svnadmin的加載錯誤 - 文件已經exsits

現在我已經恢復了舊的SVN存儲庫,我試圖將我正在處理的新存儲庫加載到舊存儲庫中,因此基本上新存儲庫的修訂版本1必須成爲舊存儲庫的修訂版本2456 。

當我運行svnadmin load命令,我發現了以下錯誤:

<<< Started new transaction, based on original revision 1 
    * adding path : ---------------- ...svnadmin: File already exists: filesystem 'C:\ 
Repositories\repname\db', transaction '2788-25k', path '----------------' 

任何想法如何,我可以「合併」呢?如果它甚至有可能,當然...

回答

2

你必須有一個新的存儲庫重新開始,並首先從原來的庫加載的交易。

svnadmin dump recovered-repo > dumpfile 
svnadmin load new-repo < dumpfile 

然後從崩潰後當前存儲庫的末尾加載新事務。一定要指定您的修訂只採取新的東西。

svnadmin dump current-repo -r firstnewrev:lastnewref --incremental > newdumpfile 
svnadmin load new-repo < newdumpfile 

因爲我沒有任何儲存庫,我並沒有實際測試,所以要小心測驗,並沒有惹你沒有備份的東西。請參閱免費在線書籍以獲得更多幫助:​​

+2

你是指在最後一行,我認爲,不使用「svnadmin轉儲」 svnadmin的負載「。 – florisla

+0

你可以用'svnadmin dump repo1 | svnadmin加載repo2'來加速事情。 – bekce

1

我就遇到了這個問題,當我們不得不在使用cvs2svn遷移過去的CVS倉庫。這個過程非常成功,但我們錯過了最初從CVS開始的一些項目,並且在事實之後,團隊也對CVS進行了一些提交。所以我們的後續SVN轉儲過的組合: *新項目SVN沒有見過 *現有的項目已經遷移到SVN,但較新提交。

這是導致在負載衝突的第二部分。

因此而不是重新遷移整個CVS回購(這將採取幾個小時),我只依靠我們的老朋友過濾流去除爭食路徑。

  1. 篩選最新轉儲文件,以排除衝突(保留原單diump文件中。安迪,以及以後需要它)
  2. 運行導入(庫現在有最新的除了衝突的所有項目)
  3. 現在篩選的最新轉儲只包括衝突(以後使用)
  4. 運行現有的SVN倉庫的轉儲,排除矛盾的路徑
  5. 篩選最新轉儲文件只包括衝突
  6. 創建新的空庫
  7. 移動老回購到安全位置
  8. 導入這兩個過濾轉儲到新的倉庫

    [svnrepos]$ svndumpfilter exclude conflict-path < latestRepo.dump > repo_filtered_woConflicts.dump 
    [svnrepos]$ svnadmin load REPONAME < repo_filtered_woConflicts.dump 
    [svnrepos]$ svndumpfilter include conflict-path < latestRepo.dump > repo_filtered_ConflictsOnly.dump 
    [svnrepos]$ svnadmin dump REPONAME | svndumpfilter exclude conflict-path > repo_filtered_woConflicts.dump #overwrites previous filter 
    [svnrepos]$ mv REPONAME REPONAME_old 
    [svnrepos]$ svnadmin create REPONAME 
    [svnrepos]$ chmod -R g+rwx REPONAME # if shared by apache 
    [svnrepos]$ svnadmin load REPONAME < repo_filtered_woConflicts.dump 
    [svnrepos]$ svnadmin load REPONAME < repo_filtered_ConflictsOnly.dump