@matheusbsbs / matheus-bagliano / commits / e85486450e
Fork 0

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>

Linus Torvalds committed Feb 23, 2008 at 13:36 UTC e85486450eb0407ad0449d0214b97506d452407f
2 files changed +8 -5
git-checkout.sh
+7 -4
@@ -210,11 +210,14 @@ then
210 git read-tree $v --reset -u $new
211 else
212 git update-index --refresh >/dev/null
213 - merge_error=$(git read-tree -m -u --exclude-per-directory=.gitignore $old $new 2>&1) || (
214 - case "$merge" in
215 - '')
216 - echo >&2 "$merge_error"
213 + git read-tree $v -m -u --exclude-per-directory=.gitignore $old $new || (
214 + case "$merge,$v" in
215 + ,*)
216 exit 1 ;;
217 + 1,)
218 + ;; # quiet
219 + *)
220 + echo >&2 "Falling back to 3-way merge..." ;;
221 esac
222
223 # Match the index to the working tree, and do a three-way.
unpack-trees.c
+1 -1
@@ -301,7 +301,7 @@ static void check_updates(struct cache_entry **src, int nr,
301 }
302
303 progress = start_progress_delay("Checking out files",
304 - total, 50, 2);
304 + total, 50, 1);
305 cnt = 0;
306 }
307