GIT v1.5.6.3 Release Notes
==========================

Fixes since v1.5.6.2
--------------------

* Setting core.sharerepository to traditional "true" value was supposed to make
  the repository group writable but should not affect permission for others.
  However, since 1.5.6, it was broken to drop permission for others when umask is
  022, making the repository unreadable by others.

* Setting GIT_TRACE will report spawning of external process via run_command().

* Using an object with very deep delta chain pinned memory needed for extracting
  intermediate base objects unnecessarily long, leading to excess memory usage.

* Bash completion script did not notice '--' marker on the command
  line and tried the relatively slow "ref completion" even when
  completing arguments after one.

* Registering a non-empty blob racily and then truncating the working
  tree file for it confused "racy-git avoidance" logic into thinking
  that the path is now unchanged.

* The section that describes attributes related to git-archive were placed
  in a wrong place in the gitattributes(5) manual page.

* "git am" was not helpful to the users when it detected that the committer
  information is not set up properly yet.

* "git clone" had a leftover debugging fprintf().

* "git clone -q" was not quiet enough as it used to and gave object count
  and progress reports.

* "git clone" marked downloaded packfile with .keep; this could be a
  good thing if the remote side is well packed but otherwise not,
  especially for a project that is not really big.

* "git daemon" used to call syslog() from a signal handler, which
  could raise signals of its own but generally is not reentrant.  This
  was fixed by restructuring the code to report syslog() after the handler
  returns.

* When "git push" tries to remove a remote ref, and corresponding
  tracking ref is missing, we used to report error (i.e. failure to
  remove something that does not exist).

* "git mailinfo" (hence "git am") did not handle commit log messages in a
  MIME multipart mail correctly.

Contains other various documentation fixes.
