GIT v1.6.4.1 Release Notes
==========================

Fixes since v1.6.4
------------------

 * An unquoted value in the configuration file, when it contains more than
   one whitespaces in a row, got them replaced with a single space.

 * "git am" used to accept a single piece of e-mail per file (not a mbox)
   as its input, but multiple input format support in v1.6.4 broke it.
   Apparently many people have been depending on this feature.

 * The short help text for "git filter-branch" command was a single long
   line, wrapped by terminals, and was hard to read.

 * The "recursive" strategy of "git merge" segfaulted when a merge has
   more than one merge-bases, and merging of these merge-bases involves
   a rename/rename or a rename/add conflict.

 * "git pull --rebase" did not use the right fork point when the
   repository has already fetched from the upstream that rewinds the
   branch it is based on in an earlier fetch.

 * Explain the concept of fast-forward more fully in "git push"
   documentation, and hint to refer to it from an error message when the
   command refuses an update to protect the user.

 * The default value for pack.deltacachesize, used by "git repack", is now
   256M, instead of unbounded.  Otherwise a repack of a moderately sized
   repository would needlessly eat into swap.

 * Document how "git repack" (hence "git gc") interacts with a repository
   that borrows its objects from other repositories (e.g. ones created by
   "git clone -s").

 * "git show" on an annotated tag lacked a delimiting blank line between
   the tag itself and the contents of the object it tags.

 * "git verify-pack -v" erroneously reported number of objects with too
   deep delta depths as "chain length 0" objects.

 * Long names of authors and committers outside US-ASCII were sometimes
   incorrectly shown in "gitweb".

Other minor documentation updates are included.
