Игнорирование коммитов слияния для ловушки git prepare-commit-msg - PullRequest
1 голос
/ 30 мая 2019

Я придумал следующую ловушку git prepare-commit-msg:

#!/bin/sh

BRANCH=`git branch | grep '^*' | sed -e 's/^\* //'`
MESSAGE=`cat "$1"`
JIRA_ID=$(echo "$BRANCH" | grep -Eo "[A-Z0-9]{1,10}-?[A-Z0-9]+-\d+")

if [ -z "$JIRA_ID" ]; then
    echo "$MESSAGE" > "$1"
else
    echo "[$JIRA_ID] $MESSAGE" > "$1"
fi

Он выполняет свою работу, добавляя имя ветви (в форме BRANCH-123) к каждому сообщению фиксации. Однако я не хочу, чтобы это работало с коммитами слияния, которые имеют автоматически генерируемые сообщения коммитов s.a. Merge branch 'master' into BRANCH-123. Который с моим крючком превращается в BRANCH-123 Merge branch 'master' into BRANCH-123

Мне нужно отредактировать скрипт, чтобы как-то игнорировать (не применять ловушку) коммиты, начиная с Merge branch.

1 Ответ

3 голосов
/ 30 мая 2019

Как сказано в документе prepare-commit-msg ,

Требуется от одного до трех параметров. Первое имя файла который содержит сообщение журнала фиксации. Второй источник зафиксировать сообщение и может быть: message (если была задана опция -m или -F); шаблон (если была задана опция -t или опция конфигурации commit.template установлен); слияние (если коммит является слиянием или файл .git / MERGE_MSG существует); сквош (если файл .git / SQUASH_MSG существует); или commit, сопровождаемый коммитом SHA-1 (если -c, -C или --amend вариант был предоставлен).

Мы можем проверить второй параметр и выйти с 0, если он merge:

#!/bin/bash

COMMIT_MSG_FILE=$1
COMMIT_SOURCE=$2
SHA1=$3

if [ "${COMMIT_SOURCE}" = merge ];then
    exit 0
fi
...