Re: DWIM ref names for push/fetch

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Mon, 25 Jun 2007, Daniel Barkalow wrote:

On Sun, 24 Jun 2007, Junio C Hamano wrote:

Daniel Barkalow <barkalow@xxxxxxxxxxxx> writes:

I was actually thinking exclusively of the matching of strings like "HEAD"
or "origin/next" or "master" to refs from the list of available refs. It
seems to me like the push code does a better job of handling the same
sorts of things that get_sha1() handles.

In particular, the handling of "refs/my/funny/thing" is really wrong: it
gets treated as refs/heads/refs/my/funny/thing.

git-parse-remote.sh::canon_refs_list_for_fetch() seems to say
otherwise, though.

 - When unspecified, or explicitly spelled HEAD, take HEAD;
 - Anything that begins with refs/, use it as is;
 - Anything that begins with heads/, tags/, remotes/, assume
   it is a branch, a tag, or a tracking branch;
 - Otherwise assume a branch;

So I suspect refs/my/funny/thing is covered by the second rule.

Ah, okay. I think a few bits got lost somewhat in Julian's translation to
C. I agree with the first three rules there, and with the last rule being
the last rule, and sticking more things in between those sets is easy
enough.

Just for the record as it were, the difference between my C code and git-parse-remote.sh is simply that commit 96f12b5 changed the shell script behaviour after I had already started, and translating the code to C was hard enough without also trying to track a moving target.

Effectively Daniel is working slightly in the past, and has spotted the same issue that Alex has already fixed.

Mea Culpa.  Sorry.


But I do agree "otherwise assume a branch" part has huge room
for improvement.  Especially...

I think that "origin/next"
should also be assumed to be refs/remotes/origin/next instead of
refs/heads/origin/next, at least if you have refs/remotes/origin/ and not
refs/heads/origin/.

... I think that makes perfect sense -- the code should
interpret your example as a request to start using a new
tracking branch refs/remotes/origin/next.

Currently, it doesn't even notice if you've got the tracking branch
already. Should it have some rule to prefer things that exist over things
that don't?

When refs/remotes/origin/next doesn't exist, should it require that
refs/remotes/origin/ already exist?

It should at least require that a remote called origin exists perhaps?

--
Julian

 ---
<rcw> those apparently-bacteria-like multicolor worms coming out of
      microsoft's backorifice
<rcw> that's the backoffice logo
-
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]

  Powered by Linux