Настройка политики сообщений git commit

Мы хотели бы убедиться, что каждое сообщение о фиксации имеет номер билета Jira в теме. Например, это должно быть что-то вроде "MA-12: Исправлена ​​проблема с...".

Я знаю, что это можно легко сделать на стороне клиента с помощью хука commit-msg. Но это не будет автоматически настроено для всех разработчиков. Есть ли способ сделать это на стороне сервера?

1 ответ

Решение

Вы можете установить хук обновления на стороне сервера, аналогично этому сценарию (автор Matthias Hryniszakpadcom):

Если полученное сообщение о фиксации не соответствует правильной политике, push-уведомление будет отклонено.

#!/bin/bash

refname="$1"
oldrev="$2"
newrev="$3"
result=0

# Make sure we handle the situation when the branch does not exist yet
if ! [ $oldrev = 0000000000000000000000000000000000000000 ] ; then
    excludes=( ^$oldrev )
else
    excludes=( $(git for-each-ref --format '^%(refname:short)' refs/heads/) )
fi

# Get the list of incomming commits
commits=`git rev-list $newrev "${excludes[@]}"`

# For every commit in the list
for commit in $commits
do
  # check the log message for ticket number
  message=`git log --format=%s -1 $commit`
  ticket=`echo "$message" | grep -o "^[A-Z]\{2,3\}-[0-9]\+"`
  if [ "$ticket" = "" ] ; then
    echo "Commit $commit does not start with a ticket number"
    result=1
  fi
done

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