【问题标题】:Recommended Mercurial repository/folder structure for an SVN user为 SVN 用户推荐的 Mercurial 存储库/文件夹结构
【发布时间】:2011-01-22 23:20:18
【问题描述】:

我正在尝试使用 Hg 以摆脱 SVN,但想对我应该如何构建我的 Hg 存储库提出一些意见。我来自 SVN 背景(这可能会影响我对它应该如何工作的看法!),我的存储库目前看起来像这样:

Project1
  trunk
  branches
    1.0
    1.1
Project2
  trunk

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

我应该如何用 Hg 重现这个?为了增加一点趣味性,我喜欢“stable”、“qa”和“dev”存储库/文件夹的想法,如果可能的话,我想介绍一下。

我是 Hg 初学者,因此欢迎任何帮助或建议。

【问题讨论】:

    标签: svn mercurial


    【解决方案1】:

    Mercurial 确实有很好的文档记录。您只需要知道在 Wiki 中的什么位置即可。

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

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

    祝你好运!

    【讨论】:

      【解决方案2】:

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

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

      .杰斯珀·豪格

      【讨论】:

      • 我喜欢每个项目单独存储库的想法。
      【解决方案3】:

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

      • Mercurial 在每个存储库只有一个项目时效果更好:因为您总是需要克隆整个存储库,所以在一个存储库中拥有多个项目可能会对克隆时间以及推送/拉取操作,因为您每次都必须同步在其他项目上完成的所有工作。
      • SVN 没有标记/分支的“强”概念,而 Mercurial 有:在 SVN 中(在撰写本文时),每个分支、每个标记基本上都是给定项目的副本/文件夹/随便。推荐的trunk/branches/tags 结构可以帮助您找到您的“副本”,仅此而已。另一方面,分支和标签在 mercurial 中定义良好。标签实际上是您放在特定修订版上的名称,您可以询问所有现有标签。对于分支,您会看到有 MANY ways 来处理它们,但最适合 SVN 理念的分支是命名分支。

      考虑到这一点,并将其与您对稳定、质量保证 (QA) 和开发 (dev) 流程的想法相结合,以下是我的建议:

      • 每个项目有一个名为“Stable”的存储库。每个项目有几个“QA”回购,每个项目有大量“Dev”。
      • 标签和名称分支仅由“稳定”存储库或最终由“QA”定义。 “开发”存储库可以以不同的方式处理它们而不会造成伤害。
      • 您永远不会推送到“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)
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-06-15
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-12-08
        • 1970-01-01
        相关资源
        最近更新 更多