Mercurial标记/分支策略

22
我的当前项目分为三个部分:网站、桌面客户端和第三方程序的插件。我们最初使用Subversion进行源代码控制,但在阅读Joel Spolsky的最后一篇文章后决定尝试Mercurial。考虑到我们以前没有真正使用过svn的潜力,我们认为从一些基本的源代码控制工作原理开始会使这个转换变得简单。

然而,在设置初始仓库之后,我们迷失了在这样一个项目中如何处理标记和分支的方法。

实际上,我们同时在所有三个部分上工作。我们希望发布是这3个部分的组合。目前我们正在一个仓库中工作。

对于插件部分,我们已经完成了第一次迭代,我们将其称为Plug-In v0.1。对于其他两个部分的第一个官方版本构建,我们也希望将它们称为Website v0.1和Desktop Client v0.1。当三个部分都达到v0.1时,我们希望有一个完整的项目v0.1。

我们的问题是,我们不确定如何在Hg仓库中管理所有这些内容。最好的处理方法是创建3个稳定版本的独立仓库,然后再创建3个当前开发的仓库吗?目前我们所有的内容都在一个仓库中。我们应该使用分支(分支是否与克隆仓库有所不同?)和标记来处理吗?

非常感谢您的帮助。


我最近也开始考虑使用Hg,这些基本上是我所拥有的完全相同的问题。 - Chris Marisic
4个回答

19

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

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


8

从您的描述来看,您需要为这3个部分创建单独的代码库。如果您需要将这3个部分绑定在一起进行发布,那么将这3个代码库作为整个项目代码库的子仓库也可能很有用。


5
你可以将它们放在一个仓库中,也可以分开放在不同的项目中。对于我来说,这取决于应用程序之间是否共享代码。如果组件之间没有共享代码,则为每个组件使用不同的存储库。
分离的存储库可以让您轻松地为每个组件打上版本标签(v0.1),然后根据需要继续开发。当您准备发布组合产品时,只需从每个存储库中获取所需标签,即可获得完整的产品发布版。如果应用程序有与这三个组件无关的交付成果,您还可以创建一个存储库来保存这些数据。您可以通过分支或克隆存储库来处理每个组件的分支。
如果将组件放在单个存储库中,它仍然可以工作,但是您的标签和分支会变得非常混乱。当插件达到v0.1时,请为其创建一个标签,例如“插件v0.1”。桌面和Web客户端也要做同样的事情。然后,当您想要发布产品时,您需要从三个不同的标签中获取每个组件的v0.1版本。
我会选择分开的代码库。如果有共享代码,则决策更加复杂,但您可以找到将依赖项作为库而不是代码的方法。
关于分支的问题,本文是一个很好的指南,介绍了不同的选项和优缺点。

0

尝试使用{{link1:Joel's Tutorial on Mercurial}}。这可能会提供更多关于如何使用它的信息。实际上,Mercurial中并没有像SVN中使用的“分支”,因此,停止试图将Mercurial用作SVN可能是一个好主意。与其分支,你可以拥有自己的本地仓库。


2
在Mercurial中,为每个分支启动新存储库只是支持的可能性之一。 - Stephen C. Steel

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接