]> granicus.if.org Git - git/commitdiff
reset: don't compute unstaged changes after reset when --quiet
authorBen Peart <benpeart@microsoft.com>
Tue, 23 Oct 2018 19:04:21 +0000 (15:04 -0400)
committerJunio C Hamano <gitster@pobox.com>
Wed, 24 Oct 2018 02:57:07 +0000 (11:57 +0900)
When git reset is run with the --quiet flag, don't bother finding any
additional unstaged changes as they won't be output anyway.  This speeds up
the git reset command by avoiding having to lstat() every file looking for
changes that aren't going to be reported anyway.

The savings can be significant.  In a repo on Windows with 200K files
"git reset" drops from 7.16 seconds to 0.32 seconds for a savings of 96%.

Signed-off-by: Ben Peart <benpeart@microsoft.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
builtin/reset.c

index 6d37a35e2e583c4508b7e506e5307699ff166fb5..c2f8e72cb32d70b27b6b7e62de8ea87e1d07a5f5 100644 (file)
@@ -376,7 +376,7 @@ int cmd_reset(int argc, const char **argv, const char *prefix)
                        int flags = quiet ? REFRESH_QUIET : REFRESH_IN_PORCELAIN;
                        if (read_from_tree(&pathspec, &oid, intent_to_add))
                                return 1;
-                       if (get_git_work_tree())
+                       if (!quiet && get_git_work_tree())
                                refresh_index(&the_index, flags, NULL, NULL,
                                              _("Unstaged changes after reset:"));
                } else {