Kevin Willford <kcwillford@xxxxxxxxx> 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 <kewillf@xxxxxxxxxxxxx> > --- 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"));