Git v1.7.10.4 Release Notes
===========================

Fixes since v1.7.10.3
---------------------

 * The message file for Swedish translation has been updated a bit.

 * A name taken from mailmap was copied into an internal buffer
   incorrectly and could overun the buffer if it is too long.

 * A malformed commit object that has a header line chomped in the
   middle could kill git with a NULL pointer dereference.

 * An author/committer name that is a single character was mishandled
   as an invalid name by mistake.

 * The progress indicator for a large "git checkout" was sent to
   stderr even if it is not a terminal.

 * "git grep -e '$pattern'", unlike the case where the patterns are
   read from a file, did not treat individual lines in the given
   pattern argument as separate regular expressions as it should.

 * When "git rebase" was given a bad commit to replay the history on,
   its error message did not correctly give the command line argument
   it had trouble parsing.

Also contains minor fixes and documentation updates.
