禁止从特定分支分支和合并

sde*_*old 8 git git-workflow

是否有git钩子或其他方法来禁止分支和合并特定分支.我们希望确保不将"脏"集成分支合并到我们的清洁部署分支中.

主要目标是人们不能执行这样的事情:

git checkout integration
git checkout -b major_problem_branch
Run Code Online (Sandbox Code Playgroud)

要么

git checkout deployment_or_hotfix_or_feature_branch
git merge integration
Run Code Online (Sandbox Code Playgroud)

Mic*_*ael 5

您可以通过将其添加到裸存储库中的配置文件来使用服务器上的分支权限:

[hooks]
        allowedtomerge = user1,user2,user3
        protectedbranches = master
Run Code Online (Sandbox Code Playgroud)

这将允许 user1、user2 和 user3 合并到 master 分支,但不允许其他分支。

或者您可以创建一个预提交挂钩:

#!/bin/bash

if [[ `git symbolic-ref HEAD` == "refs/heads/master" ] -a ["$USER" != "user1"]] then
    echo "You cannot commit in master!"
    exit 1
fi
Run Code Online (Sandbox Code Playgroud)

然后有人评估并允许变革继续进行。

理想情况下,我会使用您喜欢的系统,例如 gerrit、assembla 或 github。他们有通过合并请求控制主分支的好方法。