When a commit is amended a pre-commit hook that verifies the commit's contents might not find what it's looking for if 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 | 11 +++++++++++ 3 files changed, 15 insertions(+), 2 deletions(-) diff --git a/Documentation/githooks.txt b/Documentation/githooks.txt index 9ef2469..fb3e71e 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 "noamend" if not. 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..f9e5d27 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" : "noamend", NULL)) return 0; if (squash_message) { diff --git a/t/t7503-pre-commit-hook.sh b/t/t7503-pre-commit-hook.sh index 99ed967..b400afe 100755 --- a/t/t7503-pre-commit-hook.sh +++ b/t/t7503-pre-commit-hook.sh @@ -133,4 +133,15 @@ test_expect_success 'check the author in hook' ' git show -s ' +# a hook that checks if "amend" is passed as an argument +write_script "$HOOK" <<EOF +test "\$1" = amend +EOF + +test_expect_success 'check that "amend" argument is given' ' + git commit --amend --allow-empty +' + +test_must_fail git commit --allow-empty + test_done -- 2.2.0.rc3 -- 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