git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH] git-fetch: follow tag only when tracking remote branch.

From
Junio C Hamano <junkio@cox.net>
Date
Feb 22, 2006, 21:12 UTC
Message-ID
<7vfymbm72x.fsf_-_@assigned-by-dhcp.cox.net>
In-Reply-To
<7vacckt6vr.fsf@assigned-by-dhcp.cox.net>

Unless --no-tags flag was given, git-fetch tried to always follow remote tags that point at the commits we picked up.

It is not very useful to pick up tags from remote unless storing the fetched branch head in a local tracking branch. This is especially true if the fetch is done to merge the remote branch into our current branch as one-shot basis (i.e. "please pull"), and is even harmful if the remote repository has many irrelevant tags.

This proposed update disables the automated tag following unless we are storing the a fetched branch head in a local tracking branch.

Signed-off-by: Junio C Hamano <junkio@cox.net>
---
 * Likes, dislikes?
 git-fetch.sh |   33 +++++++++++++++++++--------------
 1 files changed, 19 insertions(+), 14 deletions(-)
f41b73b4c2e0313d1638261ed87f0921e47904b2
diff --git a/git-fetch.sh b/git-fetch.sh
index b4325d9..fcc24f8 100755
--- a/git-fetch.sh
+++ b/git-fetch.sh
@@ -368,20 +368,25 @@ fetch_main "$reflist"
 # automated tag following
 case "$no_tags$tags" in
 '')
-	taglist=$(IFS=" " &&
-	git-ls-remote $upload_pack --tags "$remote" |
-	sed -ne 's|^\([0-9a-f]*\)[ 	]\(refs/tags/.*\)^{}$|\1 \2|p' |
-	while read sha1 name
-	do
-		test -f "$GIT_DIR/$name" && continue
-	  	git-check-ref-format "$name" || {
-			echo >&2 "warning: tag ${name} ignored"
-			continue
-		}
-		git-cat-file -t "$sha1" >/dev/null 2>&1 || continue
-		echo >&2 "Auto-following $name"
-		echo ".${name}:${name}"
-	done)
+	case "$reflist" in
+	*:refs/*)
+		# effective only when we are following remote branch
+		# using local tracking branch.
+		taglist=$(IFS=" " &&
+		git-ls-remote $upload_pack --tags "$remote" |
+		sed -ne 's|^\([0-9a-f]*\)[ 	]\(refs/tags/.*\)^{}$|\1 \2|p' |
+		while read sha1 name
+		do
+			test -f "$GIT_DIR/$name" && continue
+			git-check-ref-format "$name" || {
+				echo >&2 "warning: tag ${name} ignored"
+				continue
+			}
+			git-cat-file -t "$sha1" >/dev/null 2>&1 || continue
+			echo >&2 "Auto-following $name"
+			echo ".${name}:${name}"
+		done)
+	esac
 	case "$taglist" in
 	'') ;;
 	?*)
-- 
1.2.2.ga35e
Previous: Junio C HamanoNext: Andreas Ericsson
Message 8 of 10 in “How to not download objects more than needed?”
  1. Radoslaw SzkodzinskiFeb 21, 2006
  2. seanFeb 21, 2006
  3. Linus TorvaldsFeb 22, 2006
  4. Jan HarkesFeb 22, 2006
  5. Junio C HamanoFeb 22, 2006
  6. Jan HarkesFeb 22, 2006
  7. Junio C HamanoFeb 22, 2006
  8. git-fetch: follow tag only when tracking remote branch.Junio C Hamano, Feb 22, 2006
  9. Andreas EricssonFeb 22, 2006
  10. Junio C HamanoFeb 21, 2006

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.