如何限制推送操作以仅允许在 github 中使用 GPG 签名的提交

Sam*_*ert 5 git github git-push githooks

我有一个 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
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?任何概念或示例将不胜感激。

CJ *_*son 5

您似乎在 GitHub Enterprise 上并尝试创建一个拒绝任何未签名提交的预接收挂钩脚本- 对吗?如果是这样,这里有一个来自 GitHub 的开源 GPG 脚本。如果您使用 GitHub.com,请注意,它们不支持预接收挂钩,而是您需要设置一个受保护的分支,并进行所需的状态检查以拒绝未签名的工作。

至于设置密钥,你看过这篇文章吗?