version-control - Hg 存储库的 'default' 分支中应该包含什么?

标签 version-control mercurial open-source workflow versioning

关闭。这个问题是opinion-based .它目前不接受答案。












想改善这个问题吗?更新问题,以便可以通过 editing this post 用事实和引文回答问题.

6年前关闭。




Improve this question




在使用 Mercurial 或类似 DVCS 工具进行版本控制的大型 Libre Source 软件项目中,以下哪一项被认为是更传统的:

  • default 中保持软件的最新“稳定”版本分支。在 default 中标记每个版本所以你知道哪个版本被打包为下载。将补丁 merge 到 default一旦他们被测试。在命名分支中保留新功能等以 merge 到 default在下一个版本中。
  • 将每个版本保存在命名分支或类似分支中。使用 default保留仅供开发人员或非常鲁莽的人运行的前沿代码。

  • 或者......是否有一些被广泛接受的更好的工作流程模式?

    最佳答案

    Mercurial 对您应该如何使用 default 有相当强烈的意见。分支为。它记录在 Standard Branching wiki page 中.总结是:

  • 您不应使用除 default 以外的名称用于您的主要开发分支。

    原因是default是由新克隆 check out 的分支。如果您尝试为“主”分支使用其他名称,当用户在错误的位置克隆和提交内容时,他们或多或少会得到一个随机分支,这通常是不可取的。

    即使有大量文档说“在添加新功能之前先分支”(参见下一点),人们在向您发送补丁时也会忘记这一点。然后他们会通过移动变更集来清理东西。

    所以总是把最前沿的代码放在 default 中分支并为您的稳定版本使用其他分支。
  • 不要将分支名称视为一次性的

    分支名称是每个提交的永久部分,并允许识别每个提交是在哪个分支上引入的。因此,您需要考虑一下分支名称,以免污染分支命名空间。

    此外,如果您尝试针对每个错误修复使用一个分支,您最终可能会遇到性能问题。 Mercurial 和围绕它的工具旨在与数百个分支一起工作。 Mercurial 本身仍然可以很好地处理一万个分支,但有些命令可能会显示出明显的开销,只有在您的工作流已经稳定后才会看到这些开销。

    我们在 Mercurial 内部有缓存,所以问题主要是 UI 问题:托管站点和日志查看器可能会运行 hg branches将所有 10,000 个分支加载到一个下拉菜单中。对于想要从巨大菜单中选择单个分支的可怜用户来说,这真的很慢而且没用。

    如果分支关闭,则它们不会出现在 hg branches 中。 ,所以问题应该被最小化。然而,工具也可能想显示关闭的分支——这完全取决于工具。

    对不起,这有点含糊。主要的一点是,Mercurial 的构建是为了扩展变更集的数量,而不是命名分支的数量。我们已经用我之前提到的缓存解决了命名分支的最大性能问题,所以今天我不太关心有很多分支,特别是如果打开的分支数量很少(比如小于 100)。
  • 关于version-control - Hg 存储库的 'default' 分支中应该包含什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8859029/

    相关文章:

    java - 我可以为哪些开源 Java 项目做出贡献?

    git - 使用 git 推送和 pull 我的 conda 环境

    mercurial - 如何根据脚本拒绝推送到 Mercurial 服务器,而不会在此期间冒坏拉取的风险?

    python - Eclipse 的 Mercurial 插件找不到 Python——如何修复?

    eclipse - 在 Eclipse 中重新连接 Mercurial 控制的项目

    open-source - 寻找迷你语言的 (c)lisp 示例,即 DSL

    version-control - 不明白TFS分支工具的用法

    多个文件提交的 SVN 修订号

    version-control - 如何在 Mercurial 中扩展某些版本关键字?

    android - 是否有管理 Android 开源应用程序的基础?