Как пригласить пользователя в частное репозиторий 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}

Но я не думаю, что вы можете объединить два (добавить соавтора в репозиторий организации)

Это потому, что этот соавтор должен быть сначала членом организации (поэтому получите и примите приглашение), прежде чем быть добавленным в репозиторий.

Другие вопросы по тегам