这种Mercurial工作流程是否存在缺点:命名分支“死”头?
我喜欢命名分支机构的灵活性,但我对扩大头数有一些担忧。
即使分支关闭,它仍然出现在头部。 我对如何清理“hg head”的输出有个想法我对大师的问题:“我错过了什么?”
首先,您可能会问,为什么我想完全隐藏命名分支的头部? 由于各种原因:
编辑:事实证明,头部的增长是我使用的老版本的mercurial的一个症状。 关闭分支会将分支的头部隐藏在较新的Mercurial版本上。
我的想法是有一个“死亡”头部分支,所有这些封闭分支头部将被合并。
死亡的头部将被变更集0所控制,并且仅用于捆绑目前不需要的流浪头部的唯一目的。
该deadhead只有其他deadhead孩子,从来没有合并回默认分支。
您可以使用hg commit --close-branch
将hg commit --close-branch
标记为关闭:
http://www.selenic.com/mercurial/hg.1.html#commit
默认情况下,关闭的分支不会显示在hg branches
或hg 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?