【问题标题】:Mercurial How To Merge 2 Repositories that share a common ancestor but are not clones of the same repoMercurial How To Merge 2 个共享共同祖先但不是同一个 repo 克隆的存储库
【发布时间】:2010-03-14 16:42:41
【问题描述】:

我正在使用 hg-subversion,我有 2 个不同的 hg 存储库,一个来自我们的 svn 主干,一个来自主干的一个分支。我想以某种方式将它们联系起来。在历史的某个时刻,两个 Hg 存储库将是相同的,有什么方法可以加入它们吗?

换句话说,有没有办法从 Hg 中关联存储库?

我目前使用的技术是在他​​们共享的修订的工作副本之上导出第二个存储库,然后将该工作副本作为 Hg 中的一个分支提交,但这样我会丢失历史记录。

任何建议都会很棒

【问题讨论】:

标签: mercurial hgsubversion


【解决方案1】:

您可以尝试将两个 repos 导入到一个中,就好像它们不相关,然后合并它们。 (当你说他们有一个共同的祖先时,你的意思是这些祖先有相同的修订 ID?如果是这样,这很有可能会很好地工作。)

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

【讨论】:

  • 他们有一个共享的 SVN 修订 ID 是的,因为一个实际上是一个分支。
【解决方案2】:

您能否重新克隆 Subversion 存储库,将 Subversion 存储库的根作为参数而不是主干或其中一个分支?我曾经使用过hg clone svn+ssh://foo/bar/baz,其中svn+ssh://foo/bar/baz/trunk 是主干,svn+ssh://foo/bar/baz/branches/quux 是一个分支,最后我在 Mercurial 中有两个命名分支,“默认”分支代表 Subversion 主干,“quux”分支代表同名的 Subversion 分支。

如果您在现有的 hg 存储库中有传出变更集,您可能会遇到一些麻烦。如果只有几个传出变更集,则启用mq 扩展并将变更集转换为补丁可能会起作用。然后可以将这些补丁重新应用到新克隆(在适当的命名分支中)并最终推送到 Subversion。

【讨论】:

  • 感谢您的建议。我一定会试试的
猜你喜欢
  • 2014-11-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-16
  • 1970-01-01
  • 1970-01-01
  • 2016-03-24
  • 1970-01-01
相关资源
最近更新 更多