2012-12-24 82 views
8

我想用reposurgeon將svn回購轉換爲git。使用reposurgeon將svn回購轉換爲git

這裏是我做過什麼(有有SVN名repo.map文件 - > git的名稱映射):

svnadmin dump /home/subversion > repo.svn 
reposurgeon "verbose 1" "repo.svn" "authors read" "write repo.fi" 

reposurgeon多個小時運行(大量的交換,因爲它是一個12GB轉儲文件),並且一切都很好。這裏是我得到的輸出:

reposurgeon: verbose 1 
    reposurgeon: from repo.svn...copynodes+filemaps+copysets+commits+branches+parents+root+branchlinks+svn-mergeinfo+tagifying+tagify-empty+polishing+canonicalizing+resets+debubbling+renumbering+14163 revisions (1/s)...(9810.18 sec) done. 
reposurgeon: r13: deleting parentless zero-op commit. 
. 
. 
. 
reposurgeon: r13726: deleting parentless zero-op commit. 
    2012-12-24T01:16:23Z * repo.svn 

在這一點上,reposurgeon只是坐。我不確定在哪裏尋找解決方案,因爲它從來沒有給我一個錯誤信息。任何建議是最受歡迎的。

+0

您應該嘗試詢問ESR掛起的地方,如IRC。這看起來像很多提交,他最近介紹了一些可能會讓你感興趣的性能優化。 – mikewaters

+0

@DanielJacobs:你有沒有嘗試過交互式地運行這項工作?我已經注意到在命令行上運行的東西和腳本之間的微妙差異。我也使用交互提示來開發我的電梯腳本。 – 0xC0000022L

回答

-1

我選擇使用git-svn來代替,如果您想考慮替代辦法。

3

如果你會考慮替代reposurgeon和git-svn,看看SubGit

$ subgit configure /home/subversion 
#edit /home/subversion/conf/subgit.conf to set 'core.authorsFile' option to path to "repo.map" file 
$ subgit install /home/subversion 
$ subgit uninstall --purge /home/subversion 

轉換的存儲庫將位於/home/subversion/.git目錄中。作爲獎勵,您將擁有所有svn:ignore和svn:eol-style屬性轉換爲其Git模擬。

通常SVN存儲庫比相應的轉儲文件更緊湊4倍,因此原始存儲庫的轉換速度可能比基於轉儲的轉換快。

6

它已成功導入存儲庫,但後來處理authors read命令,但未指定文件。此時它實際上正在等待文件出現在stdin上。使用authors read <author-map其中author-map是包含地圖的文件的名稱。

出於類似的原因,您還需要將寫入命令更改爲write >repo.fi

+0

如何獲得這樣的作者地圖? – rubo77

+0

author-map只是您創建的文本文件,其中包含類似於「ferd = Ferd J. Foonly <[email protected]> -0500」的行。 – db48x