From: Junio C Hamano Date: Sat, 6 Feb 2021 00:40:45 +0000 (-0800) Subject: Merge branch 'jv/pack-objects-narrower-ref-iteration' X-Git-Tag: v2.31.0-rc0~78 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=77db59c2f91de69d5b204b88422d01b2632bcecd;p=thirdparty%2Fgit.git Merge branch 'jv/pack-objects-narrower-ref-iteration' The "pack-objects" command needs to iterate over all the tags when automatic tag following is enabled, but it actually iterated over all refs and then discarded everything outside "refs/tags/" hierarchy, which was quite wasteful. * jv/pack-objects-narrower-ref-iteration: builtin/pack-objects.c: avoid iterating all refs --- 77db59c2f91de69d5b204b88422d01b2632bcecd diff --cc builtin/pack-objects.c index 57f0bc28b8,ad52c91bdb..13cde5896a --- a/builtin/pack-objects.c +++ b/builtin/pack-objects.c @@@ -2818,9 -2807,7 +2818,7 @@@ static int add_ref_tag(const char *tag { struct object_id peeled; - if (starts_with(path, "refs/tags/") && /* is a tag? */ - !peel_iterated_oid(oid, &peeled) && /* peelable? */ - obj_is_packed(&peeled)) /* object packed? */ - if (!peel_ref(tag, &peeled) && obj_is_packed(&peeled)) ++ if (!peel_iterated_oid(oid, &peeled) && obj_is_packed(&peeled)) add_tag_chain(oid); return 0; }