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 &&