diff options
Diffstat (limited to 'transport.c')
-rw-r--r-- | transport.c | 18 |
1 files changed, 14 insertions, 4 deletions
diff --git a/transport.c b/transport.c index d2cbf3acc1..0882edd381 100644 --- a/transport.c +++ b/transport.c @@ -9,7 +9,7 @@ /* Generic functions for using commit walkers */ -static int fetch_objs_via_walker(const struct transport *transport, +static int fetch_objs_via_walker(struct transport *transport, int nr_objs, struct ref **to_fetch) { char *dest = xstrdup(transport->url); @@ -219,7 +219,7 @@ static struct ref *get_refs_from_bundle(const struct transport *transport) return result; } -static int fetch_refs_from_bundle(const struct transport *transport, +static int fetch_refs_from_bundle(struct transport *transport, int nr_heads, struct ref **to_fetch) { struct bundle_transport_data *data = transport->data; @@ -306,7 +306,7 @@ static struct ref *get_refs_via_connect(const struct transport *transport) return refs; } -static int fetch_refs_via_pack(const struct transport *transport, +static int fetch_refs_via_pack(struct transport *transport, int nr_heads, struct ref **to_fetch) { struct git_transport_data *data = transport->data; @@ -330,7 +330,7 @@ static int fetch_refs_via_pack(const struct transport *transport, for (i = 0; i < nr_heads; i++) heads[i] = xstrdup(to_fetch[i]->name); - refs = fetch_pack(dest, nr_heads, heads); + refs = fetch_pack(dest, nr_heads, heads, &transport->pack_lockfile); for (i = 0; i < nr_heads; i++) free(heads[i]); @@ -445,6 +445,7 @@ struct transport *transport_get(struct remote *remote, const char *url, ret->url = url; ret->remote_refs = NULL; ret->fetch = !!fetch; + ret->pack_lockfile = NULL; } return ret; } @@ -500,6 +501,15 @@ int transport_fetch_refs(struct transport *transport, struct ref *refs) return rc; } +void transport_unlock_pack(struct transport *transport) +{ + if (transport->pack_lockfile) { + unlink(transport->pack_lockfile); + free(transport->pack_lockfile); + transport->pack_lockfile = NULL; + } +} + int transport_disconnect(struct transport *transport) { int ret = 0; |