Re: [RFC PATCH v2 3/8] Support taking over transports
- From
Shawn O. Pearce <spearce@spearce.org>
- Date
- Dec 4, 2009, 18:27 UTC
- Message-ID
- <20091204182753.GD1483@spearce.org>
- In-Reply-To
- <1259942168-24869-6-git-send-email-ilari.liusvaara@elisanet.fi>
Ilari Liusvaara <ilari.liusvaara@elisanet.fi> 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.
Show 10 quoted lines
> @@ -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.