Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/svn/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
面向开发团队的GIT/Mercurial与SVN交叉_Svn_Git_Mercurial_Hgsubversion - Fatal编程技术网

面向开发团队的GIT/Mercurial与SVN交叉

面向开发团队的GIT/Mercurial与SVN交叉,svn,git,mercurial,hgsubversion,Svn,Git,Mercurial,Hgsubversion,问题是,我希望能够使用Mercurial或git作为开发的前端,但在Subversion中进行更改集和更新,通常是在集成分支中或只有Mercurial脚本或Hudson在注意到更改时才编写的东西。然后使用其他使用SVN的开发人员所做的更改更新我们的Mercurial存储库,在提供新的开发版本之前,我们将这些更改拉入并集成它们并测试更改,等等 有人知道以下场景对于合并和分支的开发团队是否可行吗?或者如果有更好的方法…除了用一种工具武装人们 以下策略由以下组件组成: SVN 含Mercurial的

问题是,我希望能够使用Mercurial或git作为开发的前端,但在Subversion中进行更改集和更新,通常是在集成分支中或只有Mercurial脚本或Hudson在注意到更改时才编写的东西。然后使用其他使用SVN的开发人员所做的更改更新我们的Mercurial存储库,在提供新的开发版本之前,我们将这些更改拉入并集成它们并测试更改,等等

有人知道以下场景对于合并和分支的开发团队是否可行吗?或者如果有更好的方法…除了用一种工具武装人们

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

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

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

在关于使用DVCS的课程中,这实际上是我解释的主要用例之一,我认为其中一个展示了DVCS是多么令人敬畏

你有几种方法可以做到这一点

手动方式 您SVN/checkout代码,然后Hg/initHg/commit所有内容。然后你在Hg下工作,根据你的意愿在本地进行小而频繁的原子修改。当您想要提交回SVN时,首先要Hg/up提交到您在SVN/checkout之后刚刚进行的Hg修订。如果您SVN/up,将不会有SVN冲突,因为您刚刚从普通SVN修订版更新。您Hg/commitHg/merge然后SVN/commit。如果同时有人在SVN中提交了,则重复该操作:Hg/up到最后一个干净的SVN版本,SVN/upHg/commit+merge

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

附加好处:这也是一种为使用Hg的人提供SVN提交者的方式,而不需要他们处于版本控制之外

自动方式
我从来没有这样使用过它,但可以重复地以两种方式进行SVN/Hg转换。

我应该提到,在前端开发中,我已经在使用hgsubversion,这对我来说很好。但我希望能够利用基于团队的分布式开发。我个人喜欢强大的武装方法:)而且Mercurial的使用与SVN非常相似。耶,我在从SVN过渡到Mercurial的过程中使用了这个过程。我基本上有一个分支,负责所有剩余的SVN更新。一旦每个人都解决了问题,并且我们已经准备好在mercurial环境中处理我们测试的过渡,我将最后的SVN更新与mercurial更改合并,并承诺在我宣布的新开发将开始的地方默认。效果很好。