reset: don't compute unstaged changes after reset when --quiet
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>
Ben Peart committed
Oct 23, 2018 at 15:04 UTC
9ac8125d1ab83f1a0c48f6f30bb8fea92d9770d7
1 file changed
+1
-1
builtin/reset.c
+1
-1
@@ -376,7 +376,7 @@ int cmd_reset(int argc, const char **argv, const char *prefix)
376
int flags = quiet ? REFRESH_QUIET : REFRESH_IN_PORCELAIN;
377
if (read_from_tree(&pathspec, &oid, intent_to_add))
378
return 1;
379
- if (get_git_work_tree())
379
+ if (!quiet && get_git_work_tree())
380
refresh_index(&the_index, flags, NULL, NULL,
381
_("Unstaged changes after reset:"));
382
} else {