是否可以允许合并但禁止直接在git中提交

时间:2013-11-06 01:24:17

标签: git merge commit

git中的两个分支,我使用gitolite进行访问控制 分支'dev'和分支'main'。
开发人员必须承诺'dev',并合并到'main',然后推'dev' 和'主' 我的问题是如何只允许开发人员承诺'dev',
并合并为'main',但不能直接提交'main' 我的意思是,如果开发人员在尝试时将代码直接推送到“主要” 推到远程'主',他们将失败。

1 个答案:

答案 0 :(得分:1)

gitolite允许您添加自定义服务器端挂钩。

使用此更新挂钩添加支票:

#!/bin/bash
ref=$1
old=$2
new=$3

[[ $ref == refs/heads/main ]] || exit 0

reject(){
  echo "$@"
  exit 1
}

parent=$(git rev-parse $new^)
[[ $parent == $old ]] || reject not a single commit
git rev-parse $new^2 &>/dev/null || reject not a merge commit

(对于gitolite,你必须将它放入update.secondary文件夹。)