diff options
author | Nguyễn Thái Ngọc Duy <pclouds@gmail.com> | 2013-12-05 20:02:49 +0700 |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2013-12-10 16:14:18 -0800 |
commit | 58f2ed051fe9b966100d8c531a79200628490ec4 (patch) | |
tree | 79a84b42c929cf68e9a0ebfd37f722d0939fb326 | |
parent | b016918b2f283513758957b06a14eb2f5c2a9619 (diff) | |
download | git-58f2ed051fe9b966100d8c531a79200628490ec4.tar.gz git-58f2ed051fe9b966100d8c531a79200628490ec4.tar.xz |
remote-curl: pass ref SHA-1 to fetch-pack as well
Signed-off-by: Nguyễn Thái Ngọc Duy <pclouds@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
-rw-r--r-- | builtin/fetch-pack.c | 7 | ||||
-rw-r--r-- | remote-curl.c | 3 |
2 files changed, 9 insertions, 1 deletions
diff --git a/builtin/fetch-pack.c b/builtin/fetch-pack.c index 927424b6b..aa6e5967e 100644 --- a/builtin/fetch-pack.c +++ b/builtin/fetch-pack.c @@ -13,6 +13,13 @@ static void add_sought_entry_mem(struct ref ***sought, int *nr, int *alloc, const char *name, int namelen) { struct ref *ref = xcalloc(1, sizeof(*ref) + namelen + 1); + unsigned char sha1[20]; + + if (namelen > 41 && name[40] == ' ' && !get_sha1_hex(name, sha1)) { + hashcpy(ref->old_sha1, sha1); + name += 41; + namelen -= 41; + } memcpy(ref->name, name, namelen); ref->name[namelen] = '\0'; diff --git a/remote-curl.c b/remote-curl.c index 222210fd3..25d67308c 100644 --- a/remote-curl.c +++ b/remote-curl.c @@ -719,7 +719,8 @@ static int fetch_git(struct discovery *heads, struct ref *ref = to_fetch[i]; if (!ref->name || !*ref->name) die("cannot fetch by sha1 over smart http"); - packet_buf_write(&preamble, "%s\n", ref->name); + packet_buf_write(&preamble, "%s %s\n", + sha1_to_hex(ref->old_sha1), ref->name); } packet_buf_flush(&preamble); |