introduce fetch-object: fetch one promisor object
[git/git.git] / fetch-object.c
CommitLineData
88e2f9ed
JT
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
8void fetch_object(const char *remote_name, const unsigned char *sha1)
9{
10 struct remote *remote;
11 struct transport *transport;
12 struct ref *ref;
13
14 remote = remote_get(remote_name);
15 if (!remote->url[0])
16 die(_("Remote with no URL"));
17 transport = transport_get(remote, remote->url[0]);
18
19 ref = alloc_ref(sha1_to_hex(sha1));
20 hashcpy(ref->old_oid.hash, sha1);
21 transport_set_option(transport, TRANS_OPT_FROM_PROMISOR, "1");
22 transport_set_option(transport, TRANS_OPT_NO_DEPENDENTS, "1");
23 transport_fetch_refs(transport, ref);
24}