Можно ли запустить перехват git commit-msg поверх последних коммитов? - PullRequest
5 голосов
/ 22 октября 2011

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

$ git rebase --interactive $commit_parent

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

Как я могу автоматизировать это?Крюк не требует надзора.

Ответы [ 2 ]

3 голосов
/ 15 июля 2012

Это может быть достигнуто автоматически с помощью пользовательского редактора:

#!/bin/bash
# Save to rebase_editor.sh, chmod +x it
file="$1"
if head -n1 "$file" | egrep -q '^pick' "$file" ; then
  perl -pi -e 's/^pick/r/' "$file"
fi

и затем работает:

GIT_EDITOR=./rebase_editor.sh git rebase -i <some-rev>

При первом вызове наш «редактор» получит список коммитов от rebase -i, где он будет меняться каждые pick до r (то есть reword). В этом режиме git немедленно начнет вызывать нашего «редактора» с сообщением о каждой перебазированной фиксации (и без каких-либо пауз, которые он обычно делает в режиме pick, где вы можете изменить сам коммит).

0 голосов
/ 04 июля 2012

Полагаю, это очень просто, учитывая описание ловушки на man-странице "hooks":

It takes a single parameter, the name of the file
that holds the proposed commit log message.

Просто запустите скрипт hooks для каждого коммита:

git rev-list HEAD |while read h; do
    git show --format='%B' $h > tmp && sh .git/hooks/commit-msg.sample tmp
done
rm tmp
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...