diff options
author | Derrick Stolee <stolee@gmail.com> | 2018-07-12 19:39:33 (GMT) |
---|---|---|
committer | Junio C Hamano <gitster@pobox.com> | 2018-07-20 18:27:28 (GMT) |
commit | c4d25228ebb22a60f1fcb267e19c503bab708cdc (patch) | |
tree | 8367a0857c798421013fae47e8006cdab8d5a4af /packfile.c | |
parent | 662148c4356620f6567b0a689602079339ebadb7 (diff) | |
download | git-c4d25228ebb22a60f1fcb267e19c503bab708cdc.zip git-c4d25228ebb22a60f1fcb267e19c503bab708cdc.tar.gz git-c4d25228ebb22a60f1fcb267e19c503bab708cdc.tar.bz2 |
config: create core.multiPackIndex setting
The core.multiPackIndex config setting controls the multi-pack-
index (MIDX) feature. If false, the setting will disable all reads
from the multi-pack-index file.
Read this config setting in the new prepare_multi_pack_index_one()
which is called during prepare_packed_git(). This check is run once
per repository.
Add comparison commands in t5319-multi-pack-index.sh to check
typical Git behavior remains the same as the config setting is turned
on and off. This currently includes 'git rev-list' and 'git log'
commands to trigger several object database reads. Currently, these
would only catch an error in the prepare_multi_pack_index_one(), but
with later commits will catch errors in object lookups, abbreviations,
and approximate object counts.
Signed-off-by: Derrick Stolee <dstolee@microsoft.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Diffstat (limited to 'packfile.c')
-rw-r--r-- | packfile.c | 6 |
1 files changed, 5 insertions, 1 deletions
@@ -15,6 +15,7 @@ #include "tree-walk.h" #include "tree.h" #include "object-store.h" +#include "midx.h" char *odb_pack_name(struct strbuf *buf, const unsigned char *sha1, @@ -935,10 +936,13 @@ static void prepare_packed_git(struct repository *r) if (r->objects->packed_git_initialized) return; + prepare_multi_pack_index_one(r, r->objects->objectdir); prepare_packed_git_one(r, r->objects->objectdir, 1); prepare_alt_odb(r); - for (alt = r->objects->alt_odb_list; alt; alt = alt->next) + for (alt = r->objects->alt_odb_list; alt; alt = alt->next) { + prepare_multi_pack_index_one(r, alt->path); prepare_packed_git_one(r, alt->path, 0); + } rearrange_packed_git(r); prepare_packed_git_mru(r); r->objects->packed_git_initialized = 1; |