Mercurial和SVN工作流程问题

时间:2012-04-11 21:23:25

标签: svn mercurial

我有一个有趣的源控制工作流问题。

我公司正在与第三方承包商合作,该承包商正在使用SVN跟踪当前正在进行开发的产品。我们将在接下来的几个月内接管这个存储库,但我们希望开始研究项目中的其他功能。由于显而易见的原因,我们的承包商拒绝我们提交访问权限,但同意阅读其SVN仓库的访问权。

对于我们的Windows开发机器,我们使用mercurial存储库。 我想以某种方式将SVN repo复制到新的HG repo并定期将提交给SVN的更改合并到HG中。换句话说,我们将在两个不同的存储库中并行工作。 / p>

有人做过这样的事吗?有关方法的任何建议吗?

感谢。

2 个答案:

答案 0 :(得分:2)

我认为任何过程只会变得更糟,因为你的变化会增加并进一步远离SVN的变化,这些变化永远不会与你的变化相混合。但是,我很想知道mercurial如何与这种复杂性合并。我会这样接近它:

1)从svn导出创建你的hg repo,让我们调用这个/SvnExportCleanHG 将其克隆到工作副本,其中公司的所有新功能都将使用:/WorkingHG

2)当您想从SVN引入新的更改时,请从/SvnExportCleanHG执行svn更新并将其提交到干净的仓库。这将有svn的2个版本,原始版本和最新版本。在/WorkingHG内运行hg pull /SvnExportCleanHG并合并所有不可避免的变化。然后将其提交给WorkingHG repo。

现在你已经尝试使用mercurials合并到最好的能力,你仍然有一个干净的/SvnExportCleanHG,你可以从SVN中提取下一个更改而没有任何冲突。

无论何时你想再次从svn更新,请执行第2步。从svn更新并在clean repo中提交永远不会发生冲突,因为它只会反映svn,但它总是允许你从工作副本HG中提取和合并因为它们的基础相同。

这取决于您的更改级别以及SVN的更改,如果mercurial合并会给您带来很多。如果你们留在代码的不同基线,这将是一个很好的工作流程,并节省了大量的手动工作。如果重叠很重,这仍然有效,但它只会简化您的工作流程,而不是解决许多合并问题。

如果您尝试过,我会非常感兴趣。

答案 1 :(得分:0)

SVN + Mercurial工作正常,直到你开始合并。但是,如果你不使用合并,为什么你需要mercurial。我们几乎有这样的情况。我们使用hgsubversion扩展将svn拷贝到mercurial,现在所有的活动开发都是mercurial。然后,我们只是将mercurial工作目录复制到没有历史记录和所有分支的svn。