我们正在从Subversion迁移到Mercurial.为了促进迁移,我们正在创建一个中间Mercurial存储库,它是我们的Subversion存储库的一个副本.所有开发人员将开始切换到Mercurial存储库,我们将定期将更改从中间Mercurial存储库推送到现有的Subversion存储库.经过一段时间后,我们将简单地废弃Subversion存储库,中间的Mercurial存储库将成为新的记录系统.
Dev 1 Local --+--> Mercurial --+--> Subversion
Dev 2 Local --+ +
Dev 3 Local --+ +
Dev 4 -------------------------+
Run Code Online (Sandbox Code Playgroud)
我一直在测试它,但是当我将更改从本地存储库推送到中间Mercurial存储库,然后直到我们的Subversion存储库时,我一直遇到问题.
alt text http://bmurphy.mediafly.com.s3.amazonaws.com/images/mercurial/01.png
在我的本地计算机上,我有一个已提交的变更集,可以将其推送到我们的中间Mercurial存储库.在这里你可以看到它是版本#2263,哈希625 ...
alt text 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
Run Code Online (Sandbox Code Playgroud)
我现在切换到远程存储库,并更新工作目录.
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 …Run Code Online (Sandbox Code Playgroud) 这个问题是非常相似,在提出的一个这样的问题,但我有解决方法如下一些问题.
问题:
基本上我有一个subversion服务器和一个mercurial本地客户端.扩展hg-subversion允许mercurial充当subversion客户端.这对我来说是理想的,因为我可以在我的subversion开发分支中创建无限的功能分支,并在我选择合适时合并它们.
由于subversion的限制,我无法将分支合并提交到subversion存储库.实际上,我不需要提交每个分支合并,我只想将"默认"分支头提交给SVN.
拟议的解决方案:
Harvey建议的解决方法用户是修改我的工作流程,以包含用于开发的hgsubversion克隆的仅hg克隆.
引用哈维的话:
诀窍是学习修改后的hg < - > hgsubversion < - > svn工作流程.一旦你"了解"它的工作方式,你就不会有任何麻烦.你只需输入几个命令.我实际上已经开始编写脚本来使这个过程(重复性)更容易.典型流程:[in"hg"repo]提交一系列更改; 把他们推向"hgsubversion"; [切换到"hgsubversion"] hg update(hgsubversion需要这个); hg推送到"svn"(在你推送并在本地删除你的变更集后自动重新拉出); [切换回"hg"] hg从"hgsubversion"拉出; hg剥离较旧的重复项b/c"hg"不是hgsubversion克隆,并且不知道自动剥离旧的变更集.
我遇到的问题:
我遇到了从hgsubversion运行hg push到svn存储库的问题.我仍然收到错误消息,"abort:抱歉,找不到合并修订版的svn父版."
不可否认,我不是100%关于hgsubversion如何推动对svn的修改.老实说,我希望看到我的本地副本被推送到svn服务器的状态.
HALP?