Git предупреждать перед фиксацией, если строка появляется в источнике (или diff)
Я хотел бы быть предупрежденным при постановке ‡ в репо git
, если изменения, которые я собираюсь совершить, содержат определенную строку (например, @todo
или @hack
).
Может ли кто-нибудь показать мне, как это сделать?
† или предупреждены.
‡ или при фиксации.
Ответы
Ответ 1
Простой крюк предварительной фиксации, который проверяет, добавляется ли строка "@todo", может выглядеть так:
#!/bin/sh
. git-sh-setup # for die
git-diff-index -p -M --cached HEAD -- | grep '^+' |
grep @todo && die Blocking commit because string @todo detected in patch
Если это содержимое .git/hooks/pre-commit
и является исполняемым,
любой патч, который добавляет строку @todo
, будет отклонен.
Ответ 2
У вас может быть крючок pre-commit
, который ищет строку и блокирует (предупреждает) фиксацию.
Захват предварительной фиксации образца (под .git/hooks) должен начать работу.
Ответ 3
Для более общего и тщательного решения этого вопроса посмотрите Git Подтвердить:
![Asciinema Git Подтвердить демонстрацию]()
Ответ 4
zsh обеспечивает захват выполнения команды перед запуском, который может разрешить запуск какого-либо script, который будет допрашивать вашу фиксацию, grep-ing для @to-do или @hack и предупреждать вас перед выполнением фактического фиксации. Это сообщение (http://sebastiancelis.com/2009/11/16/zsh-prompt-git-users/) действительно связано с созданием фантастического приглашения git в zsh, но говорит об использовании предварительного исполнения команды крюк.