Mercurial标记/分支策略

Ton*_*zzo 22 svn version-control mercurial

我目前的项目分为3个部分:网站,桌面客户端和第三方程序的插件.我们最初使用Subversion开始我们的源代码控制,但在阅读Joel Spolsky的最后帖子后决定尝试Mercurial .考虑到我们之前没有真正使用过svn的大部分潜力,我们认为从源控制如何工作的一些基本想法开始,这将使这种转变变得容易.

但是,在设置了我们的初始存储库之后,我们很遗憾标记和分支应该如何在这样的项目上工作.

基本上,我们同时处理所有这三个部分.我们希望发布版本是3个部分的组合.目前我们正在一个存储库中工作.

对于Plug-in部分,我们已经完成了第一次迭代,我们将其称为Plug-In v0.1.对于其他两个部分的第一次正式构建,我们还想将它们称为网站v0.1和桌面客户端v0.1.当所有三个部分都在v0.1时,我们希望有一个完整的项目v0.1.

我们的问题是我们不确定如何在Hg存储库中管理所有这些.处理此问题的最佳方法是为3个稳定版本创建3个单独的存储库,然后为当前开发创建3个存储库吗?目前我们将这一切都集中在一个存储库中 我们应该在分支机构中执行此操作(分支是否与克隆存储库不同?)和标记?

任何帮助是极大的赞赏.

Ste*_*eel 19

我强烈推荐Steve Losh的博客文章Mercurial的分支指南,其中他描述了Mercurial支持的几种分支方法.

使用Mercurial的命名分支功能可能是与SVN分支最接近的匹配.


jk.*_*jk. 8

听上去的确像你想的3份独立的回购,如果需要绑在一起的3版本也可能是有这3个库是有用的subrepos整个项目库中.


Ste*_*ons 5

您可以将它们保存在一个存储库中或将项目分开.对我来说,这取决于应用程序之间共享多少代码(如果有的话).如果组件之间未共享代码,请为每个组件使用不同的存储库.

单独的存储库允许您使用版本(v0.1)轻松标记每个组件,然后根据需要继续进行开发.当您准备发布组合产品时,只需从每个存储库的所需标记中提取,您就可以获得完整的产品版本.如果您具有与三个组件中的任何一个无关的应用程序的可交付成果,您还可以为组合产品创建存储库以保留该数据.您可以通过分支或克隆的存储库处理每个组件的分支.

如果将组件保存在单个存储库中,它仍然可以工作,但是标签和分支会变得更加混乱.当插件进入v0.1时,为"插件v0.1"创建一个标签.为桌面和Web客户端执行相同的操作.然后,当您想要发布产品时,您需要从三个不同的标签中提取每个组件的v0.1.

我会选择单独的存储库.如果存在共享代码,则决策会更复杂,但您可以找到将依赖项作为库而不是代码的方法.

对于有关分支的问题,本文是对不同选项和优缺点的良好指导.