合并变更集之前的mercurial clone分支

时间:2012-11-27 19:02:45

标签: mercurial

有没有办法克隆mercurial repo的一部分(即clone -r xxx),但是在指定的版本之前保留所有的变更集,即不仅仅是祖先?

例如,给定一个如下所示的回购:

        -- 2 (branch default) -- 5 --  8 (merge) -- 9 (merge) -- 
      /                               /            /
0 -- 1  -- 3 (branch foo) ------ 6 --             /
      \                                          /
       -- 4 (branch bar) ------ 7 -------------

我想在合并之前只克隆提交,即生成的repo看起来像这样:

        -- 2 (branch default) -- 5
      /
0 -- 1  -- 3 (branch foo) ------ 6
      \
       -- 4 (branch bar) ------ 7

但正在运行

hg clone -r 7 repo repo2

只会给我提交1,4和7(分支栏)。看来,获得我所追求的东西的唯一方法就是这样:

hg clone -r 5 repo repo2
cd repo2
hg pull -r 6
hg pull -r 7

这是正确的,还是有人知道更快的方法呢?

2 个答案:

答案 0 :(得分:2)

必须阅读 hg help clone并记住选项,这些选项可以在一个克隆中多次使用(-r和-b即)。

您希望,简单地说“将所有默认克隆到<5> FOO分支 < em> BAR分支“

将其翻译成克隆 hg clone -r 5 -b foo -b bar <SRC REPO> <DST-REPO>

答案 1 :(得分:1)

hg help clone

-r --rev REV [+]       include the specified changeset

这与hg help log不同,例如,

-r --rev REV [+]         show the specified revision or range

您可以做的最好的事情是多次使用-r

hg clone -r 5 -r 6 -r 7 repo repo2

您可以使用log和修订集来确定需要包含哪些其他修订。