summaryrefslogtreecommitdiff
path: root/upload-pack.c
diff options
context:
space:
mode:
authorJunio C Hamano <junkio@cox.net>2006-07-06 01:12:12 (GMT)
committerJunio C Hamano <junkio@cox.net>2006-08-13 05:21:43 (GMT)
commitc04c4e5708c9ad3dc534ff50ad8f28de5a7cfbff (patch)
tree4dc127fce33a588f686b6cdd891289262acb8675 /upload-pack.c
parent182a8dabd5f5f646608f3857f10f3ac18c3d1445 (diff)
downloadgit-c04c4e5708c9ad3dc534ff50ad8f28de5a7cfbff.zip
git-c04c4e5708c9ad3dc534ff50ad8f28de5a7cfbff.tar.gz
git-c04c4e5708c9ad3dc534ff50ad8f28de5a7cfbff.tar.bz2
upload-pack: minor clean-up in multi-ack logic
No changes to what it does, but separating the codepath clearly with if ... else if ... chain makes it easier to follow. Signed-off-by: Junio C Hamano <junkio@cox.net>
Diffstat (limited to 'upload-pack.c')
-rw-r--r--upload-pack.c22
1 files changed, 12 insertions, 10 deletions
diff --git a/upload-pack.c b/upload-pack.c
index bbd6bd6..35c7ecb 100644
--- a/upload-pack.c
+++ b/upload-pack.c
@@ -351,7 +351,8 @@ static int got_sha1(char *hex, unsigned char *sha1)
static int get_common_commits(void)
{
static char line[1000];
- unsigned char sha1[20], last_sha1[20];
+ unsigned char sha1[20];
+ char hex[41], last_hex[41];
int len;
track_object_refs = 0;
@@ -368,21 +369,22 @@ static int get_common_commits(void)
}
len = strip(line, len);
if (!strncmp(line, "have ", 5)) {
- if (got_sha1(line+5, sha1) &&
- (multi_ack || have_obj.nr == 1)) {
- packet_write(1, "ACK %s%s\n",
- sha1_to_hex(sha1),
- multi_ack ? " continue" : "");
- if (multi_ack)
- memcpy(last_sha1, sha1, 20);
+ if (got_sha1(line+5, sha1)) {
+ memcpy(hex, sha1_to_hex(sha1), 41);
+ if (multi_ack) {
+ const char *msg = "ACK %s continue\n";
+ packet_write(1, msg, hex);
+ memcpy(last_hex, hex, 41);
+ }
+ else if (have_obj.nr == 1)
+ packet_write(1, "ACK %s\n", hex);
}
continue;
}
if (!strcmp(line, "done")) {
if (have_obj.nr > 0) {
if (multi_ack)
- packet_write(1, "ACK %s\n",
- sha1_to_hex(last_sha1));
+ packet_write(1, "ACK %s\n", last_hex);
return 0;
}
packet_write(1, "NAK\n");