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

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

* Setting core.sharedrepository 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.
