diff options
author | Christian Couder <christian.couder@gmail.com> | 2019-06-25 15:40:37 +0200 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2019-06-25 23:05:38 +0200 |
commit | db27dca5cfe41ffa62f3a34cff2f7fafb2547307 (patch) | |
tree | cc03a62addf619d1619c3f2068c3ea1702dd16af /promisor-remote.c | |
parent | remote: add promisor and partial clone config to the doc (diff) | |
download | git-db27dca5cfe41ffa62f3a34cff2f7fafb2547307.tar.xz git-db27dca5cfe41ffa62f3a34cff2f7fafb2547307.zip |
Remove fetch-object.{c,h} in favor of promisor-remote.{c,h}
As fetch_objects() is now used only in promisor-remote.c
and should't be used outside it, let's move it into
promisor-remote.c, make it static there, and remove
fetch-object.{c,h}.
Signed-off-by: Christian Couder <chriscool@tuxfamily.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'promisor-remote.c')
-rw-r--r-- | promisor-remote.c | 40 |
1 files changed, 39 insertions, 1 deletions
diff --git a/promisor-remote.c b/promisor-remote.c index 826890f7b8..92c4c12c1c 100644 --- a/promisor-remote.c +++ b/promisor-remote.c @@ -2,7 +2,45 @@ #include "object-store.h" #include "promisor-remote.h" #include "config.h" -#include "fetch-object.h" +#include "transport.h" + +static int fetch_refs(const char *remote_name, struct ref *ref) +{ + struct remote *remote; + struct transport *transport; + int original_fetch_if_missing = fetch_if_missing; + int res; + + fetch_if_missing = 0; + remote = remote_get(remote_name); + if (!remote->url[0]) + die(_("Remote with no URL")); + transport = transport_get(remote, remote->url[0]); + + transport_set_option(transport, TRANS_OPT_FROM_PROMISOR, "1"); + transport_set_option(transport, TRANS_OPT_NO_DEPENDENTS, "1"); + res = transport_fetch_refs(transport, ref); + fetch_if_missing = original_fetch_if_missing; + + return res; +} + +static int fetch_objects(const char *remote_name, + const struct object_id *oids, + int oid_nr) +{ + struct ref *ref = NULL; + int i; + + for (i = 0; i < oid_nr; i++) { + struct ref *new_ref = alloc_ref(oid_to_hex(&oids[i])); + oidcpy(&new_ref->old_oid, &oids[i]); + new_ref->exact_oid = 1; + new_ref->next = ref; + ref = new_ref; + } + return fetch_refs(remote_name, ref); +} static struct promisor_remote *promisors; static struct promisor_remote **promisors_tail = &promisors; |