forked from git/git
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge branch 'jk/fully-peeled-packed-ref'
Not that we do not actively encourage having annotated tags outside refs/tags/ hierarchy, but they were not advertised correctly to the ls-remote and fetch with recent version of Git. * jk/fully-peeled-packed-ref: pack-refs: add fully-peeled trait pack-refs: write peeled entry for non-tags use parse_object_or_die instead of die("bad object") avoid segfaults on parse_object failure
- Loading branch information
Showing
9 changed files
with
145 additions
and
27 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,64 @@ | ||
#!/bin/sh | ||
|
||
test_description='tests for the peel_ref optimization of packed-refs' | ||
. ./test-lib.sh | ||
|
||
test_expect_success 'create annotated tag in refs/tags' ' | ||
test_commit base && | ||
git tag -m annotated foo | ||
' | ||
|
||
test_expect_success 'create annotated tag outside of refs/tags' ' | ||
git update-ref refs/outside/foo refs/tags/foo | ||
' | ||
|
||
# This matches show-ref's output | ||
print_ref() { | ||
echo "$(git rev-parse "$1") $1" | ||
} | ||
|
||
test_expect_success 'set up expected show-ref output' ' | ||
{ | ||
print_ref "refs/heads/master" && | ||
print_ref "refs/outside/foo" && | ||
print_ref "refs/outside/foo^{}" && | ||
print_ref "refs/tags/base" && | ||
print_ref "refs/tags/foo" && | ||
print_ref "refs/tags/foo^{}" | ||
} >expect | ||
' | ||
|
||
test_expect_success 'refs are peeled outside of refs/tags (loose)' ' | ||
git show-ref -d >actual && | ||
test_cmp expect actual | ||
' | ||
|
||
test_expect_success 'refs are peeled outside of refs/tags (packed)' ' | ||
git pack-refs --all && | ||
git show-ref -d >actual && | ||
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_done |