GIT / Mercurial Crossover与SVN for Development团队合作

时间:2010-11-18 16:11:55

标签: svn git mercurial hgsubversion

问题在于我希望能够使用Mercurial或git作为开发的前端,但在Subversion中进行更改集和更新,通常在集成分支中或仅由Mercurial的脚本,或Hudson注意到更改时的脚本。然后我们的Mercurial存储库会更新其他使用SVN的开发人员所做的更改,我们会在提供新开发版本之前提取更改并集成它们并测试更改等。

有没有人知道以下方案是否可以用于合并和开发团队?分枝?或者,如果有更好的方法......除了强烈武装人们只使用一个工具?

以下策略由以下组件组成:

  • SVN
  • 具有Mercurial的SVN的1对1克隆
  • Mercurial Development Repository

在下面的配置中,通常会将更新从SVN / trunk拉入克隆(hgsubversion)。克隆将是只读的,并定期有一个可以进行更改的脚本。然后将克隆克隆到开发存储库中,该存储库是可读写的(它是常规的Mercurial Repo)。当开发人员将更改推送到此开发人员存储库时,驻留在Integration分支中的元素将被推送到SVN /集成分支。此分支仅由自动脚本提交。如果使用svn的其他开发人员只将更改推送到SVN的主干,则可以将它们拉入克隆并在Mercurial的环境中合并。缺点是你会失去SVN级别的可见性。

[[[[ trunk [[[[[[[[[[[[[[[[[[[[[[[[ SVN ]]]]]]]]]]]] branch/integration ]]]]]]]]]]]]]]]]]]
        |                                                   ^
        |                                                   |
        |                                                   |
        v                                                   |
SVN - Mercurial Clone                                       |
        |                                                   |
        |                                                   |
        |                                                   |
        v                                                   |
Mercurial - Development ---------------------------- Branch - Integration

1 个答案:

答案 0 :(得分:3)

在使用DVCS的课程中,这实际上是我解释的主要用例之一,而且我认为其中有一个显示了令人敬畏的DVCS ... ...

你有几种方法可以做到。

手动方式

SVN / checkout 代码,然后 Hg / init Hg / commit 一切。然后,您可以在Hg下工作,提交小而频繁的原子修改本地。当您想要提交回SVN时,首先 Hg / up 到您在SVN /结账后立即进行的Hg修订。您 SVN / up 将不存在SVN冲突,因为您刚刚从普通SVN版本更新。您 Hg / commit Hg / merge ,然后 SVN / commit 。如果有人同时在SVN中提交,则重复操作: Hg / up 到最后一个干净的SVN版本, SVN / up Hg / commit + merge < /强>

您跟踪最后一个SVN干净版本的方式取决于您。您可以使用每次更改的标记,将SVN修订保留在分支或单独的存储库中。的 TIMTOWTDI

增加了好处:这也是一种为使用Hg的用户提供SVN提交者的方式,而不受外部版本控制。

自动方式

我从未使用过这种方式,但tailor可以反复进行SVN / Hg双向转换。