GIT v1.5.4.2 Release Notes
==========================

Fixes since v1.5.4
------------------

 * The configuration parser was not prepared to see string
   valued variables misspelled as boolean and segfaulted.

 * Temporary files left behind due to interrupted object
   transfers were not cleaned up with "git prune".

 * "git config --unset" was confused when the unset variables
   were spelled with continuation lines in the config file.

 * The merge message detection in "git cvsimport" did not catch
   a message that began with "Merge...".

 * "git status" suggests "git rm --cached" for unstaging the
   earlier "git add" before the initial commit.

 * "git status" output was incorrect during a partial commit.

 * "git bisect" refused to start when the HEAD was detached.

 * "git bisect" allowed a wildcard character in the commit
   message expanded while writing its log file.

 * Manual pages were not formatted correctly with docbook xsl
   1.72; added a workaround.

 * "git-commit -C $tag" used to work but rewrite in C done in
   1.5.4 broke it.  This was fixed in 1.5.4.1.

 * An entry in the .gitattributes file that names a pattern in a
   subdirectory of the directory it is in did not match
   correctly (e.g. pattern "b/*.c" in "a/.gitattributes" should
   match "a/b/foo.c" but it didn't).  This was fixed in 1.5.4.1.

 * Customized color specification was parsed incorrectly when
   numeric color values are used.  This was fixed in 1.5.4.1.

 * http transport misbehaved when linked with curl-gnutls.
