Подтвердить что ты не робот

Git предупреждать перед фиксацией, если строка появляется в источнике (или diff)

Я хотел бы быть предупрежденным при постановке ‡ в репо git, если изменения, которые я собираюсь совершить, содержат определенную строку (например, @todo или @hack).

Может ли кто-нибудь показать мне, как это сделать?

† или предупреждены.
‡ или при фиксации.

4b9b3361

Ответ 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, но говорит об использовании предварительного исполнения команды крюк.