2010-07-23 3 views
2

Я пишу git-крючок, чтобы работать на фиксации в основной ветке. Мне нужно, чтобы он разбирался и искал какой-то текст в сообщении о фиксации. Как ссылаться на сообщение commit в моем сценарии bash?git hooks bash - получение сообщения о фиксации

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

Пожалуйста, спасибо.

+0

Я запутался в том, что «отменил их локальные коммиты и передал основную ветку, когда они исправили ошибку или что-то в этом роде» - означает ли это, что только эти нечастые коммиты должны быть проверены или что другие вещи должны проверяться только тогда, когда они объединяются для освоения? (И действительно, исправления часто должны быть на своих ветвях по темам.) – Cascabel

+0

необходимо проверить только редкие коммиты. – myusuf3

ответ

2

Ответ немного зависит от того, что вы пытаетесь сделать с сообщением фиксации. Есть три крючка вы можете спросить о:

  • prepare-commit-msg запускается сразу же после того, как сообщение по умолчанию получают, прежде чем пользователь редактирует его. Первый аргумент - это имя файла с сообщением фиксации. (Второй аргумент указывает, откуда взялось сообщение.)

  • commit-msg запускается после того, как сообщение фиксации отредактировано/завершено, но до совершения совершения. Если вы хотите скомпрометировать коммит, если сообщение фиксации пользователя плохо, или изменить сообщение, вы хотите это, а единственный аргумент - имя файла с сообщением фиксации.

  • post-commit запускается после фиксации. У него нет аргументов, но вы можете получить сообщение от git log -n 1 HEAD (возможно, с --format=format:%s%n%b или некоторыми такими). Если все, что вы хотите сделать, это искать что-то в сообщении и уведомлять на нем, вы должны использовать это.

Весь этот материал взят из githooks manpage

Что касается запуска его только на главной ветви, все, что вам нужно, это что-то вроде:

if [ "$(git symbolic-ref HEAD)" == "refs/head/master" ]; then 
    # do your stuff 
fi 
2

С помощью следующей команды:

cat $ 1

напечатает ваше сообщение фиксации в commit-msg

Смежные вопросы