]> git.ipfire.org Git - thirdparty/git.git/commit - pack-revindex.h
pack-revindex: open index if necessary
authorJeff King <peff@peff.net>
Fri, 5 Apr 2019 18:04:24 +0000 (14:04 -0400)
committerJunio C Hamano <gitster@pobox.com>
Tue, 16 Apr 2019 07:58:21 +0000 (16:58 +0900)
commit4828ce9871fee0ea0309220c461fdedf255df931
tree9538b55727ac0701e39d3f5763e3a2970d805802
parent336226c259f3fa2e2c9c1f5ce857f0c163b26928
pack-revindex: open index if necessary

We can't create a pack revindex if we haven't actually looked at the
index. Normally we would never get as far as creating a revindex without
having already been looking in the pack, so this code never bothered to
double-check that pack->index_data had been loaded.

But with the new multi-pack-index feature, many code paths might not
load the individual pack .idx at all (they'd find objects via the midx
and then open the .pack, but not its index).

This can't yet be triggered in practice, because a bug in the midx code
means we accidentally open up the individual .idx files anyway. But in
preparation for fixing that, let's have the revindex code check that
everything it needs has been loaded.

In most cases this will just be a quick noop. But note that this does
introduce a possibility of error (if we have to open the index and it's
corrupt), so load_pack_revindex() now returns a result code, and callers
need to handle the error.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
pack-bitmap.c
pack-revindex.c
pack-revindex.h
packfile.c