如何防止有人推多头?

时间:2011-08-16 01:12:11

标签: mercurial

我有同事使用--force开关推动多个头,因为它们没有正确合并。

有什么方法可以阻止这种情况吗?

5 个答案:

答案 0 :(得分:6)

您可以在服务器端使用pretxnchangegroup挂钩执行此操作。

以下是一些示例:http://www.softwareprojects.com/resources/programming/t-mercurial-hook-forbid-2-heads-1910.html

所有这些钩子正在做的是确保在应用更改组之后,仍然只有一个头(或者如果你想获得幻想,每个分支只有一个)。

答案 1 :(得分:2)

告诉他们不应该这样做,并使用您控制的存储库上的挂钩强制执行工作流程。

在工作中,我们将其限制为一个头/分支。基本上用这个替换forbid_2head.sh:

#!/bin/bash

# Ensure only one head per branch in hg repository
for BRANCH in `hg branches -qa`
do
    COUNT=`hg heads -q $BRANCH | wc -l`
    if [ "$COUNT" -ne "1" ] ; then
       echo "Error: Trying to push more than one head to branch $BRANCH."
       exit 1
    fi
done
exit 0

答案 2 :(得分:2)

这是来自顶级熟练开发者的最佳http://hg.python.org/hooks/file/default/checkheads.py

访问http://hg.python.org/hooks/file/default/以获取其他有用的挂钩列表。

答案 3 :(得分:1)

您可以撤销他们--force所在的存储库的推送权限,并将其推送到其他服务器,或通过补丁提交更改。

答案 4 :(得分:0)

首先,我告诉开发人员不允许使用--force推送。

我还使用上面规定的服务器端钩子解决方案,并在钩子中添加一封电子邮件给每个人,说明世卫组织试图将多个头部推入中央仓库[然后格式化他的硬盘驱动器;]