如何在Github中限制推送操作,只允许使用GPG签名的提交。

7
我有一个Github代码库,我们共同用于开发。为了确保完整性,我们决定使用GPG签署我们的提交和标签。
现在问题是,如何防止开发人员向我们的Github代码库推送未经签名的提交,并且如何白名单GPG公钥以允许签名与白名单公钥相匹配的提交。
我查看了一些预推钩子,但没有按照上述描述工作,以下是相关内容。
remote="$1"
url="$2"

z40=0000000000000000000000000000000000000000

IFS=' '
while read local_ref local_sha remote_ref remote_sha
do
    if [ "$local_sha" = $z40 ]
    then
    # Handle delete
    else
    if [ "$remote_sha" = $z40 ]
    then
        # New branch, examine all commits
        range="$local_sha"
    else
        # Update to existing branch, examine new commits
        range="$remote_sha..$local_sha"
    fi

    # Check for WIP commit
    commit=`git rev-list -n 1 --grep '^WIP' "$range"`
    if [ -n "$commit" ]
    then
        echo "Found WIP commit in $local_ref, not pushing"
        exit 1
     fi
    fi
 done
exit 0

我该如何完成这个任务?能否提供一些提示或例子将会极为感激。

你正在检查任何提交 git log --grep '^WIP' 可能会找到的内容。你似乎要求检查是否有任何提交缺少 GPG 签名,因此你需要编写一个测试来检查“是否具有或缺少 GPG 签名”。然后,你可能还需要决定是否要检查,如果有签名,它是否有效。但是 StackOverflow 不是一个“为我编写代码”的服务... - torek
你可以允许推送提交,但在合并之前添加一个状态检查,要求这些提交必须签名。 - osowskit
1个回答

5

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接