Легкий способ определить, является ли что-то «пройденным по ссылке», можно ли написать функцию «своп». Например, в C вы можете сделать:
void swap(int *i, int *j)
{
int t;
t = *i;
*i = *j;
*j = t;
}
Если вы не можете сделать эквивалент этого в Javascript, это не «передать по ссылке».
Возможно, я просто воспользуюсь крюком prepare-commit-msg
, чтобы добавить это в файл. Из (связанной) manpage:
Этот крюк вызывается git commit сразу после подготовки сообщения журнала по умолчанию и перед запуском редактора.
Требуется один три параметра. Первый - это имя файла, содержащего сообщение журнала фиксации. Второй - источник сообщения фиксации ... [сообщение, шаблон, слияние, сквош или фиксация] ...
Если статус выхода не равен нулю, git commit будет отменен.
Цель этого крючка - отредактировать файл сообщения на месте ...
blockquote>Вы можете получить текущую ветвь с
git symbolic-ref HEAD
.Вы можете просто обойти шаблоны в целом, и у вас есть hook preend / insert / append имя ветки. Простейший случай, добавление, сценарий - это просто строка shebang, затем
git symbolic-ref HEAD >> "$1"
. Используйте свой любимый метод, если вы хотите его встроить, - наиболее читаемый, чтобы переместить оригинал в сторону, написать и добавить, но метод, связанный в комментариях, тоже работает.Если вы предпочитаете использовать шаблон с заполнителями, вы можете просто сделать что-то вроде
sed -i "s/Bug : \$BUG/BUG : $(git symbolic-ref HEAD)/" "$1"
. Я уверен, что вы можете представить себе множество других вариантов.Возможно, вы захотите подавить это поведение для некоторых типов коммитов (этот второй аргумент) или даже включить его, только если второй аргумент «шаблон», если вы используете подход подстановки шаблонов.
Просто комментируя комментарии от ответа Джефроми, я получаю что-то вроде этого. Конечно, это может быть более жестким (если бы я знал, что я делаю):
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
Решение с использованием git-псевдонима, но без шаблона:
$ git config --global alias.com '!sh -c "bug=`git symbolic-ref HEAD|sed s#refs/heads/##`; git commit -em \"BUG: \${bug}\""'
$ git com
mv "$1" "$1.tmp"; git symbolic-ref 2> /dev/null > "$1"; cat "$1.tmp" >> "$1"; rm "$1.tmp"
– Cascabel 29 November 2010 в 22:54branch=$(git symbolic-ref HEAD|sed s#refs/heads/##) exec 3<> "$1" && awk -v TEXT="[$branch]" 'BEGIN {print TEXT}{print}' "$1" >&3
– Robert Munteanu 30 November 2010 в 08:59git rev-parse --abbrev-ref HEAD
позволит избежать необходимости в sed выше. – andygavin 4 January 2013 в 16:10