During a merge, we might spend many seconds doing inexact rename detection. It's nice to let the user know that something is actually happening. Signed-off-by: Jeff King <peff@xxxxxxxx> --- This feels wrong because it's in such a deep library function. At the very least we probably need some way to turn it off, so callers can pass along any --quiet or --no-progress indicators. Though I think it should perhaps be off entirely for any revision traversals (since the progress will be per-commit, so it will be in the middle of log output). And then on for diff (unless --quiet is given), and on for merge. I made it update progress for each of the rename_src * rename_dst similarity estimates. We could just as easily count rename_dst items we look at, but hey, it's eye candy, and obviously bigger numbers are better. diffcore-rename.c | 8 ++++++++ 1 files changed, 8 insertions(+), 0 deletions(-) diff --git a/diffcore-rename.c b/diffcore-rename.c index 1d3d5cd..136a86f 100644 --- a/diffcore-rename.c +++ b/diffcore-rename.c @@ -5,6 +5,7 @@ #include "diff.h" #include "diffcore.h" #include "hash.h" +#include "progress.h" /* Table of rename/copy destinations */ @@ -449,6 +450,7 @@ void diffcore_rename(struct diff_options *options) struct diff_score *mx; int i, j, rename_count; int num_create, num_src, dst_cnt; + struct progress *progress; if (!minimum_score) minimum_score = DEFAULT_RENAME_SCORE; @@ -528,6 +530,10 @@ void diffcore_rename(struct diff_options *options) goto cleanup; } + progress = start_progress_delay( + "Performing inexact rename detection", + rename_dst_nr * rename_src_nr, 50, 1); + mx = xcalloc(num_create * NUM_CANDIDATE_PER_DST, sizeof(*mx)); for (dst_cnt = i = 0; i < rename_dst_nr; i++) { struct diff_filespec *two = rename_dst[i].two; @@ -555,9 +561,11 @@ void diffcore_rename(struct diff_options *options) */ diff_free_filespec_blob(one); diff_free_filespec_blob(two); + display_progress(progress, i*rename_src_nr + j); } dst_cnt++; } + stop_progress(&progress); /* cost matrix sorted by most to least similar pair */ qsort(mx, dst_cnt * NUM_CANDIDATE_PER_DST, sizeof(*mx), score_compare); -- 1.7.4.1.26.g5e991 -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html