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)

有谁知道该怎么做?谢谢。



更新:
在不包括其祖先的情况下转移部分存储库似乎有点奇怪。我遇到的情况是,我们开始开发一个大项目有一段时间了,为项目付钱的人希望能够分别、单独和独立地开发项目的某些组件。因为他们认为组件非常适合作为独立产品或小型开源项目,因此他们不希望在存储库中留下任何不相关的历史代码。

4

3 回答 3

1

你自己用过这个词:你需要hg transplant.

开始一个新的回购,然后做hg transplant -s <original_repo> -b branch1. 认为应该这样做。

于 2012-09-21T08:33:00.123 回答
1

移植扩展(如前所述)可能是最好的,但您还应该查看转换扩展。虽然它名义上是用于从其他版本控制系统转换为 mercurial,但它对于从一个 Mercurial 存储库“转换”到另一个存储库也很有用,它对过滤和选择的支持非常精细。

根据您想要做什么,“转换”可能是也可能不是最直接的表达方式。

于 2012-09-21T09:57:51.763 回答
1

顺序(init)C'1 -> C'2 -> C'3 -> ... (default branch)没有意义。C'1需要它的祖先!一个简单的克隆应该抓住你想要的东西。

$ hg clone repository1 clonerepo -r C'3

Clonerepo现在包含 just (init)A -> B -> C -> C'1 -> C'2 -> C'3,它可能(也可能不是)是您想要的。

于 2012-09-21T11:17:43.813 回答