Git 2.45
[git/gitster.git] / t / t5311-pack-bitmaps-shallow.sh
blob4fe71fe8cd21ddfb0f44821c672585219278bbda
1 #!/bin/sh
3 test_description='check bitmap operation with shallow repositories'
5 TEST_PASSES_SANITIZE_LEAK=true
6 . ./test-lib.sh
8 # We want to create a situation where the shallow, grafted
9 # view of reachability does not match reality in a way that
10 # might cause us to send insufficient objects.
12 # We do this with a history that repeats a state, like:
14 # A -- B -- C
15 # file=1 file=2 file=1
17 # and then create a shallow clone to the second commit, B.
18 # In a non-shallow clone, that would mean we already have
19 # the tree for A. But in a shallow one, we've grafted away
20 # A, and fetching A to B requires that the other side send
21 # us the tree for file=1.
22 test_shallow_bitmaps () {
23 writeLookupTable=false
25 for i in "$@"
27 case $i in
28 "pack.writeBitmapLookupTable") writeLookupTable=true;;
29 esac
30 done
32 test_expect_success 'setup shallow repo' '
33 rm -rf * .git &&
34 git init &&
35 git config pack.writeBitmapLookupTable '"$writeLookupTable"' &&
36 echo 1 >file &&
37 git add file &&
38 git commit -m orig &&
39 echo 2 >file &&
40 git commit -a -m update &&
41 git clone --no-local --bare --depth=1 . shallow.git &&
42 echo 1 >file &&
43 git commit -a -m repeat
46 test_expect_success 'turn on bitmaps in the parent' '
47 git repack -adb
50 test_expect_success 'shallow fetch from bitmapped repo' '
51 (cd shallow.git && git fetch)
55 test_shallow_bitmaps
56 test_shallow_bitmaps "pack.writeBitmapLookupTable"
58 test_done