SVN用户的推荐Mercurial存储库/文件夹结构

时间:2010-03-02 22:44:58

标签: svn mercurial

我正在试验Hg,以便远离SVN,但想要了解如何构建我的Hg存储库。我来自SVN背景(这可能会影响我对这应该如何工作的看法!)我的存储库目前看起来像这样:

Project1
  trunk
  branches
    1.0
    1.1
Project2
  trunk

等。这似乎是构建SVN存储库的“传统”方式。

我应该如何用Hg重现这个?为了增加这一点,我喜欢'稳定','qa'和'dev'存储库/文件夹的想法,并且如果可能的话想介绍它。

我是初学者,所以欢迎任何帮助或建议。

3 个答案:

答案 0 :(得分:26)

Subversion(SVN)和Mercurial(HG)存储库之间存在一些结构差异,或者简称repo,意味着您将如何“设计”您的层次结构:

  • Mercurial可以更好地处理每个存储库只有一个项目:因为您始终必须克隆整个存储库,所以在单个存储库中拥有多个项目可能会对克隆时间产生重大影响推/拉操作,因为您必须同步所有在其他项目上完成的工作,而不是每次。
  • SVN没有标记/分支的“强”概念,而Mercurial :在SVN中(在撰写本文时),每个分支,每个标记,基本上都是一个副本给出项目/文件夹/等等。推荐的trunk / branches / tags结构可以帮助您找回“副本”,不再需要。另一方面,分支和标签在mercurial中定义良好。标签实际上是您放在特定修订版上的名称,您可以要求提供所有现有标签。对于分支,您将看到有MANY ways来处理它们,但最适合SVN理念的分支被命名为分支。

考虑到这一点,并将其与您的稳定,质量保证(QA)和开发(开发)流程相结合,我将推荐以下内容:

  • 每个项目名为“Stable”的存储库。每个项目有几个“QA”回购,每个项目有“Dev”。
  • 标签和名称分支仅由“稳定”仓库定义,或最终由“QA”定义。 “Dev”回购可以不同方式处理它们而不会造成伤害。
  • 你永远不会推动“QA”或“稳定”的回购,他们拉,或者他们整合捆绑或补丁,并且每个人负责一个人。

示例:MyProject-1.0

 [STABLE Repository, pulls from any/all QA]
  - MyProject-1.0

 [QA Repositories, branched from STABLE, pulls from any/all DEV ]
  - QA_MyProject-001 (Person A)
  - QA_MyProject-002 (Person B)
  - QA_MyProject-003 (Person C)
            ...
  - QA_MyProject-### (Person #)

 [DEV Repositories, branched from STABLE or QA]
  - DEV_MyProject-001 (Feature X) 
  - DEV_MyProject-002 (Feature Y)
  - DEV_MyProject-003 (Feature Z)
            ...
  - DEV_MyProject-### (Feature #)

  1. DEV completes feature(s)
  2. QA pulls feature(s) from DEV
  3. STABLE pulls from all approved QA(s) (consolidating all changes)

答案 1 :(得分:19)

但是在你这样做之前 - 请检查一下:hginit.com - 这是一个半小时的阅读,它有一个svn用户的部分。

让我更加明智,我决定放弃/ trunk / tag结构,并以不同的方式使用mercurial。我现在有一个每个项目的存储库,它只包含项目的结构,并使用mercurial tag命令进行标记。

.Jesper Hauge

答案 2 :(得分:9)

Mercurial的确有很好的记录。您只需要知道在Wiki中查看的位置。

你可以查看Mercurial的wiki文章RepositoryNaming来找到你的一些答案。

您还应该阅读官方的Mercurial手册:Mercurial: The Definitive Guide

祝你好运!