fetch-pack: move common check and marking together

When receiving 'ACK <object-id> continue' for a common commit, check if
the commit was already known to be common and mark it as such if not up
front. This should make future refactoring of how the information about
common commits is stored more straightforward.

No visible change intended.

Signed-off-by: Jonathan Tan <jonathantanmy@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Jonathan Tan 2018-06-14 15:54:27 -07:00 committed by Junio C Hamano
parent d30fe89c37
commit d093bc7582

View File

@ -505,11 +505,14 @@ static int find_common(struct negotiation_state *ns,
case ACK_continue: { case ACK_continue: {
struct commit *commit = struct commit *commit =
lookup_commit(result_oid); lookup_commit(result_oid);
int was_common;
if (!commit) if (!commit)
die(_("invalid commit %s"), oid_to_hex(result_oid)); die(_("invalid commit %s"), oid_to_hex(result_oid));
was_common = commit->object.flags & COMMON;
mark_common(ns, commit, 0, 1);
if (args->stateless_rpc if (args->stateless_rpc
&& ack == ACK_common && ack == ACK_common
&& !(commit->object.flags & COMMON)) { && !was_common) {
/* We need to replay the have for this object /* We need to replay the have for this object
* on the next RPC request so the peer knows * on the next RPC request so the peer knows
* it is in common with us. * it is in common with us.
@ -526,7 +529,6 @@ static int find_common(struct negotiation_state *ns,
} else if (!args->stateless_rpc } else if (!args->stateless_rpc
|| ack != ACK_common) || ack != ACK_common)
in_vain = 0; in_vain = 0;
mark_common(ns, commit, 0, 1);
retval = 0; retval = 0;
got_continue = 1; got_continue = 1;
if (ack == ACK_ready) if (ack == ACK_ready)