Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/mercurial/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mercurial Central Hg在默认分支上有多个头部,我如何防止?_Mercurial_Branch_Head - Fatal编程技术网

Mercurial Central Hg在默认分支上有多个头部,我如何防止?

Mercurial Central Hg在默认分支上有多个头部,我如何防止?,mercurial,branch,head,Mercurial,Branch,Head,在清理某个Hg(Mercurial)存储库时,我注意到一个旧版本(实际上是4年前的版本)显示默认分支上没有分支 我认为不可能在同一个分支上分支(我的意思是,你可以在一个新分支上有一个新的头,但不能在同一个分支上)。这里发生了什么,程序员(当时为我工作)在这里错误地做了什么,更重要的是,如何防止它 这一直是可能的(至少从mercurial 0.9左右开始);mercurial不是git,在git中处理此类事情要复杂得多。您可以在mercurial中不使用任何(命名的)分支,并且每个分支都有您想要创

在清理某个Hg(Mercurial)存储库时,我注意到一个旧版本(实际上是4年前的版本)显示默认分支上没有分支

我认为不可能在同一个分支上分支(我的意思是,你可以在一个新分支上有一个新的头,但不能在同一个分支上)。这里发生了什么,程序员(当时为我工作)在这里错误地做了什么,更重要的是,如何防止它


这一直是可能的(至少从mercurial 0.9左右开始);mercurial不是git,在git中处理此类事情要复杂得多。您可以在mercurial中不使用任何(命名的)分支,并且每个分支都有您想要创建的任意多个匿名头。只需更新到一个非head版本并开始提交——瞧——您创建了一个新的

编辑以添加: 如果应用适当的pretxnchangegroup来检查传入变更集中是否存在其他头,则可以防止向存储库添加其他头。有几个古老的答案:


仅举两个例子,它总是可能的(或者至少从mercurial 0.9左右开始);mercurial不是git,在git中处理此类事情要复杂得多。您可以在mercurial中不使用任何(命名的)分支,并且每个分支都有您想要创建的任意多个匿名头。只需更新到一个非head版本并开始提交——瞧——您创建了一个新的

编辑以添加: 如果应用适当的pretxnchangegroup来检查传入变更集中是否存在其他头,则可以防止向存储库添加其他头。有几个古老的答案:


仅举两个例子

但如果我这样做,我会收到一条信息说“不要修改头部,使用--force”或类似的东西。因此,这可能就是程序员当时所做的,强迫他对中央存储库的非头部修订进行提交?基本上,一旦发生类似的情况,就不清楚其意图是什么,更不用说进行一次理智和安全的合并了。或者我在这里误解了Hg的一些基础知识?我不认为这会模糊其意图——这完全取决于提交消息以及您是否愿意阅读代码。关于合并:头就是头,头就是头。不管它在哪里;合并规则不取决于头是否位于同一命名分支中。事实上,不鼓励使用太多不同的命名分支,尤其是不是每个分支都有一个分支。无论如何,使用不同的头来修复一个bug,甚至可能是从其他地方推出来的,在旅行时使用笔记本电脑,并不一定是“错误的”。这取决于你如何使用该系统和形成你的工作流程感谢这些额外的评论和对你答案的更新,它让我更好地理解了hg的一般含义以及如何使用它,特别是我对分支机构中多个负责人的误解。但如果我这样做,我会收到一条消息说“不要修改负责人,使用--force”,或者类似的东西。因此,这可能就是程序员当时所做的,强迫他对中央存储库的非头部修订进行提交?基本上,一旦发生类似的情况,就不清楚其意图是什么,更不用说进行一次理智和安全的合并了。或者我在这里误解了Hg的一些基础知识?我不认为这会模糊其意图——这完全取决于提交消息以及您是否愿意阅读代码。关于合并:头就是头,头就是头。不管它在哪里;合并规则不取决于头是否位于同一命名分支中。事实上,不鼓励使用太多不同的命名分支,尤其是不是每个分支都有一个分支。无论如何,使用不同的头来修复一个bug,甚至可能是从其他地方推出来的,在旅行时使用笔记本电脑,并不一定是“错误的”。这取决于您如何使用该系统和形成您的工作流程感谢这些额外的评论和对您答案的更新,它让我更好地理解了hg的一般含义以及如何使用,尤其是我对一个分支中多个负责人的误解。@down投票者:是否愿意评论我的问题有哪些不清楚/错误?建议编辑?(我改进了标题,也许这有帮助,这很尴尬)我没有投反对票,但我要指出,用反复无常的话来说,这不是一个分支,只是一个头部。在Mercurial中,根据定义,任何没有后代的commit都是head。创建一个的方法是进行新的提交。如果当前提交是头,则执行新提交会导致前一个头变为非头,头的数量保持不变。如果当前提交是非头,则头的数量刚刚增加1。这就是问题的全部。顺便说一句,这些头的起源通常是一个推动而不是一个承诺,是的,hg鼓励你注意到这会增加头的数量,并做一些不同的事情,但无论如何做起来很容易。@downvorters:想评论一下我的问题有什么不清楚/错误吗?建议编辑?(我改进了标题,也许这有帮助,这很尴尬)我没有投反对票,但我要指出,用反复无常的话来说,这不是一个分支,只是一个头部。在Mercurial中,根据定义,任何没有后代的commit都是head。创建一个的方法是进行新的提交。如果当前提交是头,则执行新提交会导致前一个头变为非头,头的数量保持不变。如果当前提交是非头,则头的数量刚刚增加1。这就是它的全部。顺便说一句,这些头的起源通常是一个推动而不是一个承诺,是的,hg鼓励你注意到这会增加头的数量,并做一些不同的事情,但无论如何都很容易做到。