Thread (15 messages) 15 messages, 3 authors, 2016-06-15

Re: [PATCH 7/7] Factor ref updating out of fetch_with_import

flat view

From: Sverre Rabbelier <hidden>
Date: 2016-06-15 22:47:38

Heya,

On Thu, Oct 29, 2009 at 08:56, Shawn O. Pearce [off-list ref] wrote:
quoted
quoted
I certainly have to wonder... if this is done in both fetch and
clone, why isn't it just part of fetch_refs?
Because clone does not use fetch_refs, or am I missing something?
Hmmph.  Weird.  Its been a while since I last looked at this code,
maybe I misunderstood it.
Unless you mean transport_fetch_refs? It can't be done in
transport_fetch_refs because the foreign helper transport needs to
update all refs, including those that wanted_peer_refs decided not to
fetch. Otherwise the 'HEAD' ref will not be updated, and it is left at
all zeros. It is not as obvious that that is a problem in this patch,
but when Junio merges with Nico's [5bdc32d3e "make 'git clone' ask the
remote only for objects it cares about"] the code looks like this:

		if (refs) {
			struct ref *ref_cpy;
			mapped_refs = wanted_peer_refs(refs, refspec);
			ref_cpy = copy_ref_list(mapped_refs);
			transport_fetch_refs(transport, ref_cpy);
			if (transport->update_refs)
			{
				ref_cpy = copy_ref_list(refs);
				transport->update_refs(transport, ref_cpy);
				refs = ref_cpy;
				mapped_refs = wanted_peer_refs(refs, refspec);
			}
		}

Does it make more sense now? transport_fetch_refs gets only a limited
view of the refs, so it cannot pass all the refs to
transport_update_refs as needed.

-- 
Cheers,

Sverre Rabbelier
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help