]> Kevux Git Server - rit/commit
object-name: simplify computing common prefixes
authorPatrick Steinhardt <ps@pks.im>
Fri, 20 Mar 2026 07:07:37 +0000 (08:07 +0100)
committerJunio C Hamano <gitster@pobox.com>
Fri, 20 Mar 2026 20:16:42 +0000 (13:16 -0700)
commit1a2842d1b1e91d5e068d231cf4df4e783bdf9205
tree40dbc8c53872fb0f02b8030d59ecb9e24171ba3a
parent67f47eab61c3a2c14f2d0351c3844f12fbd95dd2
object-name: simplify computing common prefixes

The function `extend_abbrev_len()` computes the length of common hex
characters between two object IDs. This is done by:

  - Making the caller provide the `hex` string for the needle object ID.

  - Comparing every hex position of the haystack object ID with
    `get_hex_char_from_oid()`.

Turning the binary representation into hex first is roundabout though:
we can simply compare the binary representation and give some special
attention to the final nibble.

Introduce a new function `oid_common_prefix_hexlen()` that does exactly
this and refactor the code to use the new function. This allows us to
drop the `struct min_abbrev_data::hex` field. Furthermore, this function
will be used in by some other callsites in subsequent commits.

Signed-off-by: Patrick Steinhardt <ps@pks.im>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
hash.c
hash.h
object-name.c