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 (程任全)