[ANNOUNCE] Git v2.2.0

2014-11-26 Thread Junio C Hamano
The latest feature release Git v2.2 is now available at the usual
places.  Big thanks go to 77 contributors, among which 20 are new
people, who made 550+ changes in total since Git v2.1 was released.

The tarballs are found at:

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

The following public repositories all have a copy of the 'v2.2.0'
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
==

Updates since v2.1
--

Ports

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

 * Building with NO_PTHREADS has been resurrected.

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


UI, Workflows & Features

 * "git archive" learned to filter what gets archived with a 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 global config.  This immediately
   reduces the need to later ask "Have you forgotten to set
   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 stash 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, 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" learned 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 the ISO 8601 format that is
   more human readable.  A new "--date=iso-strict" option gives
   datetime output that conforms more strictly.

 * 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 the higher-stage entries, or if it wanted to unresolve
   and forgot to remove the stage #0 entry).

 * The temporary files "git mergetool" uses are renamed 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", to allow us to have multiple variants).

 * The temporary files "git mergetool" 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" to run version 4.

 * 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 expands 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, e.g. "Signed-off-by:".

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

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


Performance, Internal Implementation, Development Support etc.

 * The API to manipulate the "refs" has been restructured to make it
   more tra

[ANNOUNCE] Git v2.2.0-rc0

2014-10-31 Thread Junio C Hamano
An early preview release Git v2.2.0-rc0 is now available for
testing at the usual places.  Please give it a test.

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-rc0'
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 whenshowing "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
   creted 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 programatically 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 traditional filesystem based one (e.g. databases).

[ANNOUNCE] Git v2.2.0-rc1

2014-11-07 Thread Junio C Hamano
A release candidate Git v2.2.0-rc1 is now available for testing
at the usual places.

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-rc1'
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
   atomic updates and migrating the storage to something other than
   the traditional filesystem based one (e.g. databases).

 * The lockfile API and 

[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
   atomi

[ANNOUNCE] Git v2.2.0-rc3

2014-11-21 Thread Junio C Hamano
A release candidate Git v2.2.0-rc3 is now available for testing
at the usual places.  I was planning to do the final one but we
found and fixed last-minute bugs in the code in -rc2, so this
is to doubly make sure the result is fit for the final one,
which I am planning to tag mid next week.

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-rc3'
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 stash 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", to allow us to have multiple variants).

 * The temporary files "git mergetool" 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" to run version 4.

 * 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, e.g. "Signed-off-by:".

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

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


Performance, Internal Implementati

Re: [ANNOUNCE] Git v2.2.0

2014-11-27 Thread Steven Noonan
On Wed, Nov 26, 2014 at 3:09 PM, Junio C Hamano  wrote:
> The latest feature release Git v2.2 is now available at the usual
> places.  Big thanks go to 77 contributors, among which 20 are new
> people, who made 550+ changes in total since Git v2.1 was released.
>
> The tarballs are found at:
>
> https://www.kernel.org/pub/software/scm/git/
>
> The following public repositories all have a copy of the 'v2.2.0'
> 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
> ==
>
> Updates since v2.1
> --
>
> Ports
>
>  * Building on older MacOS X systems automatically sets
>the necessary NO_APPLE_COMMON_CRYPTO build-time option.
>
>  * Building with NO_PTHREADS has been resurrected.
>
>  * Compilation options have been updated a bit to better support the
>z/OS port.
>
>
> UI, Workflows & Features
>
>  * "git archive" learned to filter what gets archived with a 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 global config.  This immediately
>reduces the need to later ask "Have you forgotten to set
>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 stash 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, 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" learned 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 the ISO 8601 format that is
>more human readable.  A new "--date=iso-strict" option gives
>datetime output that conforms more strictly.
>
>  * 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 the higher-stage entries, or if it wanted to unresolve
>and forgot to remove the stage #0 entry).
>
>  * The temporary files "git mergetool" uses are renamed 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", to allow us to have multiple variants).
>
>  * The temporary files "git mergetool" 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" to run version 4.
>
>  * 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 expands 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, e.g. "Signed-off-by:".
>
>  * "git help everyday" shows the "Everyday Git in 20 commands or so"
>document, whose contents have been updated to match more modern
>Git practice.
>
>  * On

Re: [ANNOUNCE] Git v2.2.0

2014-11-27 Thread Jeff King
[nit: when quoting in your replies, please trim quotes to a reasonable
 length]

On Thu, Nov 27, 2014 at 01:32:24PM -0800, Steven Noonan wrote:

> I'm sad to report that I'm getting test failures with this release.
> Built from git and did 'make -C t prove NO_SVN_TESTS=1' and got this
> result:
> [...]
> I suspect that gnupg v2.1 is to blame somehow (I've had similar bad behavior
> with my own projects using GPG in automation). Running through several of the
> git tests shows that gpg is failing to sign:

I can reproduce here on Debian by installing gnupg2 v2.1 from
experimental (this gets installed as /usr/bin/gpg2, so I had to tweak
the code to use "gpg2" by default). In my case, gpg2 repeatedly contacts
the gpg-agent and pops up X dialogs asking to unlock keyrings in the
test suite. Hitting "cancel" causes the tests to fail. Clicking "OK"
with an empty passphrase lets the test pass.

The good news is that it is similarly broken on git v2.1.0. So this
isn't something we broke; it's the new version of gnupg2.

It's not clear to me whether this is a regression in gnupg, or if
there's some magic configuration setting we need to get the old
behavior. It seems like the new version is more aggressive in trying to
use the agent to get a passphrase, even though the keyrings in the test
are unencrypted, and do not need any passphrase. Which sounds like a bug
to me.

You might have some luck talking with the gnupg folks about this
possible bug. As a simple reproduction, doing:

  cd git/t/lib-gpg
  export GNUPGHOME=$PWD
  echo foo | gpg --sign -a

works fine with gnupg1, or earlier versions of gnupg2. But with gnupg
2.1, it causes the agent to pop up a passphrase dialog.

-Peff
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html


Re: [ANNOUNCE] Git v2.2.0

2014-11-28 Thread Michael J Gruber
Steven Noonan schrieb am 27.11.2014 um 22:32:

> 
> I'm sad to report that I'm getting test failures with this release.
> Built from git and did 'make -C t prove NO_SVN_TESTS=1' and got this
> result:
> 
> $ make -j8
> $ make -C t prove NO_SVN_TESTS=1 PROVE="prove -j8"
> [...]
> Test Summary Report
> ---
> t4202-log.sh (Wstat: 256 Tests: 42 
> Failed: 2)
>   Failed tests:  41-42
>   Non-zero exit status: 1
> t5534-push-signed.sh (Wstat: 256 Tests: 7 Failed: 
> 2)
>   Failed tests:  6-7
>   Non-zero exit status: 1
> t5801-remote-helpers.sh  (Wstat: 256 Tests: 28 
> Failed: 2)
>   Failed tests:  21-22
>   Non-zero exit status: 1
> t6050-replace.sh (Wstat: 256 Tests: 33 
> Failed: 4)
>   Failed tests:  30-33
>   Non-zero exit status: 1
> t6300-for-each-ref.sh(Wstat: 256 Tests: 134 
> Failed: 19)
>   Failed tests:  115-133
>   Non-zero exit status: 1
> t7510-signed-commit.sh   (Wstat: 256 Tests: 10 
> Failed: 10)
>   Failed tests:  1-10
>   Non-zero exit status: 1
> t7612-merge-verify-signatures.sh (Wstat: 256 Tests: 6 Failed: 
> 5)
>   Failed tests:  2-6
>   Non-zero exit status: 1
> t7600-merge.sh   (Wstat: 256 Tests: 49 
> Failed: 2)
>   Failed tests:  48-49
>   Non-zero exit status: 1
> t7004-tag.sh (Wstat: 256 Tests: 136 
> Failed: 32)
>   Failed tests:  65-66, 69-72, 74-75, 77-100
>   Non-zero exit status: 1
> Files=685, Tests=11975, 88 wallclock secs ( 3.97 usr  0.70 sys + 73.84 cusr 
> 22.10 csys = 100.61 CPU)
> Result: FAIL
> 
> 
> I suspect that gnupg v2.1 is to blame somehow (I've had similar bad behavior
> with my own projects using GPG in automation). Running through several of the
> git tests shows that gpg is failing to sign:
> 
> 
> $ make -C t t7510-signed-commit GIT_TEST_OPTS="--verbose --debug"
> make: Entering directory '/home/snoonan/Development/git/t'
> *** t7510-signed-commit.sh ***
> Initialized empty Git repository in /home/snoonan/Development/git/t/trash 
> directory.t7510-signed-commit/.git/
> expecting success:
> [...]
> gpg: starting migration from earlier GnuPG versions
> gpg: porting secret keys from '/home/snoonan/Development/git/t/trash 
> directory.t7510-signed-commit/gpghome/secring.gpg' to gpg-agent
> gpg: key CDDE430D: secret key imported
> gpg: key B7227189: secret key imported
> gpg: migration succeeded
> gpg: signing failed: Operation cancelled
> gpg: signing failed: Operation cancelled
> error: gpg failed to sign the data
> fatal: failed to write commit object
> gpg: signing failed: Operation cancelled
> gpg: signing failed: Operation cancelled
> error: gpg failed to sign the data
> fatal: failed to write commit object
> not ok 1 - create signed commits
> 
> 
> If I build and install the old gnupg v2.0.26 package, things are
> happier:
> 
> 
> $ make -C t prove NO_SVN_TESTS=1 PROVE="prove -j8"
> [...]
> All tests successful.
> Files=685, Tests=11975, 87 wallclock secs ( 4.02 usr  0.69 sys + 76.41 cusr 
> 21.96 csys = 103.08 CPU)
> Result: PASS
> 
> 
> Using Arch Linux on x86_64. Anyone else able to repro?
> 

Are you running gnome_keyring_deamon by any chance? It think it runs by
default in Gnome, claims to offer gpg_agent functionality but does not
seem to do so fully. I.e., its presence may keep gpg2.1 from starting
its own gpg-agent. But gpg2.1 ("gnupg modern branch") needs a new
gpg-agent which knows how to handle secret keys for gpg2.1.

(I may take a shot at trying, but I'm on Fedora - they're slow and
special in all things gpg/crypto. And compiling gpg2.1 means compiling
all the bits and pieces that monster consists of these days...)

Michael
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html