summaryrefslogtreecommitdiff
path: root/promisor-remote.c
diff options
context:
space:
mode:
authorChristian Couder <christian.couder@gmail.com>2019-06-25 13:40:37 (GMT)
committerJunio C Hamano <gitster@pobox.com>2019-06-25 21:05:38 (GMT)
commitdb27dca5cfe41ffa62f3a34cff2f7fafb2547307 (patch)
treecc03a62addf619d1619c3f2068c3ea1702dd16af /promisor-remote.c
parent75de0852119bc73c60ace232ba799c3cada2608a (diff)
downloadgit-db27dca5cfe41ffa62f3a34cff2f7fafb2547307.zip
git-db27dca5cfe41ffa62f3a34cff2f7fafb2547307.tar.gz
git-db27dca5cfe41ffa62f3a34cff2f7fafb2547307.tar.bz2
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.c40
1 files changed, 39 insertions, 1 deletions
diff --git a/promisor-remote.c b/promisor-remote.c
index 826890f..92c4c12 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;