3 test_description
='rev-list with .keep packs'
5 TEST_PASSES_SANITIZE_LEAK
=true
8 test_expect_success
'setup' '
13 KEPT_PACK=$(git pack-objects --revs .git/objects/pack/pack <<-EOF
18 MISC_PACK=$(git pack-objects --revs .git/objects/pack/pack <<-EOF
24 touch .git/objects/pack/pack-$KEPT_PACK.keep
28 git rev-list
"$@" >out
&&
33 git show-index
<$1 >expect-idx
&&
34 cut
-d" " -f2 <expect-idx |
sort
37 test_expect_success
'--no-kept-objects excludes trees and blobs in .keep packs' '
38 rev_list_objects --objects --all --no-object-names >kept &&
39 rev_list_objects --objects --all --no-object-names --no-kept-objects >no-kept &&
41 idx_objects .git/objects/pack/pack-$KEPT_PACK.idx >expect &&
42 comm -3 kept no-kept >actual &&
44 test_cmp expect actual
47 test_expect_success
'--no-kept-objects excludes kept non-MIDX object' '
48 test_config core.multiPackIndex true &&
50 # Create a pack with just the commit object in pack, and do not mark it
51 # as kept (even though it appears in $KEPT_PACK, which does have a .keep
53 MIDX_PACK=$(git pack-objects .git/objects/pack/pack <<-EOF
58 # Write a MIDX containing all packs, but use the version of the commit
59 # at "kept" in a non-kept pack by touching $MIDX_PACK.
60 touch .git/objects/pack/pack-$MIDX_PACK.pack &&
61 git multi-pack-index write &&
63 rev_list_objects --objects --no-object-names --no-kept-objects HEAD >actual &&
65 idx_objects .git/objects/pack/pack-$MISC_PACK.idx &&
66 git rev-list --objects --no-object-names refs/tags/loose
68 test_cmp expect actual