Re: [PATCH] Kill the useless progress meter in merge-recursive
- From
Junio C Hamano <junkio@cox.net>
- Date
- Apr 20, 2007, 08:21 UTC
- Message-ID
- <7vd51z317c.fsf@assigned-by-dhcp.cox.net>
- In-Reply-To
- <20070420063718.GA8424@spearce.org>
"Shawn O. Pearce" <spearce@spearce.org> writes:
Show 8 quoted lines
> The mess known as the progress meter in merge-recursive was my own > fault; I put it in thinking that we might be spending a lot of time > resolving unmerged entries in the index that were not handled by > the simple 3-way index merge code. > > Turns out we don't really spend that much time there, so the progress > meter was pretty much always jumping to "(n/n) 100%" as soon as > the program started. That isn't a very good indication of progress.
I would propose removing the progress meter for "Checking out files" in unpack-trees, for the same reason.
--- unpack-trees.c | 62 -------------------------------------------------------- 1 files changed, 0 insertions(+), 62 deletions(-)
diff --git a/unpack-trees.c b/unpack-trees.c index 5139481..1419653 100644 --- a/unpack-trees.c +++ b/unpack-trees.c @@ -288,73 +288,15 @@ static void unlink_entry(char *name) } } -static volatile sig_atomic_t progress_update; - -static void progress_interval(int signum) -{ - progress_update = 1; -} - -static void setup_progress_signal(void) -{ - struct sigaction sa; - struct itimerval v; - - memset(&sa, 0, sizeof(sa)); - sa.sa_handler = progress_interval; - sigemptyset(&sa.sa_mask); - sa.sa_flags = SA_RESTART; - sigaction(SIGALRM, &sa, NULL); - - v.it_interval.tv_sec = 1; - v.it_interval.tv_usec = 0; - v.it_value = v.it_interval; - setitimer(ITIMER_REAL, &v, NULL); -} - static struct checkout state; static void check_updates(struct cache_entry **src, int nr, struct unpack_trees_options *o) { unsigned short mask = htons(CE_UPDATE); - unsigned last_percent = 200, cnt = 0, total = 0; - - if (o->update && o->verbose_update) { - for (total = cnt = 0; cnt < nr; cnt++) { - struct cache_entry *ce = src[cnt]; - if (!ce->ce_mode || ce->ce_flags & mask) - total++; - } - - /* Don't bother doing this for very small updates */ - if (total < 250) - total = 0; - - if (total) { - fprintf(stderr, "Checking files out...\n"); - setup_progress_signal(); - progress_update = 1; - } - cnt = 0; - } while (nr--) { struct cache_entry *ce = *src++; - if (total) { - if (!ce->ce_mode || ce->ce_flags & mask) { - unsigned percent; - cnt++; - percent = (cnt * 100) / total; - if (percent != last_percent || - progress_update) { - fprintf(stderr, "%4u%% (%u/%u) done\r", - percent, cnt, total); - last_percent = percent; - progress_update = 0; - } - } - } if (!ce->ce_mode) { if (o->update) unlink_entry(ce->name); @@ -366,10 +308,6 @@ static void check_updates(struct cache_entry **src, int nr, checkout_entry(ce, &state, NULL); } } - if (total) { - signal(SIGALRM, SIG_IGN); - fputc('\n', stderr); - } } int unpack_trees(struct object_list *trees, struct unpack_trees_options *o)