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>
Nguyễn Thái Ngọc Duy committed
Dec 5, 2013 at 20:02 UTC
58f2ed051fe9b966100d8c531a79200628490ec4
2 files changed
+9
-1
builtin/fetch-pack.c
+7
@@ -13,6 +13,13 @@ static void add_sought_entry_mem(struct ref ***sought, int *nr, int *alloc,
13
const char *name, int namelen)
14
{
15
struct ref *ref = xcalloc(1, sizeof(*ref) + namelen + 1);
16
+ unsigned char sha1[20];
17
+
18
+ if (namelen > 41 && name[40] == ' ' && !get_sha1_hex(name, sha1)) {
19
+ hashcpy(ref->old_sha1, sha1);
20
+ name += 41;
21
+ namelen -= 41;
22
+ }
23
24
memcpy(ref->name, name, namelen);
25
ref->name[namelen] = '\0';
remote-curl.c
+2
-1
@@ -719,7 +719,8 @@ static int fetch_git(struct discovery *heads,
719
struct ref *ref = to_fetch[i];
720
if (!ref->name || !*ref->name)
721
die("cannot fetch by sha1 over smart http");
722
- packet_buf_write(&preamble, "%s\n", ref->name);
722
+ packet_buf_write(&preamble, "%s %s\n",
723
+ sha1_to_hex(ref->old_sha1), ref->name);
724
}
725
packet_buf_flush(&preamble);
726