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

Можно ли получить список слияний в ветку с сайта или API Github?

В нашем рабочем процессе никакие "прямые" фиксации не поступают в главную ветвь. Мастер-ветвь получает только слияния из запросов Pull.

Мы можем думать о каждом объединении, затем как о новой функции, добавленной в ведущую ветвь.

Итак, я хотел бы получить список слияний в master, как способ визуализации блоков функций, добавленных в продукт с течением времени.

Предоставляет ли git или API Github этот запрос, или мне нужно разобрать необработанные коммиты?

4b9b3361

Ответ 1

Git предоставляет такую ​​функцию с помощью команды Git. Эта команда принимает некоторые переключатели, которые фильтруют полученные коммиты в соответствии с количеством родителей.

Один из них будет соответствовать вашему запросу:

  • - слияния Только транзакции слияния только для печати. Это точно так же, как --min-parents=2.

Ниже показано, что комманды слияния (т.е. коммиты с несколькими родителями) достижимы из ветки vNext LibGit2Sharp проект

$ git log vNext --merges --oneline
090b2de Merge pull request #348 from jamill/credential_callback_fix
0332c35 Merge pull request #260 from ben/great-renaming
3191c1b Merge pull request #239 from ben/libgit2-upgrade-81eecc3
1d544e8 Merge branch 'vNext'
238d259 Merge remote-tracking branch 'origin/master'

Update

Использование такого же результата через API GitHub возможно, но будет несколько более сложным.

Для этого потребуется извлечь все коммиты из ветки, разбирая страницы на страницы через все результаты (для извлечения всех коммитов метаданных) при фильтрации тех, которые выставляют только один родительский node.

В качестве отправной точки следующий URL-адрес показывает последние 30 сообщений ветки vNext.

Ответ 2

Я использую следующий script:

git log --merges --first-parent master \
        --pretty=format:"%h %<(10,trunc)%an %<(15)%ar %s"

Объяснение каждого аргумента:

  • --merges: только "слияние" совершает (более одного родителя);
  • --first-parent master: только слияния применяются к master. Это удаляет записи, в которых кто-то слил master в свои ветки;
  • --pretty-format: применяется следующее форматирование:
    • %h: короткий хеш фиксации;
    • %<(10,trunc)%an: имя автора, усеченное на 10 символов;
    • %<(15)%ar: относительное время фиксации, добавленное до 15 символов;
    • %s: первая строка сообщения фиксации.

Результат довольно приятный:

490bccdc Jozeanne.. 6 hours ago     Merged in CL-303-validacoes-upload-sped (pull request #216)
d2fe3f5e Fábio      2 days ago      Merged in CL-336-novas-adaptacoes-captcha (pull request #218)
6c617b51 Jozeanne.. 3 days ago      Merged in CL-333-campos-pedido (pull request #215)