[PATCH 2/2] commit: inform pre-commit that --amend was used
- From
Øystein Walle <oystwa@gmail.com>
- Date
- Nov 25, 2014, 22:51 UTC
- Message-ID
- <b9ef551633329702559e4cee6528b68ab757b531.1416955873.git.oystwa@gmail.com>
- In-Reply-To
- <cover.1416953772.git.oystwa@gmail.com>
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
...
fito handle these situations.
Signed-off-by: Øystein Walle <oystwa@gmail.com> --- 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