使用HG Subversion推送到SVN时的工作流程

时间:2011-01-31 16:22:59

标签: svn mercurial hgsubversion

此问题与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?

2 个答案:

答案 0 :(得分:6)

我已经决定回答我自己的问题以便存档(以及那些有同样问题的人)。

我发现another similar question答案简单明了,你不能这样做。如果这对您有帮助,请参阅上面的链接并向上推荐Eric-Karl的答案。他确实提供了一种解决方法。

答案 1 :(得分:-1)

使用HgSubversion知识

如果我正确理解了这个问题,hgsubversion只会推送到你当前的版本。

e.g。如果你已经完成10,11,12,然后从dev分支合并了13。你可以

hg up 12
hg push

由于它会进行rebase等方式,你最终会推到12然后更新到13,但它对我有效。

新的hg功能

使用mercurial phases并将您不想推送的修订标记为机密。当然,这也会阻止你推送到其他存储库。

使用公司政策

我们工作的另一个好处是所有代码提交都必须有审阅者和问题。如果某些东西不是针对svn(但是在我们的团队/ spike存储库中),那么我不会将这些信息放入,并且任何事故都会因预先提交钩子故障而停止。