Почему мой git pre-commit hook не исполняется по умолчанию?
Если вы видите принятый ответ в:
агрегирование и уродование javascript в Git pre-commit hook, вы увидите, что мне пришлось сделать chmod +x
на моем крючке предварительной фиксации, чтобы заставить его работать.
почему это не исполняется Git по умолчанию?
2 ответов
потому что файлы по умолчанию не исполняются; они должны быть установлены как исполняемые.
примеры файлов из git init
все исполняемые файлы; если он скопирован или переименован в файл без образца, он сохранитx
флаг.
новые файлы будут созданы с текущими значениями по умолчанию. В вашем случае просмотрите эти значения по умолчанию с помощью umask
:
$ umask
0022
по умолчанию, новые файлы не будут u+x
если явно не установлено значение be.
мне пришлось сделать
chmod +x
на моем крючке предварительной фиксации, чтобы заставить его работать
проблема заключается в том, чтобы понять, что он не был исполняемым в первую очередь.
Это будет проще с Git 2.15.x / 2.16 (Q1 2018)
посмотреть совершить f805a00 (06 окт 2017) by Дэмиен Marié (mdamien
).
(слитый Junio C Hamano -- gitster
-- на совершить 130b512, 06 ноября 2017)
run-command
: добавить подсказку, когда крюк игнорируетсякогда крюк присутствует, но файл не установлен как исполняемый файл, тогда git будет игнорировать крюк.
пока это молчание, которое может сбивать с толку.эта фиксация добавляет Это предупреждение, чтобы улучшить ситуацию:
hint: The 'pre-commit' hook was ignored because it's not set as executable.
hint: You can disable this warning with `git config advice.ignoredHook false`
чтобы разрешить старый вариант использования включения / отключения крючков через флаг исполняемого файла, новая настройка введено:
advice.ignoredHook
.