From: Antoine Pelisse <apelisse@gmail.com>
To: git@vger.kernel.org
Cc: Jay Soffian <jaysoffian@gmail.com>, Antoine Pelisse <apelisse@gmail.com>
Subject: [PATCH] merge: Honor prepare-commit-msg return code
Date: Wed, 2 Jan 2013 19:42:50 +0100 [thread overview]
Message-ID: <1357152170-5511-1-git-send-email-apelisse@gmail.com> (raw)
prepare-commit-msg hook is run when committing to prepare the log
message. If the exit-status is non-zero, the commit should be aborted.
While the script is run before committing a successful merge, the
exit-status is ignored and a non-zero exit doesn't abort the commit.
Abort the commit if prepare-commit-msg returns with a non-zero status
when committing a successful merge.
Signed-off-by: Antoine Pelisse <apelisse@gmail.com>
---
builtin/merge.c | 5 +++--
t/t7505-prepare-commit-msg-hook.sh | 13 +++++++++++++
2 files changed, 16 insertions(+), 2 deletions(-)
diff --git a/builtin/merge.c b/builtin/merge.c
index a96e8ea..3a31c4b 100644
--- a/builtin/merge.c
+++ b/builtin/merge.c
@@ -800,8 +800,9 @@ static void prepare_to_commit(struct commit_list *remoteheads)
if (0 < option_edit)
strbuf_add_lines(&msg, "# ", comment, strlen(comment));
write_merge_msg(&msg);
- run_hook(get_index_file(), "prepare-commit-msg",
- git_path("MERGE_MSG"), "merge", NULL, NULL);
+ if (run_hook(get_index_file(), "prepare-commit-msg",
+ git_path("MERGE_MSG"), "merge", NULL, NULL))
+ abort_commit(remoteheads, NULL);
if (0 < option_edit) {
if (launch_editor(git_path("MERGE_MSG"), NULL, NULL))
abort_commit(remoteheads, NULL);
diff --git a/t/t7505-prepare-commit-msg-hook.sh b/t/t7505-prepare-commit-msg-hook.sh
index 5b4b694..bc497bc 100755
--- a/t/t7505-prepare-commit-msg-hook.sh
+++ b/t/t7505-prepare-commit-msg-hook.sh
@@ -167,5 +167,18 @@ test_expect_success 'with failing hook (--no-verify)' '
'
+test_expect_success 'with failing hook (merge)' '
+
+ git checkout -B other HEAD@{1} &&
+ echo "more" >> file &&
+ git add file &&
+ chmod -x $HOOK &&
+ git commit -m other &&
+ chmod +x $HOOK &&
+ git checkout - &&
+ head=`git rev-parse HEAD` &&
+ test_must_fail git merge other
+
+'
test_done
--
1.8.1.rc3.27.g3b73c7d.dirty
next reply other threads:[~2013-01-02 18:43 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-01-02 18:42 Antoine Pelisse [this message]
2013-01-02 19:05 ` [PATCH] merge: Honor prepare-commit-msg return code Antoine Pelisse
2013-01-02 20:40 ` Junio C Hamano
2013-01-02 21:02 ` Antoine Pelisse
2013-01-02 21:21 ` Junio C Hamano
2013-01-03 17:33 ` Antoine Pelisse
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=1357152170-5511-1-git-send-email-apelisse@gmail.com \
--to=apelisse@gmail.com \
--cc=git@vger.kernel.org \
--cc=jaysoffian@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).