什么应该进入Hg存储库的'default'分支?

sni*_*im2 5 versioning version-control workflow mercurial open-source

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

  1. default分支中保留最新的"稳定"版本的软件.标记每个版本,default以便您知道哪个版本已打包为下载.default测试后立即合并补丁.保持命名分支中的新功能等在default下一版本中合并.
  2. 将每个版本保留在命名分支或类似的分支中.default用于保留仅供开发人员或非常愚蠢的人使用的前沿代码.

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

Mar*_*ler 4

Mercurial 对于您应该使用分支的用途有相当强烈的意见default。它记录在标准分支 wiki 页面中。总结是:

\n\n
    \n
  • 您不应使用default主开发分支以外的名称。

    \n\n

    原因是该default分支已被新克隆检出。如果您尝试为“主”分支使用其他名称,则当用户在错误的位置克隆和提交内容时,他们将或多或少地获得随机分支,这通常是不可取的。

    \n\n

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

    \n\n

    因此,始终将前沿代码放在分支中default,并使用其他分支来发布稳定版本。

  • \n
  • 不要将分支名称视为一次性名称

    \n\n

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

    \n\n

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

    \n\n

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

    \n\n

    如果分支关闭,那么它们就不会出现在 中hg branches,因此问题应该最小化。然而,这些工具可能也想显示关闭的分支\xe2\x80\x94,这一切都取决于工具。

    \n\n

    抱歉,这有点含糊。要点是 Mercurial 是根据变更集的数量而不是命名分支的数量来构建的。我们已经用我之前提到的缓存解决了命名分支的最大性能问题,所以今天我不太关心有很多分支,特别是如果打开的分支数量保持较小(例如,少于 100)。

  • \n
\n