@@ -24,6 +24,27 @@ pack_position () {
24
24
grep " $1 " objects | cut -d" " -f1
25
25
}
26
26
27
+ # test_pack_objects_reused_all <pack-reused> <packs-reused>
28
+ test_pack_objects_reused_all () {
29
+ : > trace2.txt &&
30
+ GIT_TRACE2_EVENT=" $PWD /trace2.txt" \
31
+ git pack-objects --stdout --revs --all --delta-base-offset \
32
+ > /dev/null &&
33
+
34
+ test_pack_reused " $1 " < trace2.txt &&
35
+ test_packs_reused " $2 " < trace2.txt
36
+ }
37
+
38
+ # test_pack_objects_reused <pack-reused> <packs-reused>
39
+ test_pack_objects_reused () {
40
+ : > trace2.txt &&
41
+ GIT_TRACE2_EVENT=" $PWD /trace2.txt" \
42
+ git pack-objects --stdout --revs > /dev/null &&
43
+
44
+ test_pack_reused " $1 " < trace2.txt &&
45
+ test_packs_reused " $2 " < trace2.txt
46
+ }
47
+
27
48
test_expect_success ' preferred pack is reused for single-pack reuse' '
28
49
test_config pack.allowPackReuse single &&
29
50
@@ -35,12 +56,24 @@ test_expect_success 'preferred pack is reused for single-pack reuse' '
35
56
36
57
git multi-pack-index write --bitmap &&
37
58
38
- : >trace2.txt &&
39
- GIT_TRACE2_EVENT="$PWD/trace2.txt" \
40
- git pack-objects --stdout --revs --all >/dev/null &&
59
+ test_pack_objects_reused_all 3 1
60
+ '
61
+
62
+ test_expect_success ' multi-pack reuse is disabled by default' '
63
+ test_pack_objects_reused_all 3 1
64
+ '
65
+
66
+ test_expect_success ' feature.experimental implies multi-pack reuse' '
67
+ test_config feature.experimental true &&
68
+
69
+ test_pack_objects_reused_all 6 2
70
+ '
71
+
72
+ test_expect_success ' multi-pack reuse can be disabled with feature.experimental' '
73
+ test_config feature.experimental true &&
74
+ test_config pack.allowPackReuse single &&
41
75
42
- test_pack_reused 3 <trace2.txt &&
43
- test_packs_reused 1 <trace2.txt
76
+ test_pack_objects_reused_all 3 1
44
77
'
45
78
46
79
test_expect_success ' enable multi-pack reuse' '
@@ -58,21 +91,11 @@ test_expect_success 'reuse all objects from subset of bitmapped packs' '
58
91
^$(git rev-parse A)
59
92
EOF
60
93
61
- : >trace2.txt &&
62
- GIT_TRACE2_EVENT="$PWD/trace2.txt" \
63
- git pack-objects --stdout --revs <in >/dev/null &&
64
-
65
- test_pack_reused 6 <trace2.txt &&
66
- test_packs_reused 2 <trace2.txt
94
+ test_pack_objects_reused 6 2 <in
67
95
'
68
96
69
97
test_expect_success ' reuse all objects from all packs' '
70
- : >trace2.txt &&
71
- GIT_TRACE2_EVENT="$PWD/trace2.txt" \
72
- git pack-objects --stdout --revs --all >/dev/null &&
73
-
74
- test_pack_reused 9 <trace2.txt &&
75
- test_packs_reused 3 <trace2.txt
98
+ test_pack_objects_reused_all 9 3
76
99
'
77
100
78
101
test_expect_success ' reuse objects from first pack with middle gap' '
@@ -105,12 +128,7 @@ test_expect_success 'reuse objects from first pack with middle gap' '
105
128
^$(git rev-parse D)
106
129
EOF
107
130
108
- : >trace2.txt &&
109
- GIT_TRACE2_EVENT="$PWD/trace2.txt" \
110
- git pack-objects --stdout --delta-base-offset --revs <in >/dev/null &&
111
-
112
- test_pack_reused 3 <trace2.txt &&
113
- test_packs_reused 1 <trace2.txt
131
+ test_pack_objects_reused 3 1 <in
114
132
'
115
133
116
134
test_expect_success ' reuse objects from middle pack with middle gap' '
@@ -126,12 +144,7 @@ test_expect_success 'reuse objects from middle pack with middle gap' '
126
144
^$(git rev-parse D)
127
145
EOF
128
146
129
- : >trace2.txt &&
130
- GIT_TRACE2_EVENT="$PWD/trace2.txt" \
131
- git pack-objects --stdout --delta-base-offset --revs <in >/dev/null &&
132
-
133
- test_pack_reused 3 <trace2.txt &&
134
- test_packs_reused 1 <trace2.txt
147
+ test_pack_objects_reused 3 1 <in
135
148
'
136
149
137
150
test_expect_success ' omit delta with uninteresting base (same pack)' '
@@ -161,10 +174,6 @@ test_expect_success 'omit delta with uninteresting base (same pack)' '
161
174
^$base
162
175
EOF
163
176
164
- : >trace2.txt &&
165
- GIT_TRACE2_EVENT="$PWD/trace2.txt" \
166
- git pack-objects --stdout --delta-base-offset --revs <in >/dev/null &&
167
-
168
177
# We can only reuse the 3 objects corresponding to "other" from
169
178
# the latest pack.
170
179
#
@@ -176,8 +185,7 @@ test_expect_success 'omit delta with uninteresting base (same pack)' '
176
185
# The remaining objects from the other pack are similarly not
177
186
# reused because their objects are on the uninteresting side of
178
187
# the query.
179
- test_pack_reused 3 <trace2.txt &&
180
- test_packs_reused 1 <trace2.txt
188
+ test_pack_objects_reused 3 1 <in
181
189
'
182
190
183
191
test_expect_success ' omit delta from uninteresting base (cross pack)' '
@@ -190,15 +198,10 @@ test_expect_success 'omit delta from uninteresting base (cross pack)' '
190
198
191
199
git multi-pack-index write --bitmap --preferred-pack="pack-$P.idx" &&
192
200
193
- : >trace2.txt &&
194
- GIT_TRACE2_EVENT="$PWD/trace2.txt" \
195
- git pack-objects --stdout --delta-base-offset --all >/dev/null &&
196
-
197
201
packs_nr="$(find $packdir -type f -name "pack-*.pack" | wc -l)" &&
198
202
objects_nr="$(git rev-list --count --all --objects)" &&
199
203
200
- test_pack_reused $(($objects_nr - 1)) <trace2.txt &&
201
- test_packs_reused $packs_nr <trace2.txt
204
+ test_pack_objects_reused_all $(($objects_nr - 1)) $packs_nr
202
205
'
203
206
204
207
test_done
0 commit comments