0

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

4

1 回答 1

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 文件夹中。)

于 2013-11-06T02:00:26.877 回答