Re: [PATCH 3/3] show: turn on rename progress

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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


[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]