]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
git: Add post-rewrite hook that invokes git submodule update 32204/head
authorDaan De Meyer <daan.j.demeyer@gmail.com>
Wed, 10 Apr 2024 12:35:20 +0000 (14:35 +0200)
committerDaan De Meyer <daan.j.demeyer@gmail.com>
Wed, 10 Apr 2024 12:39:49 +0000 (14:39 +0200)
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.

docs/HACKING.md
tools/git-post-rewrite-hook.sh [new file with mode: 0755]
tools/git-setup.sh

index 33d32c91197ea8c87da7638220d3fac93aab3be8..2a58780fbf513003b7df2ca7133374fb8af81d4d 100644 (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
diff --git a/tools/git-post-rewrite-hook.sh b/tools/git-post-rewrite-hook.sh
new file mode 100755 (executable)
index 0000000..78feb9d
--- /dev/null
@@ -0,0 +1,4 @@
+#!/bin/sh
+# SPDX-License-Identifier: LGPL-2.1-or-later
+
+exec git submodule update
index 4b49ab9c45f9d48547b93d3827038809b0550bfe..a53f1790c17a7ae2d2a233a3d351abbc732d7762 100755 (executable)
@@ -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
+
+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
 
-cp -p .git/hooks/pre-commit.sample .git/hooks/pre-commit
-chmod +x .git/hooks/pre-commit
-echo 'Activated pre-commit hook'
+exit $ret