Вы можете использовать pre-push
hook (начиная с git 1.8.2).
Ваш крюк предварительного толчка может проверить код выхода git status
, возвращая 0 (ОК, чтобы нажать), если git status
возвращает ненулевое значение, в противном случае возвращает 1 (не разрешать толчок).
Справочная страница для git-status
гласит:
Если между файлом индекса и текущим коммитом HEAD нет другого пути (т. Е. Нет ничего для фиксации при запуске git commit), команда завершается с ненулевым статусом.
Любое хранилище, созданное с помощью git 1.8.2 или новее, будет иметь pre-push.sample
в каталоге .git/hooks
, что является полезной отправной точкой для реализации вашей политики. Вот еще несколько хороших примеров использования хука pre-push
: http://blog.ittybittyapps.com/blog/2013/09/03/git-pre-push/
Имейте в виду, что перехватчик не работает в репозитории восходящего направления. Каждый клон должен иметь установленный хук, чтобы обеспечить соблюдение вашей политики. (Хуки не клонируются как часть репозитория. Поскольку git выполняет хуки, эта конструкция предотвращает запуск вредоносных хуков на компьютере разработчика. Вместо этого вредоносный код должен идти в скрипт Makefile или configure, который разработчики запускают, не просматривая.)