summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2008-02-23 21:36:08 (GMT)
committerJunio C Hamano <gitster@pobox.com>2008-02-24 18:01:13 (GMT)
commite85486450eb0407ad0449d0214b97506d452407f (patch)
tree43189c7f235bfbcb0f5cefdb86384307a6bfcc2b
parent9d561ad324fc8942919981f2c80360e22896989c (diff)
downloadgit-e85486450eb0407ad0449d0214b97506d452407f.zip
git-e85486450eb0407ad0449d0214b97506d452407f.tar.gz
git-e85486450eb0407ad0449d0214b97506d452407f.tar.bz2
Be more verbose when checkout takes a long time
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. When allowing "checkout -m" to fall back to a 3-way merge, the users will see the error message from straight "checkout", so we will tell them that we do fall back to make them look less scary. Signed-off-by: Junio C Hamano <gitster@pobox.com>
-rwxr-xr-xgit-checkout.sh11
-rw-r--r--unpack-trees.c2
2 files changed, 8 insertions, 5 deletions
diff --git a/git-checkout.sh b/git-checkout.sh
index bd74d70..1a7689a 100755
--- a/git-checkout.sh
+++ b/git-checkout.sh
@@ -210,11 +210,14 @@ 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) || (
- case "$merge" in
- '')
- echo >&2 "$merge_error"
+ git read-tree $v -m -u --exclude-per-directory=.gitignore $old $new || (
+ case "$merge,$v" in
+ ,*)
exit 1 ;;
+ 1,)
+ ;; # quiet
+ *)
+ echo >&2 "Falling back to 3-way merge..." ;;
esac
# Match the index to the working tree, and do a three-way.
diff --git a/unpack-trees.c b/unpack-trees.c
index 07c4c28..56c1ffb 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;
}