@@ -183,8 +183,55 @@ test_expect_success 'fetching of missing objects works with ref-in-want enabled'
183
183
grep "git< fetch=.*ref-in-want" trace
184
184
'
185
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
+
186
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 &&
188
235
test_create_repo server &&
189
236
test_commit -C server foo &&
190
237
git -C server repack -a -d --write-bitmap-index &&
0 commit comments