2009-06-05 82 views
6

我們的團隊一直在使用SVN來管理體面大小的應用程序,並且隨着時間的推移,建立了一個相當複雜的分支和標籤層次結構,它遵循SVN存儲庫的基本標準佈局,但是多個嵌套:將複雜的SVN分支層次結構遷移到Mercurial

 
    |-trunk 
    |-branches 
    | |-releases 
    | | |-releaseA 
    | | `-releaseB 
    | `-features 
    |  |-featureX 
    |  `-featureY 
    |-tags 
    |-releaseA 
    | |-beta 
    | `-RTP 
    `-releaseB 
     |-beta 
     `-RTP  

(該功能分支顯然是臨時的分支,但我們必須予以考慮,因爲這將是不可行的在不久的將來在一次關閉所有的)

出於多種原因,主要是因爲合併已成爲越來越多的痛苦,我們認真考慮切換到Mercurial。

我們目前面臨的主要問題是遷移現有的代碼庫而不會丟失我們的歷史記錄。我嘗試了幾種遷移工具(例如,yasvn2hg,hg convertsvn2hg),yasvn2hg是最有前途的,但他們都沒有能夠處理嵌套層次結構,但他們都假設分支和標籤被組織在一個平面目錄中分別。

命名分支之間的選擇克隆作爲舊SVN分支轉換目標不是在這種情況下的限制因素,因爲任一溶液,將不勝感激。我們目前正在試驗這兩種選擇,以及它們將如何適合我們當前的流程,但尚未決定。我明顯對這個問題的建議或類似設置的體驗感興趣。

那麼,什麼是這樣一個嵌套的SVN分支層次轉換爲Mercurial的最佳方式是什麼?

將一個分支一次轉換爲一個單獨的存儲庫會很煩人,我不確定這是否是正確的方法,這取決於這些工具如何處理歷史合併並需要注意所有其他分支?

+0

嘿我差不多發佈了同樣的問題。自問這個問題以來,如果你決定採用一種解決方案,會很樂意聽到。正如下面在評論中提到的,在我的情況下,每個嵌套分支有一個「克隆」實際上不是一個解決方案,我當然希望找到一種方法能夠將分支導入HG,而無需重複分割數據很多回購。 – 2010-04-01 18:20:30

回答

2

我讀過的優秀文章是。 http://ww2.samhart.com/node/50

+0

此鏈接提到我的理由將svn回購拆分爲多個hg回購 – 2009-06-11 22:26:34

2

你真的應該問這樣的問題在mercurial mailing list。這就是Mercurial開發者閒逛的地方,隨着時間的推移,出現了許多Subversion遷移問題。

話雖這麼說,一個recent change可以幫助你 - 它聲稱讓你

[...]修復,即使是最嚴重的管理不善庫,使他們成爲很好的結構化的Mercurial庫。

我還沒有嘗試過自己,所以我不能評論它將如何有效爲您的確切情況。

+0

謝謝,我會看看我是否可以找到您提到的修復並嘗試一下。關於郵件列表,我肯定會探討這個選項。我發現有關Mercurial遷移的大多數Google命中或者指向博客條目或SO,因此它似乎是詢問 – 2009-06-09 00:19:12