Merge branch 'rj/sparse'
[gitweb.git] / t / t3211-peel-ref.sh
index 85f09be9f422e343fb0ee1e8541882448e2e22a7..3b7caca4212ea8ee99e8dba8955eab73f0e2f3df 100755 (executable)
@@ -39,4 +39,35 @@ test_expect_success 'refs are peeled outside of refs/tags (packed)' '
        test_cmp expect actual
 '
 
+test_expect_success 'create old-style pack-refs without fully-peeled' '
+       # Git no longer writes without fully-peeled, so we just write our own
+       # from scratch; we could also munge the existing file to remove the
+       # fully-peeled bits, but that seems even more prone to failure,
+       # especially if the format ever changes again. At least this way we
+       # know we are emulating exactly what an older git would have written.
+       {
+               echo "# pack-refs with: peeled " &&
+               print_ref "refs/heads/master" &&
+               print_ref "refs/outside/foo" &&
+               print_ref "refs/tags/base" &&
+               print_ref "refs/tags/foo" &&
+               echo "^$(git rev-parse "refs/tags/foo^{}")"
+       } >tmp &&
+       mv tmp .git/packed-refs
+'
+
+test_expect_success 'refs are peeled outside of refs/tags (old packed)' '
+       git show-ref -d >actual &&
+       test_cmp expect actual
+'
+
+test_expect_success 'peeled refs survive deletion of packed ref' '
+       git pack-refs --all &&
+       cp .git/packed-refs fully-peeled &&
+       git branch yadda &&
+       git pack-refs --all &&
+       git branch -d yadda &&
+       test_cmp fully-peeled .git/packed-refs
+'
+
 test_done