X-Git-Url: http://git.ipfire.org/?a=blobdiff_plain;f=packfile.c;h=0fe9c21bf108965867ca691c245c3be0124a9102;hb=99c0bdd09de2b04b7a4464e14fe9b65e2152b3d1;hp=d1e6683ffe877d9bf1b0996f25f0720fdffe983a;hpb=ab15ccde3d7555135f3730aa5c5f303a96bdf0fb;p=thirdparty%2Fgit.git diff --git a/packfile.c b/packfile.c index d1e6683ffe..0fe9c21bf1 100644 --- a/packfile.c +++ b/packfile.c @@ -971,16 +971,16 @@ static void prepare_packed_git_mru(struct repository *r) static void prepare_packed_git(struct repository *r) { - struct alternate_object_database *alt; + struct object_directory *odb; if (r->objects->packed_git_initialized) return; - prepare_multi_pack_index_one(r, r->objects->objectdir, 1); - prepare_packed_git_one(r, r->objects->objectdir, 1); + prepare_alt_odb(r); - for (alt = r->objects->alt_odb_list; alt; alt = alt->next) { - prepare_multi_pack_index_one(r, alt->path, 0); - prepare_packed_git_one(r, alt->path, 0); + for (odb = r->objects->odb; odb; odb = odb->next) { + int local = (odb == r->objects->odb); + prepare_multi_pack_index_one(r, odb->path, local); + prepare_packed_git_one(r, odb->path, local); } rearrange_packed_git(r); @@ -992,6 +992,11 @@ static void prepare_packed_git(struct repository *r) void reprepare_packed_git(struct repository *r) { + struct object_directory *odb; + + for (odb = r->objects->odb; odb; odb = odb->next) + odb_clear_loose_cache(odb); + r->objects->approximate_object_count_valid = 0; r->objects->packed_git_initialized = 0; prepare_packed_git(r);