有没有办法克隆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
这是正确的,还是有人知道更快的方法呢?
答案 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
和修订集来确定需要包含哪些其他修订。