return inserted;
}
-static int load_one_loose_object_map(struct odb_source_loose *loose)
+int loose_object_map_load(struct odb_source_loose *loose)
{
struct repository *repo = loose->base.odb->repo;
struct strbuf buf = STRBUF_INIT;
FILE *fp;
int ret = -1;
+ if (!should_use_loose_object_map(repo))
+ return 0;
+
if (!loose->map)
loose_object_map_init(&loose->map);
if (!loose->cache) {
{
struct odb_source *source;
- if (!should_use_loose_object_map(repo))
- return 0;
-
odb_prepare_alternates(repo->objects);
-
for (source = repo->objects->sources; source; source = source->next) {
struct odb_source_files *files = odb_source_files_downcast(source);
- if (load_one_loose_object_map(files->loose) < 0)
+ if (loose_object_map_load(files->loose) < 0)
return -1;
}
void loose_object_map_init(struct loose_object_map **map);
void loose_object_map_clear(struct loose_object_map **map);
+int loose_object_map_load(struct odb_source_loose *loose);
int repo_loose_object_map_oid(struct repository *repo,
const struct object_id *src,
const struct git_hash_algo *dest_algo,
if (!is_absolute_path(loose->base.path))
chdir_notify_register(NULL, odb_source_loose_reparent, loose);
+ loose_object_map_load(loose);
+
return loose;
}
if (hash_algo_by_ptr(repo->hash_algo) == algo)
BUG("hash_algo and compat_hash_algo match");
repo->compat_hash_algo = algo ? &hash_algos[algo] : NULL;
- if (repo->compat_hash_algo)
- repo_read_loose_object_map(repo);
#else
if (algo)
die(_("compatibility hash algorithm support requires Rust"));
repo->bare_cfg = format->is_bare;
repo_set_hash_algo(repo, format->hash_algo);
- repo->objects = odb_new(repo, object_directory,
- alternate_object_directories);
repo_set_compat_hash_algo(repo, format->compat_hash_algo);
repo_set_ref_storage_format(repo,
format->ref_storage_format,
repo->repository_format_precious_objects =
format->precious_objects;
+ repo->objects = odb_new(repo, object_directory,
+ alternate_object_directories);
+
free(alternate_object_directories);
free(object_directory);
return 0;