2010-03-14 68 views
1

我正在使用hg-subversion,并且我有两个不同的hg仓库,一个来自我们的svn干线,一个来自干线分支。我想以某种方式将它们链接起来。在历史上的某个时刻,两个汞储存库将是相同的,有什么方法可以加入它们?Mercurial如何合并2共享共同祖先但不是相同回购克隆的仓库

换句话说,是否有一种方法可以从Hg内部关联储存库?

我目前使用的技术只是将第二个存储库导出到他们共享的修订版的工作副本的顶部,然后将该工作副本作为Hg中的一个分支提交,但我以这种方式丢失了历史记录。

任何意见将是巨大的

+0

这是一个重复的:http://stackoverflow.com/questions/12843/how-to-combine-two-projects-in-mercurial – 2010-06-03 18:27:19

回答

1

你可以尝试导入两个回购成一个仿佛无关,然后将它们合并。 (当你说他们都有一个共同的祖先,你的意思是那些祖先有相同的版本ID?如果是的话有一个很好的机会,这将很好地工作。)

hg clone repoA 
hg pull -f repoB # may not need -f 
hg merge 
+0

他们有一个共享的SVN修订ID是的,因为一个实际上是一个分支。 – sylvanaar 2010-03-15 10:30:48

1

你能重新克隆的颠覆存储库,给Subversion版本库的根作为参数而不是树干或其中一个分支?我使用了hg clone svn+ssh://foo/bar/baz一次,其中svn+ssh://foo/bar/baz/trunk是主干,svn+ssh://foo/bar/baz/branches/quux是一个分支,最后我在Mercurial中有两个命名分支,代表Subversion主干的“默认”分支和代表类似Subversion分支的“quux”分支。

如果您在现有的hg仓库中有外出的变更集,那么您可能会遇到一些问题。如果只有几个传出更改集,则可能会启用mq扩展并将变更集转换为补丁。然后可以将这些修补程序重新应用于新克隆(在适当的命名分支中),并最终推送到Subversion。

+0

感谢您的建议。我肯定会尝试一下 – sylvanaar 2010-04-29 12:46:00