]> git.ipfire.org Git - thirdparty/git.git/commit
parse-options-cb: only abbreviate hashes when hash algo is known
authorPatrick Steinhardt <ps@pks.im>
Tue, 7 May 2024 04:52:56 +0000 (06:52 +0200)
committerJunio C Hamano <gitster@pobox.com>
Tue, 7 May 2024 05:50:48 +0000 (22:50 -0700)
commitb7afb462258ab02d94e437652cd230a7827d3329
tree70aab291fbfbe6c21d0dd10770d8c89f6ae03659
parent0c6bd2b81d1e18dfa1e143c354c554cca34b3685
parse-options-cb: only abbreviate hashes when hash algo is known

The `OPT__ABBREV()` option can be used to add an option that abbreviates
object IDs. When given a length longer than `the_hash_algo->hexsz`, then
it will instead set the length to that maximum length.

It may not always be guaranteed that we have `the_hash_algo` initialized
properly as the hash algorithm can only be set up after we have set up
`the_repository`. In that case, the hash would always be truncated to
the hex length of SHA1, which may not be what the user desires.

In practice it's not a problem as all commands that use `OPT__ABBREV()`
also have `RUN_SETUP` set and thus cannot work without a repository.
Consequently, both `the_repository` and `the_hash_algo` would be
properly set up.

Regardless of that, harden the code to not truncate the length when we
didn't set up a repository.

Signed-off-by: Patrick Steinhardt <ps@pks.im>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
parse-options-cb.c
t/t0040-parse-options.sh