GIT v1.5.3.2 Release Notes
==========================

Fixes since v1.5.3.1
--------------------

 * git-push sent thin packs by default, which was not good for
   the public distribution server (no point in saving transfer
   while pushing; no point in making the resulting pack less
   optimum).

 * git-svn sometimes terminated with "Malformed network data" when
   talking over svn:// protocol.

 * git-send-email re-issued the same message-id about 10% of the
   time if you fired off 30 messages within a single second.

 * git-stash was not terminating the log message of commits it
   internally creates with LF.

 * git-apply failed to check the size of the patch hunk when its
   beginning part matched the remainder of the preimage exactly,
   even though the preimage recorded in the hunk was much larger
   (therefore the patch should not have applied), leading to a
   segfault.

 * "git rm foo && git commit foo" complained that 'foo' needs to
   be added first, instead of committing the removal, which was a
   nonsense.

 * git grep -c said "/dev/null: 0".

 * git-add -u failed to recognize a blob whose type changed
   between the index and the work tree.

 * The limit to rename detection has been tightened a lot to
   reduce performance problems with a huge change.

 * cvsimport and svnimport barfed when the input tried to move
   a tag.

 * "git apply -pN" did not chop the right number of directories.

 * "git svnimport" did not like SVN tags with funny characters in them.

 * git-gui 0.8.3, with assorted fixes, including:

   - font-chooser on X11 was unusable with large number of fonts;
   - a diff that contained a deleted symlink made it barf;
   - an untracked symbolic link to a directory made it fart;
   - a file with % in its name made it vomit;


Documentation updates
---------------------

User manual has been somewhat restructured.  I think the new
organization is much easier to read.
