]> git.ipfire.org Git - thirdparty/git.git/commit - t/t5324-split-commit-graph.sh
commit-graph: tighten chain size check
authorJeff King <peff@peff.net>
Thu, 28 Sep 2023 04:39:10 +0000 (00:39 -0400)
committerJunio C Hamano <gitster@pobox.com>
Thu, 28 Sep 2023 14:00:43 +0000 (07:00 -0700)
commit7754a565e2e78e4163dbf597bba5fc729cc3bbc7
tree6bed9d2ae7516fc5d1cecdeba02c4f5338fd00c9
parent47d06bb010867cd122f732be93e55a797371570c
commit-graph: tighten chain size check

When we open a commit-graph-chain file, if it's smaller than a single
entry, we just quietly treat that as ENOENT. That make some sense if the
file is truly zero bytes, but it means that "commit-graph verify" will
quietly ignore a file that contains garbage if that garbage happens to
be short.

Instead, let's only simulate ENOENT when the file is truly empty, and
otherwise return EINVAL. The normal graph-loading routines don't care,
but "commit-graph verify" will notice and complain about the difference.

It's not entirely clear to me that the 0-is-ENOENT case actually happens
in real life, so we could perhaps just eliminate this special-case
altogether. But this is how we've always behaved, so I'm preserving it
in the name of backwards compatibility (though again, it really only
matters for "verify", as the regular routines are happy to load what
they can).

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
commit-graph.c
t/t5324-split-commit-graph.sh