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

Re: [PATCH v2 09/13] Honour the refspec when updating refs after import

From: Daniel Barkalow <hidden>
Date: 2016-06-15 22:47:40

On Wed, 4 Nov 2009, Sverre Rabbelier wrote:
This way the helper can write to 'refs/remotes/origin/*' instead of
writing to 'refs/heads/*'.

Signed-off-by: Sverre Rabbelier <redacted>
---

  Daniel, does this look good to you?

  Let's assume the following:
  * list: only HEAD is a symref (to refs/heads/<branch>), all other
          refs are '? refs/heads/<branch>'.
  * import: the helper creates branches under refs/remotes/<alias>/*
            (since the refspec code is not yet in that would allow
             it to create them under refs/<vcs>/<alias>/*)

  Now when updating the refs we do the following:
  transport-helper.c:145 "read_ref(posn->name, posn->old_sha1);"

  The value of posn->name looks like "refs/heads/<branch>". So what
  does this lookup do? It tries to lookup the new value of the ref
  _where it will be created_, this fails of course, since the ref
  currently only exists as "refs/remotes/origin/<branch>". So, we
  should instead be doing a lookup using posn->peer_ref->name, and
  not do a lookup at all if it posn->peer_ref is not set (which
  should not occur as we are passed only wanted peer refs).
That's not true for "git pull <url> <branch>"; we do want the remote ref, 
but it doesn't have a local peer. I think going straight to the refspec 
command is the right answer.

	-Daniel
*This .sig left intentionally blank*
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help