Я пытался написать git hook, в .git / hooks / post-checkout:
Убедитесь, что вы правильно написали имя хука и что хук имеет исполняемый флаг (git
должен выдать вам предупреждение, если его нет).
В сценарии, который вы опубликовали, есть опечатка: в конце submodule
не должно быть s
. Может быть, это просто ошибка в том, что вы опубликовали, но если это в вашей реальной ловушке, вы должны увидеть сообщение об ошибке, когда ловушка запускается, и тот факт, что вы этого не делаете (а также, что ваш echo
не работает) предполагает что крюк не работает вообще.
Если у вас нет упомянутой выше опечатки и если echo
операторы в вашем хуке делают , то не удивительно, что вы не видите, как ваша строка git submodule update
делает что-то - что Команда не дает никакого вывода, если подмодули в вашем проекте уже соответствуют коммитам, которые указаны в ветке. Единственный раз, когда вы увидите вывод, есть ли субмодуль, который действительно нужно обновить. Также помните, что git submodule update
не получает последние версии подмодулей , а те, которые вы зафиксировали в своем проекте.
В общем, у вас есть правильная идея: вы определенно можете добавить хук с именем post-checkout
к .git/hooks/
, и он должен запускаться всякий раз, когда вы успешно git checkout
какая-то ветка.