Название в значительной степени говорит само за себя.
В локальном репо у меня есть папка .git, содержащая мои хуки. Я использую свой собственный исходный код Lua, чтобы записать текущую версию в файл внутри себя. Затем в хуке перед фиксацией у меня есть:
#!/bin/sh
#
# An example hook script to verify what is about to be committed.
# Called by "git commit" with no arguments. The hook should
# exit with non-zero status after issuing an appropriate message if
# it wants to stop the commit.
#
# To enable this hook, rename this file to "pre-commit".
echo "START" >> E:/Desktop/tmp.txt
exec $LUA_HOME\\lua.exe ${PWD}\\hooks\\pre-commit.lua "${PWD}/lua/autorun/trackassembly_init.lua" "Rev." > E:/Desktop/tmp.txt
У меня есть два файла. В первом я делаю фактические изменения (исходный файл). Второй я использую для записи текущей версии (файл версии).
Всякий раз, когда я использую TortoiseGit и делаю:
1) Modify the source file
2) Repo Directory --> Right Click --> Git Commit "master"
Информация об исходном файле добавляется в индексы, но нет следов измененного файла версии с новой версией внутри него. Это приводит к разнице между рабочей копией и файлом версии, и TortoiseGit помещает (!) в каталог.
Согласно руководству:
Хук предварительной фиксации запускается первым, еще до того, как вы наберете сообщение о коммите. Он используется для проверки моментального снимка, который должен быть зафиксирован, чтобы увидеть, не забыли ли вы что-то, чтобы убедиться, что тесты выполняются, или для проверки того, что вам нужно проверить в коде. Выход из этого хука, отличный от нуля, прерывает фиксацию