这种Mercurial工作流程是否存在缺点:命名分支“死”头?

我喜欢命名分支机构的灵活性,但我对扩大头数有一些担忧。

即使分支关闭,它仍然出现在头部。 我对如何清理“hg head”的输出有个想法我对大师的问题:“我错过了什么?”

首先,您可能会问,为什么我想完全隐藏命名分支的头部? 由于各种原因:

  • 该功能是一个坏主意
  • 该功能是一个好主意,尚未准备好合并提示,但可能在几个月内完成
  • 该分支是针对较旧标签版本的补丁版本
  • 编辑:事实证明,头部的增长是我使用的老版本的mercurial的一个症状。 关闭分支会将分支的头部隐藏在较新的Mercurial版本上。

    我的想法是有一个“死亡”头部分支,所有这些封闭分支头部将被合并。
    死亡的头部将被变更集0所控制,并且仅用于捆绑目前不需要的流浪头部的唯一目的。

    该deadhead只有其他deadhead孩子,从来没有合并回默认分支。


    您可以使用hg commit --close-branchhg commit --close-branch标记为关闭:

    http://www.selenic.com/mercurial/hg.1.html#commit

    默认情况下,关闭的分支不会显示在hg brancheshg heads (仅当指定-c / --closed选项时),所以我不确定您是如何看到“混乱”的?

    你将通过合并获得什么?


    离开死亡头部似乎有一个不利之处,而Mercurial后来的版本并未解决这个问题。

    假设你有很多闭合的分支头,并且只有一个非闭合的活动分支。 进一步假设,在稍后的某个时刻,您会在非关闭的头部(rev good)之上做出不好的提交(rev bad)。 在推动之前,您希望克隆您的存储库以删除那个错误的提交。 这通常是一件简单的事情 -

    hg clone --rev good BadRepo FixedRepo
    

    这不幸的是不拉封闭的分支头,因为它们不是好的祖先。 所有关闭的分支都不会在克隆的存储库中关闭。 我使用Mercurial 2.3.1进行了测试。

    思考?

    ps hgflow扩展会在合并之前关闭功能并释放分支。 这避免了封闭的头部问题。

    关于克隆是一种丑陋的方法,它对我来说工作得很好,很容易。 克隆使用错误提交来替换存储库。 克隆是一个本地的努力。 那个不好的存储库就被丢弃了。 我通常意识到我很快就做出了不好的承诺。

    -b选项只是通过使用分支名称而不是更改集标识符来重新编写--rev的一种方法。 使用--rev选项将修改下的整个拓扑树。 如果修订是分支的头部,那么--rev克隆与-b克隆相同。 -b留下了我用--rev选项描述的相同问题。 如果将原始存储库中关闭的分支留作头,则会重新打开。

    如果模式要封闭,那么他们很快就会超过相关负责人。 除非你做一个完整的克隆,否则把这些闭包变成一个克隆是相当费力的。


    我觉得我已经混淆了水与为什么我可能做一个部分克隆。 我会更仔细地重申我对封堵头的担忧。

    对于从存储库X到存储库Y的任何部分克隆,如果在存储库X中存在具有闭包头的分支B,并且该分支仅出于拓扑原因包含在克隆中,则分支B不会在存储库Y中关闭。此外,如果合并模式是通常留下封头,然后封头的数量是有序开发时间。

    这是我关心的问题,所以我在合并之前关闭我的分支机构。 我使用hgflow(http://nvie.com/posts/a-successful-git-branching-model)。 一个可能的部分克隆将是克隆开发分支,并通过拉动主分支(例如,如果你想消除死角)。 如果功能和发布分支在最终合并后关闭,那么这些分支将在克隆中重新打开。

    链接地址: http://www.djcxy.com/p/37553.html

    上一篇: Is there a downside to this Mercurial workflow: named branch "dead" head?

    下一篇: Maven in Eclipse: step by step installation