path: root/templates
diff options
authorMichael J Gruber <>2019-08-07 18:57:07 (GMT)
committerJunio C Hamano <>2019-08-07 19:37:33 (GMT)
commit6098817fd7f64209664c701df30096dc0f4fb876 (patch)
treebda0487dbaa09b8f8f53021784ce2087bd348914 /templates
parenta1f3dd7eb303d924f90da30808f7702869430321 (diff)
git-merge: honor pre-merge-commit hook
git-merge does not honor the pre-commit hook when doing automatic merge commits, and for compatibility reasons this is going to stay. Introduce a pre-merge-commit hook which is called for an automatic merge commit just like pre-commit is called for a non-automatic merge commit (or any other commit). [js: * renamed hook from "pre-merge" to "pre-merge-commit" * only discard the index if the hook is actually present * expanded githooks documentation entry * clarified that hook should write messages to stderr * squashed test changes from the original series' patch 4/4 * modified tests to follow new pattern from this series' patch 1/4 * added a test case for non-executable merge hooks * added a test case for failed merges * when testing that the merge hook did not run, make sure we actually have a merge to perform (by resetting the "side" branch to its original state). * reworded commit message ] Improved-by: Martin Ågren <> Signed-off-by: Michael J Gruber <> Signed-off-by: Martin Ågren <> Signed-off-by: Josh Steadmon <> Signed-off-by: Junio C Hamano <>
Diffstat (limited to 'templates')
1 files changed, 13 insertions, 0 deletions
diff --git a/templates/hooks--pre-merge-commit.sample b/templates/hooks--pre-merge-commit.sample
new file mode 100755
index 0000000..399eab1
--- /dev/null
+++ b/templates/hooks--pre-merge-commit.sample
@@ -0,0 +1,13 @@
+# An example hook script to verify what is about to be committed.
+# Called by "git merge" with no arguments. The hook should
+# exit with non-zero status after issuing an appropriate message to
+# stderr if it wants to stop the merge commit.
+# To enable this hook, rename this file to "pre-merge-commit".
+. git-sh-setup
+test -x "$GIT_DIR/hooks/pre-commit" &&
+ exec "$GIT_DIR/hooks/pre-commit"