使用Mercurial,如果有两个本地克隆,你可以从一个分支推送到另一个分支吗?

时间:2010-11-06 03:18:39

标签: mercurial

如果有两个分支,并且我一直在default分支上工作,我认为推送到另一个克隆的foo分支的一种方法是

cd ~/development/clone2
hg up default
hg pull ~/developmet/clone1
hg up foo
hg merge default

cd ~/development/clone1
hg up default
hg push ~/developmet/clone2
cd ~/development/clone2
hg up foo
hg merge default

这两种方法的工作原理完全一样吗? (一个是拉,一个是推)。

是否有更简单的方法可以将clone1的default分支直接推送到clone2的foo分支?感谢。

(我使用克隆1来查看我所做的所有更改(没有看到任何其他人的更改),并使用clone2合并并与其他团队成员集成)

2 个答案:

答案 0 :(得分:0)

您始终可以使用以下方式推送和提取单个修订版及其所有祖先:

hg push -r revision ~/development/clone1

hg pull -r revision ~/development/clone2

答案 1 :(得分:0)

没有办法“推送到另一个分支”,因为你总是必须手动合并两个不同的分支

您描述的两种方法完全相同,但建议使用第一种方法(始终在克隆中执行合并工作,而不是集成存储库或其他人的克隆)

可能是故意遗漏,但在两个示例中,您必须提交合并的结果,并且在第一个示例中,您必须将合并变更集推回到clone2

所以在〜/ development / clone1中执行:

hg up default
hg pull -u ~/development/clone2
hg up foo
hg merge default 
hg ci -m 'merged default into foo'
hg push ~/development/clone2

如果你这么做很多,可以考虑在〜/ development / clone1 / .hg / hgrc文件中添加这些行

[paths]
default = ~/development/clone2

这样,您可以在从集成存储库中提取和推送时省略存储库路径