From d85cd1877777aa92c73868b9e86516d4be04b4a0 Mon Sep 17 00:00:00 2001 From: Patrick Steinhardt Date: Fri, 14 Apr 2023 08:02:12 +0200 Subject: repack: disable writing bitmaps when doing a local repack In order to write a bitmap, we need to have full coverage of all objects that are about to be packed. In the traditional non-multi-pack-index world this meant we need to do a full repack of all objects into a single packfile. But in the new multi-pack-index world we can get away with writing bitmaps when we have multiple packfiles as long as the multi-pack-index covers all objects. This is not always the case though. When asked to perform a repack of local objects, only, then we cannot guarantee to have full coverage of all objects regardless of whether we do a full repack or a repack with a multi-pack-index. The end result is that writing the bitmap will fail in both worlds: $ git multi-pack-index write --stdin-packs --bitmap Signed-off-by: Junio C Hamano --- object-file.c | 6 ++++++ 1 file changed, 6 insertions(+) (limited to 'object-file.c') diff --git a/object-file.c b/object-file.c index 939865c1ae..a6574b265d 100644 --- a/object-file.c +++ b/object-file.c @@ -944,6 +944,12 @@ void prepare_alt_odb(struct repository *r) r->objects->loaded_alternates = 1; } +int has_alt_odb(struct repository *r) +{ + prepare_alt_odb(r); + return !!r->objects->odb->next; +} + /* Returns 1 if we have successfully freshened the file, 0 otherwise. */ static int freshen_file(const char *fn) { -- cgit v1.2.3