Я работаю над проектом, содержащим подмодуль и подмодуль одновременно. Поскольку они постоянно создаются локально, мне нужно обновлять подмодуль по крайней мере при каждой фиксации, которую я делаю внутри него.
Вот хук post-commit
, вдохновленный этим сообщением о хуках и этот пост о подмодулях, а также это для очистки окружения и для отладки
это уже рабочее решение, но если есть способ получше, я приму ответ.
#!/bin/sh
### functions
exec_push()
{
ping -c 1 heise.de 2>&1 >> /dev/null # check connectivity
PING_RESULT=$?
if [ $PING_RESULT -eq "0" ]
then
git push --recurse-submodules=on-demand --quiet
else
echo "sorry no internet connectivity"
exit 1
fi
}
### end functions
echo "post-commit started"
branch="$(git rev-parse --abbrev-ref HEAD)"
echo "running on branch $branch"
superproject="$(git rev-parse --show-superproject-working-tree)"
echo "running for superproject $superproject"
current_submodule="$(pwd)"
echo "adding submodule $current_submodule"
if [ "$branch" = "master" ]
then
exec_push
env -i git -C "$superproject" add .
fi
echo "post-commit finished"
вместо того, чтобы фиксировать изменение, он только этапирует их, поэтому они фиксируются при следующей полной фиксации.