确实需要两个杰出分支中的两个负责人

时间:2019-04-20 09:55:48

标签: mercurial tortoisehg

在TortoiseHg和Bitbucket上,我们将这种情况存储在共享存储库中:

enter image description here dev1和dev2的工作之间的合并应由dev1完成;但是dev1无法看到dev2的工作,因为最新消息无法将其推送到bitbucket存储库中,因为他被HG停了下来,原因是“中止:推送在分支“ Federico Development”上创建了新的远程头2221daef6518”

我担心问题是由dev2的一次提交引起的,dev2的一个提交在图片中用2个红色圆圈标记:他在本地的federico分支上提交,而federico也正在工作并在同一分支上提交。

>

无论问题的最初原因是什么,我们都希望让dev2将其工作作为与dev1不同的分支头推送到共享存储库,以便dev1可以拉出dev2作业并合并两个头。有什么解决方法可以得到这个结果?

其次,我们想了解问题的根源,以便更好地理解并在以后防止它发生:

  1. 问题确实是由dev2 ono dev1分支的提交引起的吗?
  2. 即使在那个不幸的提交dev2用第二次提交更改了分支之后,为什么HG仍然停止?
  3. 有没有办法为每个用户分配一个特定的分支,或者换句话说,拒绝某些用户在特定分支上的提交访问?

1 个答案:

答案 0 :(得分:1)

默认情况下,Mercurial不允许将一个分支上的多个头推送到服务器。在您的情况下,dev2在dev1分支上创建了一个新提交,并创建了一个新头。

现在一个接一个地回答您的问题:

  1. 是的,这个问题很严重,因为dev2在dev1分支上创建了一个新提交,导致dev1分支具有多个头。

  2. Mercurial中的提交是提交信息的一部分。因此,即使dev2在新分支上创建了新的提交之后,dev2所做的第一个提交仍仍在dev1分支上。

  3. 是的,您可以编写一个预提交钩子来实现此目的。

以下是您现在可以解决此问题的一种方法:

dev2可以使用--force标志来使用多余的头部。这会将新的头推到服务器。这样,提交将被交换,但是最终将在dev1分支上遇到多个头,您需要通过合并或其他方式来解决这些问题。