Подтвердить что ты не робот

Как я могу отфильтровать все запросы на подачу GitHub для конкретной ветки цели

Я работаю над репо GitHub с большим количеством веток и запросов на загрузку.

Скажем, например, что у меня есть следующие запросы на растяжение:

  • a к ветке X
  • b к ветке X
  • c к ветке Y
  • d к ветке X
  • e к ветке Y.

Есть ли способ найти все запросы на тягу, предназначенные для ветки X (т.е. a -> X, b -> X, d -> X)?

4b9b3361

Ответ 1

Да, вы можете это сделать.

В терминологии Гитуба "ветвь" является "базовой", Таким образом, поисковая фраза: is:open is:pr base:X

Официальное описание: Поиск по названиям веток

Дополнительно вы можете добавить фильтры is:merged или is:unmerged.

Ответ 2

Начиная с 2016-01-10 это было добавлено в панель поиска gh api, см. следующий ответ.

Исходный принятый (и теперь отключенный ответ) оставлен без редактирования.


В настоящее время недоступно через веб-интерфейс

В настоящее время GitHub не предоставляет способ фильтровать запросы на загрузку своей целевой через свой веб-интерфейс. Вместо этого все, что вы сейчас получаете, это просто полный список запросов pull-запросов с именами ветвей темы:

GitHub Pull-Request UI

Нажав на запрос pull, вы увидите целевую ветку, но это не действительно поможет вам выполнить любую фильтрацию, которую вы хотите сделать.

Вы можете использовать API REST GitHub вместо

Можно фильтровать pull-запросы с помощью GitHub REST API, Однако:

GET /repos/:owner/:repo/pulls?base=:branch

Это должно показать вам все открытые запросы на возврат для репо :owner/:repo, отфильтровывается по запросам, которые нацеливают :branch как их базовую ветвь. Из документация:

Фильтр вытягивает имя базовой ветки. Пример: gh-pages.

Пример Использование cURL

Если у вас есть curl, вы можете проверить это на публичном репо из командной строки:

curl https://api.github.com/repos/codecombat/codecombat/pulls?base=master > \
pulls.json

Это вернет ответ JSON следующего вида:

[
  {
    "url": "https://api.github.com/repos/codecombat/codecombat/pulls/879",
    "id": 14955421,
    "html_url": "https://github.com/codecombat/codecombat/pull/879",
    "head": {
      "label": "DanielRodriguezRivero:patch-4",
      "ref": "patch-4",
      "sha": "baff84f0aeee12f23e3608558ae5341a0b5f939b",
      "repo": {
        "id": 16202384,
        "name": "codecombat",
        "full_name": "DanielRodriguezRivero/codecombat"
      }
    },
    "base": {
      "label": "codecombat:master",
      "ref": "master",
      "sha": "5e2f3ac7cb731a6e40e81737a5122c7fe1b746d3",
      "repo": {
        "id": 15193430,
        "name": "codecombat",
        "full_name": "codecombat/codecombat"
      }
    }
  }
]

Каждый объект в массиве представляет собой запрос на перенос, отфильтрованный базовой ветвью. JSON фактически содержит гораздо больше чем это, я просто удалил большую часть этого, чтобы показать соответствующие части для этого вопроса.

Анализ ответа cURL

Возможно, вы могли бы написать Python/Ruby/PHP/Whatever script, чтобы затем проанализировать свойство html_url каждого запроса pull-запроса и перечислить его в командной строке. Например, вот простой Ruby script, который будет анализировать вывод ответа JSON, сохраненный с выхода curl:

require 'json'

json = JSON.parse(File.read('./pulls.json'))
pulls = json.map { |pull| { title: pull['title'], url: pull['html_url'] } }

pulls.each do |pull|
  puts pull.values
  puts
end

Что выводит следующее:

$ ruby parser.rb
Update es-ES.coffee
https://github.com/codecombat/codecombat/pull/879

Fix deltas referring to last system saved
https://github.com/codecombat/codecombat/pull/874

Refactor getNameById and add naming to systems in deltas
https://github.com/codecombat/codecombat/pull/866

Traducido varios textos del fichero es-ES.coffe al espa├▒ol de Espa├▒a
https://github.com/codecombat/codecombat/pull/865

Anon name collide
https://github.com/codecombat/codecombat/pull/834