Mercurial(?)+ SVN互操作

时间:2011-07-24 22:41:59

标签: svn mercurial dvcs

我需要针对以下情况提出一些建议:

  • 我的Uni组拥有庞大的SVN存储库。我实际上对整个事物的子目录感兴趣(例如说/ trunk / projects / my_project) - dunno如果真的与SVN有关

  • 我将负责95%的项目提交

  • 我更喜欢使用DVCS。最好是Mercurial,因为这是我所熟悉的,但我很灵活,以防其他更适合工作流程

  • my_project中可能会有许多较小的个别子项目。我希望能够单独处理每一个

工作流程如下:

  • 创建一个新的子项目

  • hack hack hack(branch etc)

  • 当达到一个相当稳定的状态时,包含在主项目中并推送到SVN

  • 偶尔,我可能需要将 SVN(即其他人)进行一些更改到主项目甚至子项目中。这些都将进入主干,即SVN级别没有分支

我知道有关SVN互操作性的Mercurial Wiki page,我怀疑Mercurial subrepo功能可能会派上用场,但我仍然不确定如何组织整个混乱。

2 个答案:

答案 0 :(得分:2)

正如Lucero所说, hgsubversion 是您一直在寻找的工具。另外,正如Lasse在对Lucero的回答中所说的那样,使用Mercurial的子存储库功能与SVN中处理子存储库或外部存储库的方式发生冲突:Mercurial使用普通文件来存储有关子存储库的信息,这些信息不会被SVN解释。

无论如何,基于您的问题,似乎您可能不需要使用子存储库功能:只有在您想要跟踪各个子项目之间的相互依赖性时才需要它。因此,假设您有独立的子项目,只需在每个项目的/trunk/projects/my_project下面的SVN中创建一个目录,并为每个项目单独使用Mercurial和 hgsubversion

基本信息是 hgsubversion 允许您本地从所有DVCS功能中受益,但在发布您的工作时,您或多或少地受限于SVN的功能。当使用SVN等中央和线性系统作为协作中心时,您无法利用有关团队协作的DVCS工作流程。

也许有可能设计一个(脆弱的)团队工作流程与SVN模仿一些DVCS方面,但我想这会导致更多的工作,而不是说服你的同事使用Mercurial或简单地发送补丁。 / p>

答案 1 :(得分:1)

似乎hgsubversion非常适合你。它允许你拉动并推送到SVN仓库,但在本地你有一个HG仓库。