Git v1.7.0.2 Release Notes
==========================

Fixes since v1.7.0.1
--------------------

 * GIT_PAGER was not honored consistently by some scripted Porcelains, most
   notably "git am".

 * updating working tree files after telling git to add them to the
   index and while it is still working created garbage object files in
   the repository without diagnosing it as an error.

 * "git bisect -- pathspec..." did not diagnose an error condition properly when
   the simplification with given pathspec made the history empty.

 * "git rev-list --cherry-pick A...B" now has an obvious optimization when the
   histories haven't diverged (i.e. when one end is an ancestor of the other).

 * "git diff --quiet -w" did not work as expected.

 * "git fast-import" didn't work with a large input, as it lacked support
   for producing the pack index in v2 format.

 * "git imap-send" didn't use CRLF line endings over the imap protocol
   when storing its payload to the draft box, violating RFC 3501.

 * "git log --format='%w(x,y,z)%b'" and friends that rewrap message
   has been optimized for utf-8 payload.

 * Error messages generated on the receiving end did not come back to "git
   push".

 * "git status" in 1.7.0 lacked the optimization we used to have in 1.6.X series
   to speed up scanning of large working tree.

 * "gitweb" did not diagnose parsing errors properly while reading tis configuration
   file.

And other minor fixes and documentation updates.
