threads / discuss / 2587

Make "git fetch" less verbose by default

Subject: Make "git fetch" less verbose by default

## tl;dr

One message between Nov 18, 2005 and Nov 18, 2005.

replies: 0people: 1as markdown or json

Linus Torvalds· Nov 18, 2005, 16:31 UTC · lore
When doing something like
	git fetch --tags origin

the excessively verbose output of git fetch makes the result totally unreadable. It's impossible to tell if it actually fetched anything new or not, since the screen will fill up with an endless supply of

   ...
   * committish: 9165ec17fde255a1770886189359897dbb541012
     tag 'v0.99.7c' of master.kernel.org:/pub/scm/git/git
   * refs/tags/v0.99.7c: same as tag 'v0.99.7c' of master.kernel.org:/pub/scm/git/git
   ...
and any new tags that got fetched will be totally hidden.

So add a new "--verbose" flag to "git fetch" to enable this verbose mode, but make the default be quiet.

NOTE! The quiet mode will still report about new or changed heads, so if you are really fetching a new head, you'll see something like this:

   [torvalds@g5 git]$ git fetch --tags parent
   Packing 6 objects
   Unpacking 6 objects
    100% (6/6) done
   * refs/tags/v1.0rc2: storing tag 'v1.0rc2' of master.kernel.org:/pub/scm/git/git
   * refs/tags/v1.0rc3: storing tag 'v1.0rc3' of master.kernel.org:/pub/scm/git/git
   * refs/tags/v1.0rc1: storing tag 'v1.0rc1' of master.kernel.org:/pub/scm/git/git

which actually tells you something useful that isn't hidden by all the useless crud that you already had.

Extensively tested (hey, for me, this _is_ extensive) by doing a
   rm .git/refs/tags/v1.0rc*
and re-fetching with both --verbose and without. 

NOTE! This means that if the fetch didn't actually fetch anything at all, git fetch will be totally quiet. I think that's much better than being so verbose that you can't even tell whether something was fetched or not, but some people might prefer to get a "nothing to fetch" message in that case.

Signed-off-by: Linus Torvalds <torvalds@osdl.org>
---
diff --git a/git-fetch.sh b/git-fetch.sh
index 8564cbf..6586e77 100755
--- a/git-fetch.sh
+++ b/git-fetch.sh
@@ -12,6 +12,7 @@ IFS="$LF"
 tags=
 append=
 force=
+verbose=
 update_head_ok=
 while case "$#" in 0) break ;; esac
 do
@@ -30,6 +31,9 @@ do
 	--update-head-o|--update-head-ok)
 		update_head_ok=t
 		;;
+	-v|--verbose)
+		verbose=Yes
+		;;
 	*)
 		break
 		;;
@@ -91,12 +95,12 @@ append_fetch_head () {
     then
 	headc_=$(git-rev-parse --verify "$head_^0") || exit
 	echo "$headc_	$not_for_merge_	$note_" >>"$GIT_DIR/FETCH_HEAD"
-	echo >&2 "* committish: $head_"
-	echo >&2 "  $note_"
+	[ "$verbose" ] && echo >&2 "* committish: $head_"
+	[ "$verbose" ] && echo >&2 "  $note_"
     else
 	echo "$head_	not-for-merge	$note_" >>"$GIT_DIR/FETCH_HEAD"
-	echo >&2 "* non-commit: $head_"
-	echo >&2 "  $note_"
+	[ "$verbose" ] && echo >&2 "* non-commit: $head_"
+	[ "$verbose" ] && echo >&2 "  $note_"
     fi
     if test "$local_name_" != ""
     then
@@ -116,7 +120,7 @@ fast_forward_local () {
 	then
 		if now_=$(cat "$GIT_DIR/$1") && test "$now_" = "$2"
 		then
-			echo >&2 "* $1: same as $3"
+			[ "$verbose" ] && echo >&2 "* $1: same as $3"
 		else
 			echo >&2 "* $1: updating with $3"
 		fi

← back to recent threads