Browse Source
* maint-1.8.1: Start preparing for 1.8.1.6 git-tag(1): we tag HEAD by default Fix revision walk for commits with the same dates t2003: work around path mangling issue on Windows 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 entry: fix filter lookup t2003: modernize style name-hash.c: fix endless loop with core.ignorecase=truemaint
Junio C Hamano
12 years ago
19 changed files with 462 additions and 164 deletions
@ -0,0 +1,34 @@
@@ -0,0 +1,34 @@
|
||||
Git 1.8.1.6 Release Notes |
||||
========================= |
||||
|
||||
Fixes since v1.8.1.5 |
||||
-------------------- |
||||
|
||||
* The code to keep track of what directory names are known to Git on |
||||
platforms with case insensitive filesystems can get confused upon a |
||||
hash collision between these pathnames and looped forever. |
||||
|
||||
* When the "--prefix" option is used to "checkout-index", the code |
||||
did not pick the correct output filter based on the attribute |
||||
setting. |
||||
|
||||
* Annotated tags outside refs/tags/ hierarchy were not advertised |
||||
correctly to the ls-remote and fetch with recent version of Git. |
||||
|
||||
* The logic used by "git diff -M --stat" to shorten the names of |
||||
files before and after a rename did not work correctly when the |
||||
common prefix and suffix between the two filenames overlapped. |
||||
|
||||
* "git update-index -h" did not do the usual "-h(elp)" thing. |
||||
|
||||
* perl/Git.pm::cat_blob slurped everything in core only to write it |
||||
out to a file descriptor, which was not a very smart thing to do. |
||||
|
||||
* The SSL peer verification done by "git imap-send" did not ask for |
||||
Server Name Indication (RFC 4366), failing to connect SSL/TLS |
||||
sites that serve multiple hostnames on a single IP. |
||||
|
||||
* "git bundle verify" did not say "records a complete history" for a |
||||
bundle that does not have any prerequisites. |
||||
|
||||
Also contains various documentation fixes. |
@ -0,0 +1,64 @@
@@ -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 |
@ -0,0 +1,20 @@
@@ -0,0 +1,20 @@
|
||||
#!/bin/sh |
||||
|
||||
test_description='git-status with core.ignorecase=true' |
||||
|
||||
. ./test-lib.sh |
||||
|
||||
test_expect_success 'status with hash collisions' ' |
||||
# note: "V/", "V/XQANY/" and "WURZAUP/" produce the same hash code |
||||
# in name-hash.c::hash_name |
||||
mkdir V && |
||||
mkdir V/XQANY && |
||||
mkdir WURZAUP && |
||||
touch V/XQANY/test && |
||||
git config core.ignorecase true && |
||||
git add . && |
||||
# test is successful if git status completes (no endless loop) |
||||
git status |
||||
' |
||||
|
||||
test_done |
Loading…
Reference in new issue