1

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

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

        -- 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

这是正确的,还是有人知道更快的方法来做到这一点?

4

2 回答 2

2

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

你想要,用简单的话“克隆所有默认为 5 FOO 分支 BAR 分支

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

于 2012-11-27T22:30:58.977 回答
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修订集来确定需要包括哪些其他修订。

于 2012-11-27T21:58:03.507 回答