Git v1.7.9.3 Release Notes
==========================

Fixes since v1.7.9.2
--------------------

 * "git p4" (in contrib/) submit the changes to a wrong place when the
   "--use-client-spec" option is set.

 * The config.mak.autogen generated by optional autoconf support tried
   to link the binary with -lintl even when libintl.h is missing from
   the system.

 * When the filter driver exits before reading the content before the
   main git process writes the contents to be filtered to the pipe to
   it, the latter could be killed with SIGPIPE instead of ignoring
   such an event as an error.

 * "git add --refresh <pathspec>" used to warn about unmerged paths
   outside the given pathspec.

 * The bulk check-in codepath in "git add" streamed contents that
   needs smudge/clean filters without running them, instead of punting
   and delegating to the codepath to run filters after slurping
   everything to core.

 * "git branch --with $that" assumed incorrectly that the user will never
   ask the question with nonsense value in $that.

 * "git bundle create" produced a corrupt bundle file upon seeing
   commits with excessively long subject line.

 * When a remote helper exits before reading the blank line from the
   main git process to signal the end of commands, the latter could be
   killed with SIGPIPE. Instead we should ignore such event as a
   non-error.

 * The commit log template given with "git merge --edit" did not have
   a short instructive text like what "git commit" gives.

 * "git rev-list --verify-objects -q" omitted the extra verification
   it needs to do over "git rev-list --objects -q" by mistake.

 * "gitweb" used to drop warnings in the log file when "heads" view is
   accessed in a repository whose HEAD does not point at a valid
   branch.

 * An invalid regular expression pattern given by an end user made
   "gitweb" to return garbled response.

Also contains minor fixes and documentation updates.
