Linus Torvalds [off-list ref] writes:
HEAD is not a tag. Never has been, never will be. If you want me to
pull a tag, then you damn well should say what tag you want, not just
randomly say HEAD.
So what is it you want to do? At no point is "HEAD should resolve as a
tag" sensible.
"HEAD should resolve as a tag" is not sensible, but "HEAD should
locally DWIM to something sensible" is still possible, no?
We could for example make the rule for unset $3 case like this,
instead of the current "missing $3 is a request to pull HEAD":
If you have one and only one signed tag that happens to point at
the commit sitting at HEAD, behave as if that tag was given as
the third argument from the command line.
Otherwise, if you are on a branch, behave as if that branch was
given as the third argument from the command line.
If you are not on any branch, error out.
On Tue, Feb 17, 2015 at 1:03 PM, Junio C Hamano [off-list ref] wrote:
"HEAD should resolve as a tag" is not sensible, but "HEAD should
locally DWIM to something sensible" is still possible, no?
I disagree. Why? Because what you have locally is *not* necessarily
the same thing you have remotely.
And that's *exactly* why people used to send me broken pull requests.
"git pull-request" would guess on things, and it would get the guesses
wrong, and write the pull request wrong.
We could for example make the rule for unset $3 case like this:
instead of the current "missing $3 is a request to pull HEAD":
If you have one and only one signed tag that happens to point at
the commit sitting at HEAD, behave as if that tag was given as
the third argument from the command line.
If you verify that "one and only" to be true both locally and
remotely, then I guess I would be ok with it. But it really would have
to be unique. And truly unique, as in no confusion about branches or
tags, only one or the other. Because the "tag vs branch" was one of
the main sources of confusion that made me repeatedly get bad pull
requests, particularly when there was something locally that wasn't
actually named the same thing remotely.
Linus