此问题与this问题中提出的问题非常相似,但我在解决方法后遇到了一些问题。
问题:
基本上我有一个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?
答案 0 :(得分:6)
我已经决定回答我自己的问题以便存档(以及那些有同样问题的人)。
我发现another similar question答案简单明了,你不能这样做。如果这对您有帮助,请参阅上面的链接并向上推荐Eric-Karl的答案。他确实提供了一种解决方法。
答案 1 :(得分:-1)
如果我正确理解了这个问题,hgsubversion只会推送到你当前的版本。
e.g。如果你已经完成10,11,12,然后从dev分支合并了13。你可以
hg up 12
hg push
由于它会进行rebase等方式,你最终会推到12然后更新到13,但它对我有效。
使用mercurial phases并将您不想推送的修订标记为机密。当然,这也会阻止你推送到其他存储库。
我们工作的另一个好处是所有代码提交都必须有审阅者和问题。如果某些东西不是针对svn(但是在我们的团队/ spike存储库中),那么我不会将这些信息放入,并且任何事故都会因预先提交钩子故障而停止。