summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--docs/HACKING.md2
-rwxr-xr-xtools/git-post-rewrite-hook.sh4
-rwxr-xr-xtools/git-setup.sh19
3 files changed, 20 insertions, 5 deletions
diff --git a/docs/HACKING.md b/docs/HACKING.md
index 33d32c9119..2a58780fbf 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 0000000000..78feb9dbba
--- /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 4b49ab9c45..a53f1790c1 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