Re: [PATCH] git fetch one tag only
From: Junio C Hamano <hidden>
Date: 2016-06-15 22:54:00
Junio C Hamano [off-list ref] writes:
It is a separate matter if we should add some special case to further reduce the cases where auto-following happens. I personally do not think any change is needed.
I do not care too deeply either way, but after doing
$ git init blank && cd blank
and in an empty repository:
$ git fetch $over_there v1.0.0
will grab the named tag and drop it in FETCH_HEAD, without adding
anything to your local refs, while
$ git fetch $over_there tag v1.0.0
will grab the named tag and copy it to your refs/tags/v1.0.0, and
auto-follow all the tags that point at commits that are reachable.
To grab and store _only_ v1.0.0 in the local refs, you need to say
"do not auto-follow" with
$ git fetch $over_there --no-tags tag v1.0.0
While it may be workable, the user experience could be better in a
couple of different ways.
* It is not fair to expect anybody to guess that "--no-tags" means
"--no-auto-follow-tags" without reading documentation.
$ git fetch $over_there --no-auto-follow-tags tag v1.0.0
might be an improvement, but of course, it is a bit longer to
spell ;-).
* 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.