fetch-pack: Use a strbuf to compose the want list

This change is being offered as a refactoring to make later
commits in the smart HTTP series easier.

By changing the enabled capabilities to be formatted in a strbuf
it is easier to add a new capability to the set of supported
capabilities.

By formatting the want portion of the request into a strbuf and
writing it as a whole block we can later decide to hold onto
the req_buf (instead of releasing it) to recycle in stateless
communications.

Signed-off-by: Shawn O. Pearce <spearce@spearce.org>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Shawn O. Pearce
2009-10-30 17:47:23 -07:00
committed by Junio C Hamano
parent 743c4b7b0f
commit edace6f02e
3 changed files with 40 additions and 26 deletions

View File

@ -199,7 +199,7 @@ struct commit_graft *lookup_commit_graft(const unsigned char *sha1)
return commit_graft[pos];
}
int write_shallow_commits(int fd, int use_pack_protocol)
int write_shallow_commits(struct strbuf *out, int use_pack_protocol)
{
int i, count = 0;
for (i = 0; i < commit_graft_nr; i++)
@ -208,12 +208,10 @@ int write_shallow_commits(int fd, int use_pack_protocol)
sha1_to_hex(commit_graft[i]->sha1);
count++;
if (use_pack_protocol)
packet_write(fd, "shallow %s", hex);
packet_buf_write(out, "shallow %s", hex);
else {
if (write_in_full(fd, hex, 40) != 40)
break;
if (write_str_in_full(fd, "\n") != 1)
break;
strbuf_addstr(out, hex);
strbuf_addch(out, '\n');
}
}
return count;