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

Rob*_*Rob 24 svn mercurial

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

Project1
  trunk
  branches
    1.0
    1.1
Project2
  trunk
Run Code Online (Sandbox Code Playgroud)

这似乎是构建SVN存储库的"传统"方式.

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

我是一名Hg初学者,所以欢迎任何帮助或建议.

giz*_*zmo 26

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

  • Mercurial每个存储库只有一个项目可以更好地工作:因为您总是必须克隆整个存储库,所以在单个存储库中拥有多个项目可能会对克隆时间以及推/拉操作产生很大影响,因为您将必须同步所有在其他项目上完成的工作,而不是每次.
  • SVN没有标记/分支的"强"概念,而Mercurial则:在SVN中(在编写本文时),每个分支,每个标记,基本上是给定项目/文件夹/其他任何内容的副本.推荐的trunk/ branches/ tags结构可以帮助您找回"副本",不再需要.另一方面,分支和标签在mercurial中定义良好.标签实际上是您放在特定修订版上的名称,您可以要求提供所有现有标签.对于分支,您会看到有很多方法可以处理它们,但最适合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)
Run Code Online (Sandbox Code Playgroud)


Hau*_*uge 19

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

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

杰斯豪格


Eti*_*ard 9

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

您可以查看Mercurial的wiki文章RepositoryNaming来查找您的一些答案.

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

祝好运!