git: Add post-rewrite hook that invokes git submodule update

git rebase does not support a --recurse-submodules switch to automatically
check out the submodules at their registered commits during or after a rebase.

Instead, let's use the post-rewrite git hook to do this ourselves.
This commit is contained in:
Daan De Meyer 2024-04-10 14:35:20 +02:00
parent 8bc9232636
commit f1e9e8041c
3 changed files with 20 additions and 5 deletions

View file

@ -21,6 +21,8 @@ git correctly (running `meson` will run these commands for you automatically):
$ git config submodule.recurse true
$ git config fetch.recurseSubmodules on-demand
$ git config push.recurseSubmodules no
$ cp .git/hooks/pre-commit.sample .git/hooks/pre-commit
$ cp tools/git-post-rewrite-hook.sh .git/hooks/post-rewrite
```
When adding new functionality, tests should be added. For shared functionality

4
tools/git-post-rewrite-hook.sh Executable file
View file

@ -0,0 +1,4 @@
#!/bin/sh
# SPDX-License-Identifier: LGPL-2.1-or-later
exec git submodule update

View file

@ -10,10 +10,19 @@ if [ -e .git ]; then
git config push.recurseSubmodules no
fi
if [ ! -f .git/hooks/pre-commit.sample ] || [ -f .git/hooks/pre-commit ]; then
exit 2 # not needed
ret=2
if [ -f .git/hooks/pre-commit.sample ] && [ ! -f .git/hooks/pre-commit ]; then
cp -p .git/hooks/pre-commit.sample .git/hooks/pre-commit
chmod +x .git/hooks/pre-commit
echo 'Activated pre-commit hook'
ret=0
fi
cp -p .git/hooks/pre-commit.sample .git/hooks/pre-commit
chmod +x .git/hooks/pre-commit
echo 'Activated pre-commit hook'
if [ ! -f .git/hooks/post-rewrite ]; then
cp -p tools/git-post-rewrite-hook.sh .git/hooks/post-rewrite
echo 'Activated post-rewrite hook'
ret=0
fi
exit $ret