From: Daan De Meyer Date: Wed, 10 Apr 2024 12:35:20 +0000 (+0200) Subject: git: Add post-rewrite hook that invokes git submodule update X-Git-Tag: v256-rc1~235^2 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=f1e9e8041c3e83fe7cf0d5ae382448514f3be3e6;p=thirdparty%2Fsystemd.git 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. --- diff --git a/docs/HACKING.md b/docs/HACKING.md index 33d32c91197..2a58780fbf5 100644 --- a/docs/HACKING.md +++ b/docs/HACKING.md @@ -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 index 00000000000..78feb9dbbae --- /dev/null +++ b/tools/git-post-rewrite-hook.sh @@ -0,0 +1,4 @@ +#!/bin/sh +# SPDX-License-Identifier: LGPL-2.1-or-later + +exec git submodule update diff --git a/tools/git-setup.sh b/tools/git-setup.sh index 4b49ab9c45f..a53f1790c17 100755 --- a/tools/git-setup.sh +++ b/tools/git-setup.sh @@ -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