Git v1.7.7.1 Release Notes
==========================

Fixes since v1.7.7
------------------

 * On some BSD systems, adding +s bit on directories is detrimental
   (it is not necessary on BSD to begin with). "git init --shared"
   has been updated to take this into account without extra makefile
   settings on platforms the Makefile knows about.

 * After incorrectly written third-party tools store a tag object in
   HEAD, git diagnosed it as a repository corruption and refused to
   proceed in order to avoid spreading the damage. We now gracefully
   recover from such a situation by pretending as if the commit that
   is pointed at by the tag were in HEAD.

 * "git apply --whitespace=error" did not bother to report the exact
   line number in the patch that introduced new blank lines at the end
   of the file.

 * "git apply --index" did not check corrupted patch.

 * "git checkout $tree $directory/" resurrected paths locally removed or
   modified only in the working tree in $directory/ that did not appear
   in $directory of the given $tree. They should have been kept intact.

 * "git diff $tree $path" used to apply the pathspec at the output stage,
   reading the whole tree, wasting resources.

 * The code to check for updated submodules during a "git fetch" of the
   superproject had an unnecessary quadratic loop.

 * "git fetch" from a large bundle did not enable the progress output.

 * When "git fsck --lost-and-found" found that an empty blob object in the
   object store is unreachable, it incorrectly reported an error after
   writing the lost blob out successfully.

 * "git filter-branch" did not refresh the index before checking that the
   working tree was clean.

 * "git grep $tree" when run with multiple threads had an unsafe access to
   the object database that should have been protected with mutex.

 * The "--ancestry-path" option to "git log" and friends misbehaved in a
   history with complex criss-cross merges and showed an uninteresting
   side history as well.

 * Test t1304 assumed LOGNAME is always set, which may not be true on
   some systems.

 * Tests with --valgrind failed to find "mergetool" scriptlets.

 * "git patch-id" miscomputed the patch-id in a patch that has a line longer
   than 1kB.

 * When an "exec" insn failed after modifying the index and/or the working
   tree during "rebase -i", we now check and warn that the changes need to
   be cleaned up.
