Включение текущего имени ветки в шаблон фиксации - PullRequest
21 голосов
/ 03 ноября 2010

У меня есть шаблон коммита, настроенный для git, и я хотел бы включить в него имя текущей ветви.Я обычно настраиваю ветку как идентификатор ошибки, и это поможет мне заполнить шаблон, такой как:

Bug : $BUG

Как я могу выполнить такую ​​замену с помощью шаблона комментариев git?

Ответы [ 3 ]

19 голосов
/ 03 ноября 2010

Я бы, вероятно, просто использовал хук prepare-commit-msg, чтобы добавить это в файл.С (связанной) man-страницы:

Эта ловушка вызывается git commit сразу после подготовки сообщения журнала по умолчанию и до запуска редактора.

Требуется от одного до трех параметров,Первым является имя файла, который содержит сообщение журнала фиксации.Вторым является источник сообщения о коммите ... [message, template, merge, squash или commit] ...

Если статус выхода не равен нулю, git commit будет прерван.

Цель ловушки - отредактировать файл сообщения на месте ...

Вы можете получить текущую ветку с помощью git symbolic-ref HEAD.

Вы можете просто обойти шаблоныв целом, и имейте хук prepend / insert / append имя ветви.В простейшем случае, добавив, скрипт - это просто строка Шебанга, тогда git symbolic-ref HEAD >> "$1".Используйте ваш любимый метод, если вы хотите встроить его - наиболее читаемый, чтобы переместить оригинал в сторону, написать и добавить, но метод, связанный с комментариями, безусловно, тоже работает.

Если вы предпочитаете использовать шаблонс заполнителями вы можете просто сделать что-то вроде sed -i "s/Bug : \$BUG/BUG : $(git symbolic-ref HEAD)/" "$1".Я уверен, что вы можете представить множество других вариантов.

Возможно, вы захотите подавить это поведение для некоторых типов коммитов (этот второй аргумент) или даже включить его, только если второй аргумент ""шаблон ", если вы используете шаблонный подход замены.

2 голосов
/ 26 октября 2011

Решение с использованием псевдонима git, но без шаблона:

$ git config --global alias.com '!sh -c "bug=`git symbolic-ref HEAD|sed s#refs/heads/##`; git commit -em \"BUG: \${bug}\""'
$ git com
0 голосов
/ 30 ноября 2010

Просто собрав комментарии из ответа Джефроми, я получаю нечто подобное.Конечно, это может быть труднее (если бы я знал, что я делаю):

tempFile='/tmp/git-commit-template'
git config commit.template "$tempFile"
rm $tempFile
branch=$(git symbolic-ref HEAD|sed s#refs/heads/##) exec 3<> "$tempFile" && awk -v TEXT="[$branch]" 'BEGIN {print TEXT}{print}' "$tempFile" >&3
git add .
git commit -a
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...