Skip to content

Commit

Permalink
send-pack: refactor inspecting and resetting status and sending commands
Browse files Browse the repository at this point in the history
The main loop over remote_refs list inspects the ref status
to see if we need to generate pack data (i.e. a delete-only push
does not need to send any additional data), resets it to "expecting
the status report" state, and formats the actual update commands
to be sent.

Split the former two out of the main loop, as it will become
conditional in later steps.

Besides, we should have code that does real thing here, before the
"Finally, tell the other end!" part ;-)

Signed-off-by: Junio C Hamano <gitster@pobox.com>
  • Loading branch information
Junio C Hamano committed Sep 15, 2014
1 parent ab2b0c9 commit b783aa7
Showing 1 changed file with 30 additions and 19 deletions.
49 changes: 30 additions & 19 deletions send-pack.c
Original file line number Diff line number Diff line change
Expand Up @@ -274,7 +274,8 @@ int send_pack(struct send_pack_args *args,
advertise_shallow_grafts_buf(&req_buf);

/*
* Finally, tell the other end!
* Clear the status for each ref and see if we need to send
* the pack data.
*/
for (ref = remote_refs; ref; ref = ref->next) {
if (!ref_update_to_be_sent(ref, args))
Expand All @@ -283,25 +284,35 @@ int send_pack(struct send_pack_args *args,
if (!ref->deletion)
need_pack_data = 1;

if (args->dry_run) {
if (args->dry_run || !status_report)
ref->status = REF_STATUS_OK;
} else {
char *old_hex = sha1_to_hex(ref->old_sha1);
char *new_hex = sha1_to_hex(ref->new_sha1);

if (!cmds_sent)
packet_buf_write(&req_buf,
"%s %s %s%c%s",
old_hex, new_hex, ref->name, 0,
cap_buf.buf);
else
packet_buf_write(&req_buf, "%s %s %s",
old_hex, new_hex, ref->name);
ref->status = status_report ?
REF_STATUS_EXPECTING_REPORT :
REF_STATUS_OK;
cmds_sent++;
}
else
ref->status = REF_STATUS_EXPECTING_REPORT;
}

/*
* Finally, tell the other end!
*/
for (ref = remote_refs; ref; ref = ref->next) {
char *old_hex, *new_hex;

if (args->dry_run)
continue;

if (!ref_update_to_be_sent(ref, args))
continue;

old_hex = sha1_to_hex(ref->old_sha1);
new_hex = sha1_to_hex(ref->new_sha1);
if (!cmds_sent)
packet_buf_write(&req_buf,
"%s %s %s%c%s",
old_hex, new_hex, ref->name, 0,
cap_buf.buf);
else
packet_buf_write(&req_buf, "%s %s %s",
old_hex, new_hex, ref->name);
cmds_sent++;
}

if (args->stateless_rpc) {
Expand Down

0 comments on commit b783aa7

Please sign in to comment.