summaryrefslogtreecommitdiff
path: root/read-cache.c
diff options
context:
space:
mode:
authorJunio C Hamano <gitster@pobox.com>2018-10-19 04:34:03 (GMT)
committerJunio C Hamano <gitster@pobox.com>2018-10-19 04:34:03 (GMT)
commit4d87b38e6c1a73dbe744a30b9b3cdf88e69de7b4 (patch)
tree063642472b19f3d0e248f846df6bd14456622312 /read-cache.c
parente27bfaaee37c4c9d7e94f945f82c3e452d2dc071 (diff)
parentae9af12287b2c37512f12c137173dde7ea5192a0 (diff)
downloadgit-4d87b38e6c1a73dbe744a30b9b3cdf88e69de7b4.zip
git-4d87b38e6c1a73dbe744a30b9b3cdf88e69de7b4.tar.gz
git-4d87b38e6c1a73dbe744a30b9b3cdf88e69de7b4.tar.bz2
Merge branch 'nd/status-refresh-progress'
"git status" learns to show progress bar when refreshing the index takes a long time. * nd/status-refresh-progress: status: show progress bar if refreshing the index takes too long
Diffstat (limited to 'read-cache.c')
-rw-r--r--read-cache.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/read-cache.c b/read-cache.c
index 4c994e4..1df5c16 100644
--- a/read-cache.c
+++ b/read-cache.c
@@ -24,6 +24,7 @@
#include "utf8.h"
#include "fsmonitor.h"
#include "thread-utils.h"
+#include "progress.h"
/* Mask for the name length in ce_flags in the on-disk index */
@@ -1483,6 +1484,11 @@ int refresh_index(struct index_state *istate, unsigned int flags,
const char *typechange_fmt;
const char *added_fmt;
const char *unmerged_fmt;
+ struct progress *progress = NULL;
+
+ if (flags & REFRESH_PROGRESS && isatty(2))
+ progress = start_delayed_progress(_("Refresh index"),
+ istate->cache_nr);
trace_performance_enter();
modified_fmt = (in_porcelain ? "M\t%s\n" : "%s: needs update\n");
@@ -1523,6 +1529,8 @@ int refresh_index(struct index_state *istate, unsigned int flags,
new_entry = refresh_cache_ent(istate, ce, options, &cache_errno, &changed);
if (new_entry == ce)
continue;
+ if (progress)
+ display_progress(progress, i);
if (!new_entry) {
const char *fmt;
@@ -1554,6 +1562,10 @@ int refresh_index(struct index_state *istate, unsigned int flags,
replace_index_entry(istate, i, new_entry);
}
+ if (progress) {
+ display_progress(progress, istate->cache_nr);
+ stop_progress(&progress);
+ }
trace_performance_leave("refresh index");
return has_errors;
}