Kevin Willford <[email protected]> writes:
> If there is not a pre-commit hook, there is no reason to discard
> the index and reread it.
>
> This change checks to presence of a pre-commit hook and then only
> discards the index if there was one.
>
> Signed-off-by: Kevin Willford <[email protected]>
> ---
Peff already has done a good job reviewing the patch text, and I
agree that this is a worthwhile optimization.
Could Microsoft folks all make sure that their signed-off-by lines
match their From: address (or leave an in-body From: to override
the From: address your MUA places in your messages)?
Thanks.
> builtin/commit.c | 29 +++++++++++++++++++++--------
> 1 file changed, 21 insertions(+), 8 deletions(-)
>
> diff --git a/builtin/commit.c b/builtin/commit.c
> index e7a2cb6285..443949d87b 100644
> --- a/builtin/commit.c
> +++ b/builtin/commit.c
> @@ -671,12 +671,22 @@ static int prepare_to_commit(const char *index_file,
> const char *prefix,
> const char *hook_arg2 = NULL;
> int clean_message_contents = (cleanup_mode != CLEANUP_NONE);
> int old_display_comment_prefix;
> + const char *precommit_hook = NULL;
>
> /* 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))
> - return 0;
> +
> + if (!no_verify) {
> + /*
> + * Check to see if there is a pre-commit hook
> + * If there not one we can skip discarding the index later on
> + */
> + precommit_hook = find_hook("pre-commit");
> + if (precommit_hook &&
> + run_commit_hook(use_editor, index_file, "pre-commit", NULL))
> + return 0;
> + }
>
> if (squash_message) {
> /*
> @@ -940,12 +950,15 @@ static int prepare_to_commit(const char *index_file,
> const char *prefix,
> return 0;
> }
>
> - /*
> - * Re-read the index as pre-commit hook could have updated it,
> - * and write it out as a tree. We must do this before we invoke
> - * the editor and after we invoke run_status above.
> - */
> - discard_cache();
> + if (!no_verify && precommit_hook) {
> + /*
> + * Re-read the index as pre-commit hook could have updated it,
> + * and write it out as a tree. We must do this before we invoke
> + * the editor and after we invoke run_status above.
> + */
> + discard_cache();
> + }
> +
> read_cache_from(index_file);
> if (update_main_cache_tree(0)) {
> error(_("Error building trees"));