|  | #!/bin/sh | 
|  |  | 
|  | test_description='check bitmap operation with shallow repositories' | 
|  | . ./test-lib.sh | 
|  |  | 
|  | # We want to create a situation where the shallow, grafted | 
|  | # view of reachability does not match reality in a way that | 
|  | # might cause us to send insufficient objects. | 
|  | # | 
|  | # We do this with a history that repeats a state, like: | 
|  | # | 
|  | #      A    --   B    --   C | 
|  | #    file=1    file=2    file=1 | 
|  | # | 
|  | # and then create a shallow clone to the second commit, B. | 
|  | # In a non-shallow clone, that would mean we already have | 
|  | # the tree for A. But in a shallow one, we've grafted away | 
|  | # A, and fetching A to B requires that the other side send | 
|  | # us the tree for file=1. | 
|  | test_expect_success 'setup shallow repo' ' | 
|  | echo 1 >file && | 
|  | git add file && | 
|  | git commit -m orig && | 
|  | echo 2 >file && | 
|  | git commit -a -m update && | 
|  | git clone --no-local --bare --depth=1 . shallow.git && | 
|  | echo 1 >file && | 
|  | git commit -a -m repeat | 
|  | ' | 
|  |  | 
|  | test_expect_success 'turn on bitmaps in the parent' ' | 
|  | git repack -adb | 
|  | ' | 
|  |  | 
|  | test_expect_success 'shallow fetch from bitmapped repo' ' | 
|  | (cd shallow.git && git fetch) | 
|  | ' | 
|  |  | 
|  | test_done |