Svn Mercurial标记/分支策略

Svn Mercurial标记/分支策略,svn,version-control,mercurial,Svn,Version Control,Mercurial,我当前的项目分为三个部分:网站、桌面客户端和第三方程序插件。我们最初使用Subversion进行源代码管理,但在阅读后决定尝试Mercurial。考虑到我们以前没有真正使用svn的大部分潜力,我们认为从源代码控制工作原理的一些基本想法开始重新开始会使这种转换变得容易 然而,在设置了初始存储库之后,我们就不知道标记和分支应该如何在这样的项目中工作 基本上,我们正在同时处理这三个部分。我们想要一个由三部分组成的版本。目前,我们正在一个存储库中工作 对于插件部分,我们已经完成了第一次迭代,我们称之为插

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

然而,在设置了初始存储库之后,我们就不知道标记和分支应该如何在这样的项目中工作

基本上,我们正在同时处理这三个部分。我们想要一个由三部分组成的版本。目前,我们正在一个存储库中工作

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

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


非常感谢您提供的任何帮助。

听起来您确实希望为这三个部分分别进行回购,如果您需要在发行版中将这三个部分绑定在一起,那么将这三个存储库作为一个整体项目存储库也可能很有用

尝试使用。这可能会产生更多的信息或如何使用它。在SVN中确实没有使用“分支”,而且实际上,停止尝试像使用SVN一样使用Mercurial可能是个好主意。您没有分支,而是拥有自己的本地存储库

我强烈推荐Steve Losh的博客,他在博客中介绍了Mercurial支持的几种分支方法


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

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

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

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

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


对于您关于分支的问题,这是一个很好的指南,可以帮助您了解不同的选项和优缺点。

为每个分支创建一个新的存储库只是Mercurial支持的可能性之一。我最近也开始考虑Hg,这些问题基本上与我的问题完全相同。