On Wed, Mar 23, 2011 at 02:25:02PM -0700, Junio C Hamano wrote: > > This makes sense for "show", which is showing a single diff, > > since the progress reporting will be shown before the pager > > shows any output. > > > > We don't want to do the same for "log", though, because the > > progress would be interspersed with the various commits. > > I understand that you said q&d, but these days since f222abd (Make 'git > show' more useful, 2009-07-13), show does walk when it is asked to. > > "git show master maint" will also be affected with this, no? Ick, I didn't think of that. So yeah, that patch as-is is definitely no good. I think the most sensible thing to do is to show progress only until we actually generate some output. That handles both the walking case and the "git show master maint" case. Something like this: diff --git a/builtin/log.c b/builtin/log.c index 707fd57..d652acc 100644 --- a/builtin/log.c +++ b/builtin/log.c @@ -265,13 +265,16 @@ static int cmd_log_walk(struct rev_info *rev) * retain that state information if replacing rev->diffopt in this loop */ while ((commit = get_revision(rev)) != NULL) { - if (!log_tree_commit(rev, commit) && + int showed = log_tree_commit(rev, commit); + if (showed && rev->max_count >= 0) /* * We decremented max_count in get_revision, * but we didn't actually show the commit. */ rev->max_count++; + if (showed && rev->diffopt.show_rename_progress) + rev->diffopt.show_rename_progress = 0; if (!rev->reflog_info) { /* we allow cycles in reflog ancestry */ free(commit->buffer); @@ -416,6 +419,7 @@ int cmd_show(int argc, const char **argv, const char *prefix) rev.diff = 1; rev.always_show_header = 1; rev.no_walk = 1; + rev.diffopt.show_rename_progress = 1; memset(&opt, 0, sizeof(opt)); opt.def = "HEAD"; opt.tweak = show_rev_tweak_rev; We could also turn it on for "git log" in that case, though it is only useful if the first commit happens to be the one that is slow. I should also turn it on for "git diff". I'll prepare a cleaner series with that in it, too. What about the degrade-cc-to-c warnings? Are you working on another revision, or should I re-roll your changes on top of my series, handling the "one-warning-per-commit" behavior I suggested when stdout and stderr are combined? -Peff -- 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