git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* Be more verbose when checkout takes a long time
@ 2008-02-23 21:36 Linus Torvalds
  2008-02-23 22:20 ` Junio C Hamano
  0 siblings, 1 reply; 7+ messages in thread
From: Linus Torvalds @ 2008-02-23 21:36 UTC (permalink / raw)
  To: Junio C Hamano, Git Mailing List


So I find it irritating when git thinks for a long time without telling me 
what's taking so long. And by "long time" I definitely mean less than two 
seconds, which is already way too long for me.

This hits me when doing a large pull and the checkout takes a long time, 
or when just switching to another branch that is old and again checkout 
takes a while.

Now, git read-tree already had support for the "-v" flag that does nice 
updates about what's going on, but it was delayed by two seconds, and if 
the thing had already done more than half by then it would be quiet even 
after that, so in practice it meant that we migth be quiet for up to four 
seconds. Much too long.

So this patch changes the timeout to just one second, which makes it much 
more palatable to me.

The other thing this patch does is that "git checkout" now doesn't disable 
the "-v" flag when doing its thing, and only disables the output when 
given the -q flag. Quite frankly, I'm not really sure why it disabled 
error messages in the first place: it used to do

	merge_error=$(git read-tree .. 2>&1) || (
		case "$merge" in
		'')
			echo >&2 "$merge_error"
			exit 1 ;;
		...

which obviously meant that the "-v" flag was useless, because it was 
suppressed by the fact that any outpu just went to "merge_error" and then 
printed just once if we didn't do a merge.

Now, I'm sure this had a good reason (for the "git checkout -m" case), but 
it did make the common case of git-checkout really annoying. So I just 
removed that whole "suppress error messages from git-read-tree" thing. 
People who use -m all the time probably disagree with this patch. I dunno.

Anyway, with this I no longer get that annoying pregnant pause when doing 
big branch switches.

Comments?

		Linus

---
 git-checkout.sh |    3 +--
 unpack-trees.c  |    2 +-
 2 files changed, 2 insertions(+), 3 deletions(-)

diff --git a/git-checkout.sh b/git-checkout.sh
index bd74d70..4b07fc4 100755
--- a/git-checkout.sh
+++ b/git-checkout.sh
@@ -210,10 +210,9 @@ then
     git read-tree $v --reset -u $new
 else
     git update-index --refresh >/dev/null
-    merge_error=$(git read-tree -m -u --exclude-per-directory=.gitignore $old $new 2>&1) || (
+    git read-tree $v -m -u --exclude-per-directory=.gitignore $old $new || (
 	case "$merge" in
 	'')
-		echo >&2 "$merge_error"
 		exit 1 ;;
 	esac
 
diff --git a/unpack-trees.c b/unpack-trees.c
index ec558f9..0f62609 100644
--- a/unpack-trees.c
+++ b/unpack-trees.c
@@ -301,7 +301,7 @@ static void check_updates(struct cache_entry **src, int nr,
 		}
 
 		progress = start_progress_delay("Checking out files",
-						total, 50, 2);
+						total, 50, 1);
 		cnt = 0;
 	}
 

^ permalink raw reply related	[flat|nested] 7+ messages in thread

end of thread, other threads:[~2008-02-24  6:30 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2008-02-23 21:36 Be more verbose when checkout takes a long time Linus Torvalds
2008-02-23 22:20 ` Junio C Hamano
2008-02-23 22:32   ` Linus Torvalds
2008-02-23 22:37     ` Junio C Hamano
2008-02-23 23:42       ` Junio C Hamano
2008-02-23 23:45       ` [PATCH] checkout: error out when index is unmerged even with -m Junio C Hamano
2008-02-24  6:29         ` Daniel Barkalow

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).