fetch-pack: factor out is_unmatched_ref()

Move the code to determine if a request is unmatched to its own little
helper.  This allows us to reuse it in a subsequent patch.

Signed-off-by: Rene Scharfe <l.s.r@web.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
maint
René Scharfe 2018-10-04 17:09:06 +02:00 committed by Junio C Hamano
parent fe8321ec05
commit bf73282c0b
1 changed files with 11 additions and 8 deletions

View File

@ -543,6 +543,16 @@ static int tip_oids_contain(struct oidset *tip_oids,
return oidset_contains(tip_oids, id);
}

static int is_unmatched_ref(const struct ref *ref)
{
struct object_id oid;
const char *p;
return ref->match_status == REF_NOT_MATCHED &&
!parse_oid_hex(ref->name, &oid, &p) &&
*p == '\0' &&
oideq(&oid, &ref->old_oid);
}

static void filter_refs(struct fetch_pack_args *args,
struct ref **refs,
struct ref **sought, int nr_sought)
@ -591,15 +601,8 @@ static void filter_refs(struct fetch_pack_args *args,

/* Append unmatched requests to the list */
for (i = 0; i < nr_sought; i++) {
struct object_id oid;
const char *p;

ref = sought[i];
if (ref->match_status != REF_NOT_MATCHED)
continue;
if (parse_oid_hex(ref->name, &oid, &p) ||
*p != '\0' ||
!oideq(&oid, &ref->old_oid))
if (!is_unmatched_ref(ref))
continue;

if ((allow_unadvertised_object_request &