When a commit is amended a pre-commit hook that verifies the commit's contents might not find what it's looking for if for example it looks at the differences against HEAD when HEAD~1 might be more appropriate. Inform the commit hook that --amend is being used so that hook authors can do e.g. if test "$1" = amend then ... else ... fi to handle these situations. Signed-off-by: Øystein Walle <oystwa@xxxxxxxxx> --- Documentation/githooks.txt | 3 ++- builtin/commit.c | 3 ++- t/t7503-pre-commit-hook.sh | 14 ++++++++++++++ 3 files changed, 18 insertions(+), 2 deletions(-) diff --git a/Documentation/githooks.txt b/Documentation/githooks.txt index 9ef2469..e113027 100644 --- a/Documentation/githooks.txt +++ b/Documentation/githooks.txt @@ -73,7 +73,8 @@ pre-commit ~~~~~~~~~~ This hook is invoked by 'git commit', and can be bypassed -with `--no-verify` option. It takes no parameter, and is +with `--no-verify` option. It takes one parameter which is "amend" if +`--amend` was used when committing and empty otherwise. It is invoked before obtaining the proposed commit log message and making a commit. Exiting with non-zero status from this script causes the 'git commit' to abort. diff --git a/builtin/commit.c b/builtin/commit.c index e108c53..e38dd4a 100644 --- a/builtin/commit.c +++ b/builtin/commit.c @@ -694,7 +694,8 @@ static int prepare_to_commit(const char *index_file, const char *prefix, /* This checks and barfs if author is badly specified */ determine_author_info(author_ident); - if (!no_verify && run_commit_hook(use_editor, index_file, "pre-commit", NULL)) + if (!no_verify && run_commit_hook(use_editor, index_file, + "pre-commit", amend ? "amend" : "", NULL)) return 0; if (squash_message) { diff --git a/t/t7503-pre-commit-hook.sh b/t/t7503-pre-commit-hook.sh index 984889b..be97676 100755 --- a/t/t7503-pre-commit-hook.sh +++ b/t/t7503-pre-commit-hook.sh @@ -136,4 +136,18 @@ test_expect_success 'check the author in hook' ' git show -s ' +# a hook that checks if "amend" is passed as an argument +cat > "$HOOK" <<EOF +#!/bin/sh +test "\$1" = amend +EOF + +test_expect_success 'check that "amend" argument is given' ' + git commit --amend --allow-empty +' + +test_expect_success 'check that "amend" argument is NOT given' ' + ! git commit --allow-empty +' + test_done -- 2.0.3 -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html