GitHub API: Включить Push-ограничения для ветви - PullRequest
0 голосов
/ 25 июня 2018

Я пытаюсь отключить и включить защиту веток для проекта GitHub в скрипте Python с использованием GitHub API (версия 2.11).Точнее говоря, я хочу удалить все ограничения push-уведомлений из ветви, а затем включить их для определенных групп.

Замена / добавление существующих командных ограничений работает через

PUT/POST /repos/:owner/:repo/branches/:branch/protection/restrictions/teams

И удаление ограничений толчка также работает как талисман, используя

DELETE /repos/:owner/:repo/branches/:branch/protection/restrictions

Но, если я удаляю ограничения толчкаЯ не нашел способа, как включить его снова, чтобы добавить конкретные команды.Если я пытаюсь добавить или заменить команды, в сообщении будет указано «Ограничения принудительной отправки не включены» .

Так, как я могу включить флажок Ограничить, кто может нажать на эту ветку , чтобы добавлять команды в сценарий?Смотрите на скриншот для желаемого результата: Ограничения Push

Документация API просто предоставляет мне варианты Получить ограничения защищенной ветви и Снять ограничения защищенной ветки .

То, что я пробовал до сих пор:

  • Просто удаление всех команд без снятия ограничений не работает, потому что тогданикто не может толкнуть.
  • Отправка PUT / POST на / repos /: владелец /: repo / филиалы /: ветка / защита / ограничения дает 404.
  • Прямо сейчас у меня нет другого пути, кроме как поставить флажок вручную, а затем добавить и заменить работы через API.

1 Ответ

0 голосов
/ 30 июня 2018

Проверка Обновление защиты ветви Раздел Github API Rest:

PUT /repos/:owner/:repo/branches/:branch/protection

Использование & :

ownerWithRepo="MyOrg/my-repo"
branch="master"
curl -X PUT \
     -H 'Accept: application/vnd.github.luke-cage-preview+json' \
     -H 'Authorization: Token YourToken' \
     -d '{
        "restrictions": {
            "users": [
              "bertrandmartel"
            ],
            "teams": [
              "my-team"
            ]
        },
        "required_status_checks": null,
        "enforce_admins": null,
        "required_pull_request_reviews": null
    }' "https://api.github.com/repos/$ownerWithRepo/branches/$branch/protection"

Обратите внимание, что установка null в одно из этих полей отключит (снимите флажок) функцию

В :

import requests 

repo = 'MyOrg/my-repo'
branch = 'master'
access_token = 'YourToken'

r = requests.put(
    'https://api.github.com/repos/{0}/branches/{1}/protection'.format(repo, branch),
    headers = {
        'Accept': 'application/vnd.github.luke-cage-preview+json',
        'Authorization': 'Token {0}'.format(access_token)
    },
    json = {
        "restrictions": {
            "users": [
              "bertrandmartel"
            ],
            "teams": [
              "my-team"
            ]
        },
        "required_status_checks": None,
        "enforce_admins": None,
        "required_pull_request_reviews": None
    }
)
print(r.status_code)
print(r.json())
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...