t0410: test fetching from many promisor remotes
This shows that it is now possible to fetch objects from more than one promisor remote, and that fetching from a new promisor remote can configure it as one. Helped-by: SZEDER Gábor <szeder.dev@gmail.com> Signed-off-by: Christian Couder <chriscool@tuxfamily.org> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Christian Couder committed
Jun 25, 2019 at 15:40 UTC
9a4c50788641887510876ea1b40c77daf9b7f7cf
1 file changed
+48
-1
t/t0410-partial-clone.sh
+48
-1
@@ -183,8 +183,55 @@ test_expect_success 'fetching of missing objects works with ref-in-want enabled'
183
grep "git< fetch=.*ref-in-want" trace
184
'
185
186
+test_expect_success 'fetching of missing objects from another promisor remote' '
187
+ git clone "file://$(pwd)/server" server2 &&
188
+ test_commit -C server2 bar &&
189
+ git -C server2 repack -a -d --write-bitmap-index &&
190
+ HASH2=$(git -C server2 rev-parse bar) &&
191
+
192
+ git -C repo remote add server2 "file://$(pwd)/server2" &&
193
+ git -C repo config remote.server2.promisor true &&
194
+ git -C repo cat-file -p "$HASH2" &&
195
+
196
+ git -C repo fetch server2 &&
197
+ rm -rf repo/.git/objects/* &&
198
+ git -C repo cat-file -p "$HASH2" &&
199
+
200
+ # Ensure that the .promisor file is written, and check that its
201
+ # associated packfile contains the object
202
+ ls repo/.git/objects/pack/pack-*.promisor >promisorlist &&
203
+ test_line_count = 1 promisorlist &&
204
+ IDX=$(sed "s/promisor$/idx/" promisorlist) &&
205
+ git verify-pack --verbose "$IDX" >out &&
206
+ grep "$HASH2" out
207
+'
208
+
209
+test_expect_success 'fetching of missing objects configures a promisor remote' '
210
+ git clone "file://$(pwd)/server" server3 &&
211
+ test_commit -C server3 baz &&
212
+ git -C server3 repack -a -d --write-bitmap-index &&
213
+ HASH3=$(git -C server3 rev-parse baz) &&
214
+ git -C server3 config uploadpack.allowfilter 1 &&
215
+
216
+ rm repo/.git/objects/pack/pack-*.promisor &&
217
+
218
+ git -C repo remote add server3 "file://$(pwd)/server3" &&
219
+ git -C repo fetch --filter="blob:none" server3 $HASH3 &&
220
+
221
+ test_cmp_config -C repo true remote.server3.promisor &&
222
+
223
+ # Ensure that the .promisor file is written, and check that its
224
+ # associated packfile contains the object
225
+ ls repo/.git/objects/pack/pack-*.promisor >promisorlist &&
226
+ test_line_count = 1 promisorlist &&
227
+ IDX=$(sed "s/promisor$/idx/" promisorlist) &&
228
+ git verify-pack --verbose "$IDX" >out &&
229
+ grep "$HASH3" out
230
+'
231
+
232
test_expect_success 'fetching of missing blobs works' '
187
- rm -rf server repo &&
233
+ rm -rf server server2 repo &&
234
+ rm -rf server server3 repo &&
235
test_create_repo server &&
236
test_commit -C server foo &&
237
git -C server repack -a -d --write-bitmap-index &&