我们正在从 Subversion 迁移到 Mercurial。为了便于迁移,我们正在创建一个中间 Mercurial 存储库,它是我们的 Subversion 存储库的克隆。所有开发人员都将开始切换到 Mercurial 存储库,我们将定期将更改从中间 Mercurial 存储库推送到现有的 Subversion 存储库。一段时间后,我们将简单地废弃 Subversion 存储库,中间的 Mercurial 存储库将成为新的记录系统。
Dev 1 Local --+--> Mercurial --+--> Subversion
Dev 2 Local --+ +
Dev 3 Local --+ +
Dev 4 -------------------------+
我一直在对此进行测试,但是当我将更改从本地存储库推送到中间 Mercurial 存储库,然后再推送到我们的 Subversion 存储库时,我一直遇到问题。
替代文字 http://bmurphy.mediafly.com.s3.amazonaws.com/images/mercurial/01.png
在我的本地机器上,我有一个已提交并准备好推送到我们的中间 Mercurial 存储库的变更集。在这里你可以看到它是带有哈希 625 的修订 #2263...
替代文字 http://bmurphy.mediafly.com.s3.amazonaws.com/images/mercurial/02.png
我只将此变更集推送到远程存储库。
替代文字 http://bmurphy.mediafly.com.s3.amazonaws.com/images/mercurial/03.png
到目前为止,一切看起来都很好。变更集已被推送。
hg update
1 files updated, 0 files merged, 0 files removed, 0 files unresolved
我现在切换到远程存储库,并更新工作目录。
hg push
pushing to svn://...
searching for changes
[r3834] bmurphy: database namespace
pulled 1 revisions
saving bundle to /srv/hg/repository/.hg/strip-backup/62539f8df3b2-temp
adding branch
adding changesets
adding manifests
adding file changes
added 1 changesets with 1 changes to 1 files
rebase completed
接下来,我将更改推送到 Subversion,效果很好。此时,更改位于 Subversion 存储库中,我将注意力返回到本地客户端。
替代文字 http://bmurphy.mediafly.com.s3.amazonaws.com/images/mercurial/04.png
我将更改拉到本地计算机。嗯?我现在有两个变更集。我的原始变更集现在显示为本地分支。
替代文字 http://bmurphy.mediafly.com.s3.amazonaws.com/images/mercurial/05.png
另一个变更集有一个新的修订号 2264 和一个新的哈希 10c1...
替代文字 http://bmurphy.mediafly.com.s3.amazonaws.com/images/mercurial/06.png
无论如何,我将本地存储库更新为新版本。
替代文字 http://bmurphy.mediafly.com.s3.amazonaws.com/images/mercurial/07.png
我现在换了。
替代文字 http://bmurphy.mediafly.com.s3.amazonaws.com/images/mercurial/08.png
因此,我最后单击“确定并标记传出变更集”,如您所见,Mercurial 仍然希望推出我以前的变更集,即使它们已经被推送。
显然,我做错了什么。
我也无法合并这两个修订版。如果我在本地机器上合并这两个修订,我最终会得到一个“合并”提交。当我将该合并提交推送到中间 Mercurial 存储库时,我无法再将更改推送到我们的 Subversion 存储库。我最终遇到以下问题:
hg update
0 files updated, 0 files merged, 0 files removed, 0 files unresolved
hg push
pushing to svn://...
searching for changes
abort: Sorry, can't find svn parent of a merge revision.
我必须回滚合并才能恢复到工作状态。
我错过了什么?