3
test_description='multi-pack-indexes'
4
. ./test-lib.sh
5
6
+objdir=.git/objects
7
+
8
midx_read_expect () {
9
NUM_PACKS=$1
10
NUM_OBJECTS=$2
78
'
79
80
test_expect_success 'write midx with one v1 pack' '
79
- pack=$(git pack-objects --index-version=1 pack/test <obj-list) &&
80
- test_when_finished rm pack/test-$pack.pack pack/test-$pack.idx pack/multi-pack-index &&
81
- git multi-pack-index --object-dir=. write &&
82
- midx_read_expect 1 18 4 .
81
+ pack=$(git pack-objects --index-version=1 $objdir/pack/test <obj-list) &&
82
+ test_when_finished rm $objdir/pack/test-$pack.pack \
83
+ $objdir/pack/test-$pack.idx $objdir/pack/multi-pack-index &&
84
+ git multi-pack-index --object-dir=$objdir write &&
85
+ midx_read_expect 1 18 4 $objdir
86
'
87
88
+midx_git_two_modes () {
89
+ git -c core.multiPackIndex=false $1 >expect &&
90
+ git -c core.multiPackIndex=true $1 >actual &&
91
+ test_cmp expect actual
92
+}
93
+
94
+compare_results_with_midx () {
95
+ MSG=$1
96
+ test_expect_success "check normal git operations: $MSG" '
97
+ midx_git_two_modes "rev-list --objects --all" &&
98
+ midx_git_two_modes "log --raw"
99
+ '
100
+}
101
+
102
test_expect_success 'write midx with one v2 pack' '
86
- git pack-objects --index-version=2,0x40 pack/test <obj-list &&
87
- git multi-pack-index --object-dir=. write &&
88
- midx_read_expect 1 18 4 .
103
+ git pack-objects --index-version=2,0x40 $objdir/pack/test <obj-list &&
104
+ git multi-pack-index --object-dir=$objdir write &&
105
+ midx_read_expect 1 18 4 $objdir
106
'
107
108
+compare_results_with_midx "one v2 pack"
109
+
110
test_expect_success 'add more objects' '
111
for i in $(test_seq 6 10)
112
do
116
'
117
118
test_expect_success 'write midx with two packs' '
100
- git pack-objects --index-version=1 pack/test-2 <obj-list &&
101
- git multi-pack-index --object-dir=. write &&
102
- midx_read_expect 2 34 4 .
119
+ git pack-objects --index-version=1 $objdir/pack/test-2 <obj-list &&
120
+ git multi-pack-index --object-dir=$objdir write &&
121
+ midx_read_expect 2 34 4 $objdir
122
'
123
124
+compare_results_with_midx "two packs"
125
+
126
test_expect_success 'add more packs' '
127
for j in $(test_seq 11 20)
128
do
129
generate_objects $j &&
130
commit_and_list_objects &&
110
- git pack-objects --index-version=2 pack/test-pack <obj-list
131
+ git pack-objects --index-version=2 $objdir/pack/test-pack <obj-list
132
done
133
'
134
135
+compare_results_with_midx "mixed mode (two packs + extra)"
136
+
137
test_expect_success 'write midx with twelve packs' '
115
- git multi-pack-index --object-dir=. write &&
116
- midx_read_expect 12 74 4 .
138
+ git multi-pack-index --object-dir=$objdir write &&
139
+ midx_read_expect 12 74 4 $objdir
140
'
141
142
+compare_results_with_midx "twelve packs"
143
+
144
# usage: corrupt_data <file> <pos> [<data>]
145
corrupt_data () {
146
file=$1