2012-09-21 147 views
0

比方說,我有一個存儲庫中有一個分支,其中有如下幾個歷史變更集。是否可以將存儲庫中的分支從存儲庫移至另一個存儲庫?

== repository1 == 
(init)A -> B -> C -> D - E -> ... (default branch) 
        \ 
        \ -> C'1 -> C'2 -> C'3 -> .... (branch1) 


現在,我想移動(移植)BRANCH1到另一個獨立的存儲設備像下面。

== repository1 == 
(init)A -> B -> C -> D - E -> ... (default branch) 
        \ 
        \ -> C'1 -> C'2 -> C'3 -> .... (branch1) 

== repository2 == 
(init)C'1 -> C'2 -> C'3 -> ... (default branch) 

有沒有人知道該怎麼做?謝謝。



更新:
這似乎有點陌生,不包括其祖先轉移信息庫的一部分。我在一段時間開始開發一個大項目時遇到的情況以及爲項目付款的人希望能夠分別獨立地開發項目的某些組件。因爲他們認爲這些組件非常適合作爲獨立產品或小型開源項目,所以他們不希望任何不相關的歷史代碼留在存儲庫中。

回答

1

移植擴展(如上所述)可能是最好的,但你也應該看看convert extension。雖然它名義上用於從其他版本控制系統轉換爲mercurial,但它對於從一個Mercurial存儲庫到另一個Mercurial存儲庫的「轉換」也非常有用,並且對過濾和選擇提供了相當詳細的支持。

取決於你想要做什麼,'轉換'可能是也可能不是表達它的最直接的方式。

1

您已經使用過這個詞:您需要hg transplant

開始一個新的回購,然後做hg transplant -s <original_repo> -b branch1。認爲應該這樣做。

+0

謝謝你的回答。我不知道我是否以正確的方式做到了。在我嘗試運行你提到的命令後,我得到了一個如下的新庫: (init)A→B→C→D→E→C'1→C'2→C'3 - > ...(默認分支) 但我需要的是 (init)C'1 - > C'2 - > C'3 - > ...(默認分支) –

+0

我不確定你想要那麼 - 除非你有AB和C的歷史,你如何期待C'1有任何明智的內容? – Hbcdev

1

序列(init)C'1 -> C'2 -> C'3 -> ... (default branch)是沒有意義的。 C'1需要它的祖先!一個簡單的克隆應該抓住你想要的。

$ hg clone repository1 clonerepo -r C'3 

Clonerepo現在只包含(init)A -> B -> C -> C'1 -> C'2 -> C'3,這可能(也可能不會)是你想要的。

相關問題