[ANNOUNCE] Git v2.2.0-rc2

2014-11-14 Thread Junio C Hamano
A release candidate Git v2.2.0-rc2 is now available for testing
at the usual places.  We expect that the final will happen late
next week, and it will be different from this tarball only with
small documentation update changes.

The tarballs are found at:

https://www.kernel.org/pub/software/scm/git/testing/

The following public repositories all have a copy of the 'v2.2.0-rc2'
tag and the 'master' branch that the tag points at:

  url = https://kernel.googlesource.com/pub/scm/git/git
  url = git://repo.or.cz/alt-git.git
  url = https://code.google.com/p/git-core/
  url = git://git.sourceforge.jp/gitroot/git-core/git.git
  url = git://git-core.git.sourceforge.net/gitroot/git-core/git-core
  url = https://github.com/gitster/git

Git v2.2 Release Notes (draft)
==

Updates since v2.1
--

Ports

 * Building on older MacOS X systems automatically sets
   the necessary NO_APPLE_COMMON_CRYPTO build-time option.

 * The support to build with NO_PTHREADS has been resurrected.

 * Compilation options has been updated a bit to support z/OS port
   better.


UI, Workflows & Features

 * "git archive" learned to filter what gets archived with pathspec.

 * "git config --edit --global" starts from a skeletal per-user
   configuration file contents, instead of a total blank, when the
   user does not already have any.  This immediately reduces the
   need for a later "Have you forgotten setting core.user?" and we
   can add more to the template as we gain more experience.

 * "git stash list -p" used to be almost always a no-op because each
   stash entry is represented as a merge commit.  It learned to show
   the difference between the base commit version and the working tree
   version, which is in line with what "git show" gives.

 * Sometimes users want to report a bug they experience on their
   repository, but they are not at liberty to share the contents of
   the repository.  "fast-export" was taught an "--anonymize" option
   to replace blob contents, names of people and paths and log
   messages with bland and simple strings to help them.

 * "git difftool" learned an option to stop feeding paths to the
   diff backend when it exits with a non-zero status.

 * "git grep" allows to paint (or not paint) partial matches on
   context lines when showing "grep -C" output in color.

 * "log --date=iso" uses a slight variant of ISO 8601 format that is
   made more human readable.  A new "--date=iso-strict" option gives
   datetime output that is more strictly conformant.

 * The logic "git prune" uses is more resilient against various corner
   cases.

 * A broken reimplementation of Git could write an invalid index that
   records both stage #0 and higher stage entries for the same path.
   We now notice and reject such an index, as there is no sensible
   fallback (we do not know if the broken tool wanted to resolve and
   forgot to remove higher stage entries, or if it wanted to unresolve
   and forgot to remove the stage#0 entry).

 * The temporary files "git mergetool" uses are named to avoid too
   many dots in them (e.g. a temporary file for "hello.c" used to be
   named e.g. "hello.BASE.4321.c" but now uses underscore instead,
   e.g. "hello_BASE_4321.c").

 * The temporary files "git mergetools" uses can be placed in a newly
   created temporary directory, instead of the current directory, by
   setting the mergetool.writeToTemp configuration variable.

 * "git mergetool" understands "--tool bc" now, as version 4 of
   BeyondCompare can be driven the same way as its version 3 and it
   feels awkward to say "--tool bc3".

 * The "pre-receive" and "post-receive" hooks are no longer required
   to consume their input fully (not following this requirement used
   to result in intermittent errors in "git push").

 * The pretty-format specifier "%d", which expanded to " (tagname)"
   for a tagged commit, gained a cousin "%D" that just gives the
   "tagname" without frills.

 * "git push" learned "--signed" push, that allows a push (i.e.
   request to update the refs on the other side to point at a new
   history, together with the transmission of necessary objects) to be
   signed, so that it can be verified and audited, using the GPG
   signature of the person who pushed, that the tips of branches at a
   public repository really point the commits the pusher wanted to,
   without having to "trust" the server.

 * "git interpret-trailers" is a new filter to programmatically edit
the tail end of the commit log messages.

 * "git help everyday" shows the "Everyday Git in 20 commands or so"
   document, whose contents have been updated to more modern Git
   practice.

 * On the "git svn" front, work to reduce memory consumption and
   to improve handling of mergeinfo progresses.


Performance, Internal Implementation, etc.

 * The API to manipulate the "refs" has been restructured to make it
   more transactional, with the eventual goal to allow all-or-none
   

[ANNOUNCE] Git v2.2.0-rc2

2014-11-14 Thread Junio C Hamano
A release candidate Git v2.2.0-rc2 is now available for testing
at the usual places.  We expect that the final will happen late
next week, and it will be different from this tarball only with
small documentation update changes.

The tarballs are found at:

https://www.kernel.org/pub/software/scm/git/testing/

The following public repositories all have a copy of the 'v2.2.0-rc2'
tag and the 'master' branch that the tag points at:

  url = https://kernel.googlesource.com/pub/scm/git/git
  url = git://repo.or.cz/alt-git.git
  url = https://code.google.com/p/git-core/
  url = git://git.sourceforge.jp/gitroot/git-core/git.git
  url = git://git-core.git.sourceforge.net/gitroot/git-core/git-core
  url = https://github.com/gitster/git

Git v2.2 Release Notes (draft)
==

Updates since v2.1
--

Ports

 * Building on older MacOS X systems automatically sets
   the necessary NO_APPLE_COMMON_CRYPTO build-time option.

 * The support to build with NO_PTHREADS has been resurrected.

 * Compilation options has been updated a bit to support z/OS port
   better.


UI, Workflows  Features

 * git archive learned to filter what gets archived with pathspec.

 * git config --edit --global starts from a skeletal per-user
   configuration file contents, instead of a total blank, when the
   user does not already have any.  This immediately reduces the
   need for a later Have you forgotten setting core.user? and we
   can add more to the template as we gain more experience.

 * git stash list -p used to be almost always a no-op because each
   stash entry is represented as a merge commit.  It learned to show
   the difference between the base commit version and the working tree
   version, which is in line with what git show gives.

 * Sometimes users want to report a bug they experience on their
   repository, but they are not at liberty to share the contents of
   the repository.  fast-export was taught an --anonymize option
   to replace blob contents, names of people and paths and log
   messages with bland and simple strings to help them.

 * git difftool learned an option to stop feeding paths to the
   diff backend when it exits with a non-zero status.

 * git grep allows to paint (or not paint) partial matches on
   context lines when showing grep -Cnum output in color.

 * log --date=iso uses a slight variant of ISO 8601 format that is
   made more human readable.  A new --date=iso-strict option gives
   datetime output that is more strictly conformant.

 * The logic git prune uses is more resilient against various corner
   cases.

 * A broken reimplementation of Git could write an invalid index that
   records both stage #0 and higher stage entries for the same path.
   We now notice and reject such an index, as there is no sensible
   fallback (we do not know if the broken tool wanted to resolve and
   forgot to remove higher stage entries, or if it wanted to unresolve
   and forgot to remove the stage#0 entry).

 * The temporary files git mergetool uses are named to avoid too
   many dots in them (e.g. a temporary file for hello.c used to be
   named e.g. hello.BASE.4321.c but now uses underscore instead,
   e.g. hello_BASE_4321.c).

 * The temporary files git mergetools uses can be placed in a newly
   created temporary directory, instead of the current directory, by
   setting the mergetool.writeToTemp configuration variable.

 * git mergetool understands --tool bc now, as version 4 of
   BeyondCompare can be driven the same way as its version 3 and it
   feels awkward to say --tool bc3.

 * The pre-receive and post-receive hooks are no longer required
   to consume their input fully (not following this requirement used
   to result in intermittent errors in git push).

 * The pretty-format specifier %d, which expanded to  (tagname)
   for a tagged commit, gained a cousin %D that just gives the
   tagname without frills.

 * git push learned --signed push, that allows a push (i.e.
   request to update the refs on the other side to point at a new
   history, together with the transmission of necessary objects) to be
   signed, so that it can be verified and audited, using the GPG
   signature of the person who pushed, that the tips of branches at a
   public repository really point the commits the pusher wanted to,
   without having to trust the server.

 * git interpret-trailers is a new filter to programmatically edit
the tail end of the commit log messages.

 * git help everyday shows the Everyday Git in 20 commands or so
   document, whose contents have been updated to more modern Git
   practice.

 * On the git svn front, work to reduce memory consumption and
   to improve handling of mergeinfo progresses.


Performance, Internal Implementation, etc.

 * The API to manipulate the refs has been restructured to make it
   more transactional, with the eventual goal to allow all-or-none
   atomic updates and migrating the storage to something other than
   the