Как пригласить пользователя в частное репозиторий github в организации с помощью командной строки
Я пытаюсь добавить пользователей в частное репозиторий 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
- git: 2.24.3
- gh: 1.1.0
2 ответа
Я беру на себя инициативу ответить на свой вопрос здесь, поскольку после некоторых исследований (спасибо Миславу за его помощь), а также испытаний и ошибок, я нашел правильный способ добавить соавторов в репозиторий GitHub в организации с CLI. Думаю, стоит выложить, надеюсь, это поможет другим.
Пригласите внешнего сотрудника в репозиторий внутри организации
gh api -X PUT repos/:org/:repo/collaborators/:username -f permission=:perm
то
-X PUT
указывает, что запрос является
PUT
а не
GET
(запрос по умолчанию). Идентификатор репо указывается
:org/:repo
(обратите внимание, что если репо не принадлежит организации, идентификатор будет
:owner/:repo
). В
:perm
аргумент указывает тип доступа, значение по умолчанию
push
(см. здесь)
Итак, предположим, я хочу предоставить
admin
доступ к
jonsnow
на репо
winterfell
под организацией
got
, Я буду использовать следующую команду
gh api -X PUT repos/got/winterfell/collaborators/jonsnow -f permission=admin
Обратите внимание, что если вы отправите приглашение для репо напрямую, пользователь будет отображаться как внешний соавтор (а не как член организации).
Добавить участника в организацию и пригласить его в репо
Вам просто нужно заранее включить пользователя в качестве члена организации с помощью
gh api -X PUT /orgs/:org/memberships/:username -f role=:role
а затем вы можете предоставить ему доступ к определенному репо с помощью той же команды, что и выше, т.е.
gh api -X PUT repos/:org/:repo/collaborators/:username -f permission=:perm
Обратите внимание, что значение для различных
:role
можно найти здесь
Вы можете установить членство в организации для пользователя
put /orgs/{org}/memberships/{username}
Вы можете добавить соавтора в репо
put /repos/{owner}/{repo}/collaborators/{username}
Но я не думаю, что вы можете объединить два (добавить соавтора в репозиторий организации)
Это потому, что этот соавтор должен быть сначала членом организации (поэтому получите и примите приглашение), прежде чем быть добавленным в репозиторий.