如何正确设置 Github 应用提交者以显示应用创建的提交?

问题描述

使用 GitHub Api 时,您可以提供作者和提交者信息,例如当您 PUT 一个 content 文件时。

我希望能够将 GitHub 应用程序用作 committer,以便人们了解提交是使用第三方工具完成的,并且作者信息作为经过身份验证的用户保留。

目前我使用应用名称作为 namecommitter 和应用域的电子邮件。但这根本不会将提交绑定到应用程序(例如:我必须使用该电子邮件创建一个机器人帐户才能使其显示任何类型的个人资料等,但这不会真正与我的 Github 应用程序绑定)。

这样做的正确方法是什么?或者我不应该尝试将应用程序用作 committer,而只是将经过身份验证的用户用作 committer

解决方法

您可以使用您提到的相同 content api 来确定您需要什么。您通过创建文件获得的响应是​​一个 json,它将告诉您分配给您的 github 应用程序的用户 ID。注意 author 下的 commit 对象,您应该看到如下所示:

    curl \
      -X PUT \
      -H "Authorization: token ${TOKEN}" \
      -H "Accept: application/vnd.github.v3+json" \
      https://api.github.com/repos/msgongora/fubectl/contents/test-file \
      -d '{"message":"message","content":"Y29udGVudA==","branch":"mrsg"}'

    {
      "content": {
      ...
      "commit": {
            ...
            "author": {
                "name": "myciapp[bot]","email": "1234545665+myciapp[bot]@users.noreply.github.com","date": "2021-04-07T06:28:18Z"
            },...
    }

一旦你有了它,你就可以为你的应用设置名称和电子邮件,就像你为普通用户设置一样:

git config --global user.name "myciapp[bot]"
git config --global user.email 1234545665+myciapp[bot]@users.noreply.github.com