Thread (2 messages) flat view 2 messages, 2 authors, 2016-06-15

Re: [PATCH] git fetch one tag only

From: cheng renquan <hidden>
Date: 2016-06-15 22:54:01
Subsystem: the rest · Maintainer: Linus Torvalds

Possibly related (same subject, not in this thread)

On Thu, Jun 7, 2012 at 10:08 AM, Junio C Hamano [off-list ref] wrote:
 * The auto-follow kicks in whenever you tell "fetch" to update some
  refs locally.  Maybe if we tweak the rule and auto-follow kick in
  only when you tell "fetch" to update some refs outside refs/tags
  locally,

       $ git fetch $over_there tag v1.0.0

  will fetch and store _only_ the v1.0.0 tag.

  Of course, any behaviour change is a regression, and if done
  without an escape hatch, such a change robs people one useful
  feature: grab tag v1.0.0 and others older than that tag in one
  go.

I won't be coding any of the above; just thinking aloud.
Here is the code to implement your 2nd approach,
and I don't think this behaviour change is a regression,
because if someone is really relying this fetch one tag actually fetch
all tags feature
he is relying on a broken feature, and should be corrected:
if one really need to fetch all tags, that's what explicit "--tags"
designed and documented for

diff --git a/builtin/fetch.c b/builtin/fetch.c
index bb9a074..b6d7ef3 100644
--- a/builtin/fetch.c
+++ b/builtin/fetch.c
@@ -158,7 +158,8 @@ static struct ref *get_ref_map(struct transport *transport,
 	if (ref_count || tags == TAGS_SET) {
 		for (i = 0; i < ref_count; i++) {
 			get_fetch_map(remote_refs, &refs[i], &tail, 0);
-			if (refs[i].dst && refs[i].dst[0])
+			if (refs[i].dst && refs[i].dst[0]
+			    && prefixcmp(refs[i].dst, "refs/tags/"))
 				*autotags = 1;
 		}
 		/* Merge everything on the command line, but not --tags */
-- 
cheng renquan (程任全)
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help