]>
Commit | Line | Data |
---|---|---|
1 | #include "cache.h" | |
2 | #include "packfile.h" | |
3 | #include "pkt-line.h" | |
4 | #include "strbuf.h" | |
5 | #include "transport.h" | |
6 | #include "fetch-object.h" | |
7 | ||
8 | static void fetch_refs(const char *remote_name, struct ref *ref) | |
9 | { | |
10 | struct remote *remote; | |
11 | struct transport *transport; | |
12 | int original_fetch_if_missing = fetch_if_missing; | |
13 | ||
14 | fetch_if_missing = 0; | |
15 | remote = remote_get(remote_name); | |
16 | if (!remote->url[0]) | |
17 | die(_("Remote with no URL")); | |
18 | transport = transport_get(remote, remote->url[0]); | |
19 | ||
20 | transport_set_option(transport, TRANS_OPT_FROM_PROMISOR, "1"); | |
21 | transport_set_option(transport, TRANS_OPT_NO_DEPENDENTS, "1"); | |
22 | transport_fetch_refs(transport, ref); | |
23 | fetch_if_missing = original_fetch_if_missing; | |
24 | } | |
25 | ||
26 | void fetch_objects(const char *remote_name, const struct object_id *oids, | |
27 | int oid_nr) | |
28 | { | |
29 | struct ref *ref = NULL; | |
30 | int i; | |
31 | ||
32 | for (i = 0; i < oid_nr; i++) { | |
33 | struct ref *new_ref = alloc_ref(oid_to_hex(&oids[i])); | |
34 | oidcpy(&new_ref->old_oid, &oids[i]); | |
35 | new_ref->exact_oid = 1; | |
36 | new_ref->next = ref; | |
37 | ref = new_ref; | |
38 | } | |
39 | fetch_refs(remote_name, ref); | |
40 | } |