我需要针对以下场景的一些建议:
我的 Uni 组有一个巨大的 SVN 存储库。我实际上对整个项目的子目录感兴趣(例如/trunk/projects/my_project)- 不知道它是否真的与 SVN 相关
我将负责该项目 95% 的提交
我更愿意使用 DVCS。最好是 Mercurial,因为这是我所熟悉的,但我很灵活,以防其他东西更适合工作流
my_project 中可能会有许多较小的独立子项目。我希望能够单独处理每一个
工作流程如下:
创建一个新的子项目
hack hack hack(分支等)
当达到相当稳定的状态时,包含到主项目中并推送到SVN
有时,我可能需要将一些更改从 SVN(即由其他人)拉入主项目,甚至是子项目。这些都将进入主干,即没有 SVN 级别的分支
我知道 Mercurial Wiki page对于 SVN 互操作性,我怀疑 Mercurial subrepo 功能可能会派上用场,但我仍然不确定如何组织整个困惑。
最佳答案
正如 Lucero 所建议的,hgsubversion 是您通常需要的工具。此外,正如 Lasse 在他对 Lucero 的回答的评论中指出的那样,使用 Mercurial 的子存储库功能与 SVN 中子存储库或外部存储库的处理方式存在冲突:Mercurial 使用普通文件来存储有关子存储库的信息,并且 SVN 不解释此信息。
无论如何,根据您的问题,您似乎不需要使用子存储库功能:只有在您想跟踪各个子项目之间的相互依赖性时才需要它。因此,假设您有独立的子项目,只需在 /trunk/projects/my_project
下的 SVN 中为每个项目创建一个目录,并分别为每个项目使用带有 hgsubversion 的 Mercurial。
基本信息是 hgsubversion 允许您本地受益于所有 DVCS 功能,但在发布您的作品时,您或多或少会受到 SVN 功能的限制.当使用像 SVN 这样的中央线性系统作为协作中心时,您不能使用涉及团队协作的 DVCS 工作流。
也许可以使用 SVN 设计一个(脆弱的)团队工作流,它模仿 DVCS 的某些方面,但我想这比说服您的同事也使用 Mercurial 或简单地向您发送补丁要多得多。
关于svn - Mercurial (?) + SVN 互操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6810234/