Убедитесь, что комментарии коммитов github PR Squash Merge содержат идентификатор проблемы - PullRequest
3 голосов
/ 05 марта 2019

Как я могу обеспечить комментирование комментариев слияния github PR в сквош, содержащего необходимый текст?

Мы используем Jira + Github, и если использование вводит идентификаторы проблем Jira в комментариях к коммитам, эти коммиты становятся связанными с проблемами Jira.

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

Если пользователь забывает ввести их при объединении PR, становится больно редактировать коммит и добавлять текст к сообщению.

Есть ли проверка состояния или фиксация сообщения, которые я могу использовать в PR, чтобы убедиться, что должно быть что-то, похожее на Jira ID? (AAA-111)

Ответы [ 2 ]

3 голосов
/ 05 марта 2019

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

Для этого коллегам необходимо включить в свои .git/hooks каталог файла с именем commit-msg со следующим содержимым:

#!/bin/bash
current_branch="$(git rev-parse --abbrev-ref HEAD)"
tmp=$(mktemp) || exit
echo "$current_branch $(cat "$1")" > "$tmp"
mv "$tmp" "$1"

Затем, когда кто-то совершает коммит в ветви функций ABC-1234-customers-cant-log-in, команда коммитов выглядит так:

git commit -m "Awesome changes"

... фактически выдаст следующее сообщение о коммите:

ABC-1234-customers-cant-log-in Awesome changes

... и JIRA затем свяжет коммит с проблемой.

Мы внедрили эту политику в моеми у него есть несколько преимуществ:

  • больше не нужно забывать номера выпусков JIRA в сообщениях о фиксации
  • выигрыш времени
  • немного проще анализировать сообщения о фиксации, когда вам это нужно

(Как обозначение, этот автоматизированный beahviour также может быть отключен по требованию, с git commit -n)

* (обратите внимание, что эти два решения не являются взаимоисключающими.На самом деле, йоВы вполне могли бы хотеть и то, и другое: Adil для целостности удаленного репо, и это для эффективности локального использования)

2 голосов
/ 05 марта 2019

Если вы используете GitHub Enterprise, вы можете настроить ловушку предварительного получения для отклонения коммитов, в которых нет номера билета JIRA.

Посмотрите пример здесь :

#!/bin/bash
#
# check commit messages for JIRA issue numbers formatted as [JIRA-<issue number>]

REGEX="\[JIRA\-[0-9]*\]"

ERROR_MSG="[POLICY] The commit doesn't reference a JIRA issue"

while read OLDREV NEWREV REFNAME ; do
  for COMMIT in `git rev-list $OLDREV..$NEWREV`;
  do
    MESSAGE=`git cat-file commit $COMMIT | sed '1,/^$/d'`
    if ! echo $MESSAGE | grep -iqE "$REGEX"; then
      echo "$ERROR_MSG: $MESSAGE" >&2
      exit 1
    fi
  done
done
exit 0
...