3

我正在尝试将用户添加到组织内的私有 Github 存储库。从这篇文章开始,我只是更改了 API 端点以应对组织(如此所述),我最终得到以下命令:

gh api orgs/MY_ORG/repos/MY_USER_NAME/MY_REPO/collaborators/COLLABORATOR_USER_NAME -f '{"permission":"maintain"}';

此命令系统地返回 404 错误(请注意,当我尝试检查用户是否有权访问存储库时,我也会得到 404,即GET上述命令的版本)。我还需要提一下,这似乎不是一个微不足道的gh auth login问题,因为类似的命令gh repo create MY_ORG/MY_REPO可以正常工作。

这里还有一些技术细节:

  • 操作系统:macosx 10.15.16
  • 混帐:2.24.3
  • gh:1.1.0
4

2 回答 2

2

我主动在这里回答我自己的问题,因为经过一些调查(感谢 mislav 的帮助)和反复试验,我找到了使用 CLI 将协作者添加到组织内的 GitHub 存储库的正确方法。我认为值得发布它,希望这对其他人有帮助。

邀请外部合作者参与组织内的回购

gh api -X PUT repos/:org/:repo/collaborators/:username -f permission=:perm

指定-X PUT请求是 aPUT而不是 a GET(默认请求)。存储库的标识符由指定:org/:repo(请注意,如果存储库不在组织下,则标识符将为:owner/:repo)。参数表示访问的:perm类型,默认值为push(见这里

所以假设我想提供对组织下repo的admin访问,我将使用以下命令jonsnowwinterfellgot

gh api -X PUT repos/got/winterfell/collaborators/jonsnow -f permission=admin

请注意,如果您直接发送 repo 邀请,用户将显示为外部协作者(而不是组织成员)

将成员添加到组织并邀请他加入 repo

您只需要事先将用户作为组织的成员包括在内

gh api -X PUT /orgs/:org/memberships/:username -f role=:role

然后您可以使用与上述相同的命令为他提供对特定存储库的访问权限,即

gh api -X PUT repos/:org/:repo/collaborators/:username -f permission=:perm

请注意,:role可以在此处找到各种值

于 2020-10-17T10:38:33.283 回答
0

您可以为用户设置组织成员身份

put /orgs/{org}/memberships/{username}

您可以将协作者添加到存储库

put /repos/{owner}/{repo}/collaborators/{username}

但我认为您不能将两者结合起来(将合作者添加到 org repo)

这是因为该协作者需要先成为组织的成员(因此接收并接受邀请),然后才能添加到存储库。

于 2020-10-15T13:22:42.440 回答