Хуки

Хуки (Hooks) — это пользовательские скрипты, которые Git может запустить при наступлении некоторых событий. Хуки бывают клиентские и серверные. Клиентские хуки, например, могут запускаться операциями слияния или создания коммита. Серверные хуки могут запускаться, например, операцией получения отправленного коммита.

Установить и настроить

Если 1C:EDT работает под управлением операционных систем Linux или macOS, то дополнительная настройка не требуется.

Если 1C:EDT работает под управлением операционной системы Windows, то необходимо, чтобы на компьютере был установлен Git: https://git-scm.com/ в рекомендуемом варианте: «Git from the command line and also from 3rd-party software».

Никаких дополнительных настроек не требуется, но если вы хотите проверить правильность установки и настройки, проконтролируйте следующие моменты:
  • В переменной среды PATH должен быть указан путь к каталогу cmd установленного Git, например, C:\Program Files\Git\cmd;
  • По этому пути должны существовать три файла:
    • git.exe
    • ../usr/bin/sh.exe
    • ../usr/bin/cygpath.exe
Как посмотреть значение переменной среды PATH (Windows 10)
  • Нажмите Пуск > Найти;
  • В строку поиска введите "изменение системных переменных среды";
  • Откройте найденный раздел панели управления
  • Нажмите Переменные среды...;
  • В таблице Системные переменные выделите переменную PATH;
  • Нажмите Изменить....

Файлы хуков

Хуки представляют собой текстовые файлы без расширения. Названия файлов фиксированы и обозначают события, при наступлении которых хук должен быть запущен. Содержимое файла это шелл-скрипт на одном из языков, например Perl или Unix shell.

Для того, чтобы Git мог запустить нужный хук, файл должен находиться в каталоге .git/hooks того локального репозитория, для которого он предназначен.

Git, после установки на компьютер, содержит набор демонстрационных хуков. При стандартной установке они расположены в каталоге C:\Program Files\Git\mingw64\share\git-core\templates\hooks и имеют расширение .sample.

При создании локального репозитория эти файлы автоматически копируются в каталог .git/hooks репозитория. Если этого не произошло, можно скопировать их вручную. Имена файлов совпадают с теми событиями, для обработки которых они предназначены. Чтобы файл начал использоваться для обработки события, нужно удалить у него расширение .sample.

1C:EDT поддерживает следующие клиентские хуки:

  1. pre-commit — запускается до того, как вы напечатаете сообщение коммита. Обычно используется для проверки данных перед созданием коммита;
  2. commit-msg — запускается перед созданием коммита. Имеет параметр — путь к временному файлу, содержащему сообщение коммита. Обычно используется для проверки, что сообщение коммита соответствует заданному шаблону;
  3. post-commit — запускается после того, как коммит создан. Обычно используется для уведомлений;
  4. pre-push — используется Git LFS для отправки LFS файлов на сервер при выполнении команды Отправить (Push). Этот хук создается автоматически во время настройки поддержки Git LFS. Вы может переопределить или дополнить этот хук, но это нежелательно.

Подробнее про хуки читайте здесь.

Проверка работы хуков

Чтобы проверить работу хуков можно скопировать в каталог .git/hooks репозитория хук-пример pre-commit.sample, удалить у него расширение, добавить в рабочий каталог файл с русским именем и попробовать зафиксировать эти изменения. В результате вы получите сообщение об ошибке:

>git add файл.txt
>git commit
Error: Attempt to add a non-ASCII file name.

This can cause problems if you want to work with people on other platforms.

To be portable it is advisable to rename the file.

If you know what you are doing you can disable this check using:

  git config hooks.allownonascii true