2017-09-06 71 views
0

我有兩個Mercurial存儲庫。兩個回購都有自己無關的歷史。讓我們稱他們爲:在Mercurial中導入不相關的回購協議到另一個回購

  • 「主」(包括項目本身)

我現在想「進口」的Lab回購到

  • 「實驗室」(包含一些相關內容) Main具有以下限制的回購:

    • 兩個回購都應保留其歷史。
    • Lab應作爲子文件夾存儲在Main中。
    • Lab的更改應位於合併到Main的分支中。

    以下https://www.mercurial-scm.org/wiki/MergingUnrelatedRepositories基本上可以工作,但不會創建分支。

  • +0

    *不創建分支*取決於您所指的「分支」。如果您希望傳入存儲庫中名爲'default'的分支將* renamed *重命名爲某個其他名稱(以便導入的提交不共享分支名稱),則可以使用Convert擴展。請參閱https://stackoverflow.com/questions/7567636/using-the-hg-convert-extension-branchmap-option – torek

    +1

    相關:https://pt.stackoverflow.com/a/101243/64(葡萄牙語,但是圖片可以幫助) –

    回答

    1

    給定資料庫MainLab,可以合併Lab庫到主存儲庫,並通過做其默認分支重命名爲其他名稱與convert擴展以下幾點:

    1. 創建一個文件「branchmap .txt「包含default Lab。使用此分支圖,「默認」分支中的Lab更改集將命名爲「Lab」。如果您的實驗室存儲庫中有其他分支機構,則可能需要額外的條目。
    2. 運行hg convert Lab Main --branchmap branchmap.txt。這假定實驗室和主存儲庫目錄以及branchmap.txt文件位於當前目錄中。相應地調整路徑。實驗室變更集將被添加到主存儲庫。
    3. 在主存儲庫中,以下命令將Lab文件移動到Lab子目錄中,然後將Lab分支與默認文件合併。
      a。 b。 mkdir Lab
      c。 d。 e。hg ci -m "Moved Lab files to Lab subdirectory"
      e。 f。hg update default
      f。 g。hg merge Lab
      g。 hg ci -m Merge

    現在您可以在將來繼續修改Lab分支並根據需要合併爲默認值。

    +0

    你也可以用「hg pull --force」來拉動無關的回購,然後合併你最終結合在一起的兩個頭。在這種情況下,您最終會得到一個包含兩個根變更集的回購協議,這可能會讓您感到困惑,但這樣您可以爲其中一個回購站保留變更集哈希值。 – ngoldbaum

    +0

    @ngoldbaum是的,但不會將傳入的repo重命名爲新的分支,對於合併,將文件重命名爲子目錄仍然需要完成。您也可以使用此方法獲得兩個根變更集,但'hg convert'也會將傳入的默認分支重命名爲另一個名稱。 –