From: Shawn O. Pearce Date: Fri, 04 Dec 2009 18:27:53 GMT Subject: Re: [RFC PATCH v2 3/8] Support taking over transports Message-ID: <20091204182753.GD1483@spearce.org> In-Reply-To: <1259942168-24869-6-git-send-email-ilari.liusvaara@elisanet.fi> Ilari Liusvaara wrote: > Add support for taking over transports that turn out to be smart. I really don't like this disown strategy and its magic ref return value from fetch. > @@ -1020,7 +1089,13 @@ int transport_fetch_refs(struct transport *transport, struct ref *refs) > heads[nr_heads++] = rm; > } > > +retry: > rc = transport->fetch(transport, nr_heads, heads); > + if(rc == TRANSPORT_LAYER6_READY) { > + git_take_over_transport(transport); > + goto retry; > + } Why can't you expose git_take_over_transport as a public function and then the transport-helper.c code can instead do: ... setup connect with helper ... transport_takeover(transport, child); return transport->fetch(....); Would this make the code simpler? -- Shawn.