У меня есть ловушка предварительной фиксации, которая должна запускать собственный внутренний сканер для всех зафиксированных файлов.Этот сканер также поддерживается в своем собственном git-репо.Поэтому в файле ловушек я запускаю git clone ...
, чтобы убедиться, что используется последняя версия.Проблема, с которой я сталкиваюсь, заключается в том, что все команды git
после клона работают на клонированном репо, а не на той, для которой запущен хук.В результате я не могу получить список обновленных файлов.Кроме того, ловушка всегда терпит неудачу с:
ошибка: неверный объект ...
ошибка: ошибка построения деревьев
Где перечисленный неверный объект взят из клонированногорепо.
Я убедился, что клонирую в совершенно другой каталог.Я также установил переменные окружения GIT_TRACE
и GIT_TRACE_SETUP
перед фиксацией.Я вижу, что все значения git_dir, worktree и cwd соответствуют ожиданиям.Сначала они устанавливаются на первое репо, затем на клонированное репо во время процесса клонирования, а затем возвращаются к первому репо после завершения клона.
Как только я удаляю git clone
, крюк запускается беззаминка.
Я использую git версии 2.11.0.
Почему клон наносит такой большой ущерб и как я могу предотвратить это?