提交 d093bc75 编写于 作者: J Jonathan Tan 提交者: Junio C Hamano

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: NJonathan Tan <jonathantanmy@google.com>
Signed-off-by: NJunio C Hamano <gitster@pobox.com>
上级 d30fe89c
......@@ -505,11 +505,14 @@ static int find_common(struct negotiation_state *ns,
case ACK_continue: {
struct commit *commit =
lookup_commit(result_oid);
int was_common;
if (!commit)
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
&& ack == ACK_common
&& !(commit->object.flags & COMMON)) {
&& !was_common) {
/* We need to replay the have for this object
* on the next RPC request so the peer knows
* it is in common with us.
......@@ -526,7 +529,6 @@ static int find_common(struct negotiation_state *ns,
} else if (!args->stateless_rpc
|| ack != ACK_common)
in_vain = 0;
mark_common(ns, commit, 0, 1);
retval = 0;
got_continue = 1;
if (ack == ACK_ready)
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册