diff options
-rw-r--r-- | midx.c | 11 | ||||
-rwxr-xr-x | t/t5319-multi-pack-index.sh | 17 |
2 files changed, 23 insertions, 5 deletions
@@ -331,7 +331,7 @@ int midx_contains_pack(struct multi_pack_index *m, const char *idx_name) int prepare_multi_pack_index_one(struct repository *r, const char *object_dir, int local) { - struct multi_pack_index *m = r->objects->multi_pack_index; + struct multi_pack_index *m; struct multi_pack_index *m_search; int config_value; @@ -339,14 +339,15 @@ int prepare_multi_pack_index_one(struct repository *r, const char *object_dir, i !config_value) return 0; - for (m_search = m; m_search; m_search = m_search->next) + for (m_search = r->objects->multi_pack_index; m_search; m_search = m_search->next) if (!strcmp(object_dir, m_search->object_dir)) return 1; - r->objects->multi_pack_index = load_multi_pack_index(object_dir, local); + m = load_multi_pack_index(object_dir, local); - if (r->objects->multi_pack_index) { - r->objects->multi_pack_index->next = m; + if (m) { + m->next = r->objects->multi_pack_index; + r->objects->multi_pack_index = m; return 1; } diff --git a/t/t5319-multi-pack-index.sh b/t/t5319-multi-pack-index.sh index ae1d5d4592..4b6e2825a6 100755 --- a/t/t5319-multi-pack-index.sh +++ b/t/t5319-multi-pack-index.sh @@ -149,6 +149,23 @@ test_expect_success 'repack removes multi-pack-index' ' compare_results_with_midx "after repack" +test_expect_success 'multi-pack-index and alternates' ' + git init --bare alt.git && + echo $(pwd)/alt.git/objects >.git/objects/info/alternates && + echo content1 >file1 && + altblob=$(GIT_DIR=alt.git git hash-object -w file1) && + git cat-file blob $altblob && + git rev-list --all +' + +compare_results_with_midx "with alternate (local midx)" + +test_expect_success 'multi-pack-index in an alternate' ' + mv .git/objects/pack/* alt.git/objects/pack +' + +compare_results_with_midx "with alternate (remote midx)" + # usage: corrupt_data <file> <pos> [<data>] corrupt_data () { |