aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTeng Long <dyroneteng@gmail.com>2022-07-19 00:46:05 +0800
committerJunio C Hamano <gitster@pobox.com>2022-07-18 11:20:52 -0700
commit5dcee7c7059307ca3a9d5c1a5c6551deb25cc3dc (patch)
treed671047020640e08fc9c4b862e3584d277da9277
parent9005eb021ad4defbb3635c2aa6049e9300a25798 (diff)
downloadgit-5dcee7c7059307ca3a9d5c1a5c6551deb25cc3dc.tar.xz
pack-bitmap.c: continue looping when first MIDX bitmap is found
In "open_midx_bitmap()", we do a loop with the MIDX(es) in repo, when the first one has been found, then will break out by a "return" directly. But actually, it's better to continue the loop until we have visited both the MIDX in our repository, as well as any alternates (along with _their_ alternates, recursively). The reason for this is, there may exist more than one MIDX file in a repo. The "multi_pack_index" struct is actually designed as a singly linked list, and if a MIDX file has been already opened successfully, then the other MIDX files will be skipped and left with a warning "ignoring extra bitmap file." to the output. The discussion link of community: https://public-inbox.org/git/YjzCTLLDCby+kJrZ@nand.local/ Helped-by: Taylor Blau <me@ttaylorr.com> Signed-off-by: Teng Long <dyroneteng@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
-rw-r--r--pack-bitmap.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/pack-bitmap.c b/pack-bitmap.c
index 6ff23f096d..107fc35fb2 100644
--- a/pack-bitmap.c
+++ b/pack-bitmap.c
@@ -506,15 +506,16 @@ static int open_pack_bitmap(struct repository *r,
static int open_midx_bitmap(struct repository *r,
struct bitmap_index *bitmap_git)
{
+ int ret = -1;
struct multi_pack_index *midx;
assert(!bitmap_git->map);
for (midx = get_multi_pack_index(r); midx; midx = midx->next) {
if (!open_midx_bitmap_1(bitmap_git, midx))
- return 0;
+ ret = 0;
}
- return -1;
+ return ret;
}
static int open_bitmap(struct repository *r,