diff options
Diffstat (limited to 'packfile.c')
-rw-r--r-- | packfile.c | 28 |
1 files changed, 23 insertions, 5 deletions
diff --git a/packfile.c b/packfile.c index 79e21ab18e..fd083c86e0 100644 --- a/packfile.c +++ b/packfile.c @@ -1,4 +1,8 @@ -#include "cache.h" +#include "git-compat-util.h" +#include "alloc.h" +#include "environment.h" +#include "gettext.h" +#include "hex.h" #include "list.h" #include "pack.h" #include "repository.h" @@ -11,12 +15,16 @@ #include "commit.h" #include "object.h" #include "tag.h" +#include "trace.h" #include "tree-walk.h" #include "tree.h" +#include "object-file.h" #include "object-store.h" #include "midx.h" #include "commit-graph.h" +#include "pack-revindex.h" #include "promisor-remote.h" +#include "wrapper.h" char *odb_pack_name(struct strbuf *buf, const unsigned char *hash, @@ -1008,6 +1016,16 @@ void reprepare_packed_git(struct repository *r) struct object_directory *odb; obj_read_lock(); + + /* + * Reprepare alt odbs, in case the alternates file was modified + * during the course of this process. This only _adds_ odbs to + * the linked list, so existing odbs will continue to exist for + * the lifetime of the process. + */ + r->objects->loaded_alternates = 0; + prepare_alt_odb(r); + for (odb = r->objects->odb; odb; odb = odb->next) odb_clear_loose_cache(odb); @@ -2136,7 +2154,7 @@ int for_each_object_in_pack(struct packed_git *p, int r = 0; if (flags & FOR_EACH_OBJECT_PACK_ORDER) { - if (load_pack_revindex(p)) + if (load_pack_revindex(the_repository, p)) return -1; } @@ -2204,8 +2222,8 @@ int for_each_packed_object(each_packed_object_fn cb, void *data, } static int add_promisor_object(const struct object_id *oid, - struct packed_git *pack, - uint32_t pos, + struct packed_git *pack UNUSED, + uint32_t pos UNUSED, void *set_) { struct oidset *set = set_; @@ -2263,7 +2281,7 @@ int is_promisor_object(const struct object_id *oid) static int promisor_objects_prepared; if (!promisor_objects_prepared) { - if (has_promisor_remote()) { + if (repo_has_promisor_remote(the_repository)) { for_each_packed_object(add_promisor_object, &promisor_objects, FOR_EACH_OBJECT_PROMISOR_ONLY | |