Protocol v2 in v2.27 (Re: Re* [ANNOUNCE] Git v2.27.0-rc1)

2020-05-20 Thread Jonathan Nieder
(other lists -> bcc)
Junio C Hamano wrote:
> Jeff King  writes:

>> Is it worth mentioning here the reversion of v2 as the default protocol?
>>
>> It does end up (along with the actual code fix) in the "fixes from
>> v2.26" section:
>>
>>>  * Those fetching over protocol v2 from linux-next and other kernel
>>>repositories are reporting that v2 often fetches way too much than
>>>needed.
>>>(merge 11c7f2a30b jn/demote-proto2-from-default later to maint).
>>>
>>>  * The upload-pack protocol v2 gave up too early before finding a
>>>common ancestor, resulting in a wasteful fetch from a fork of a
>>>project.  This has been corrected to match the behaviour of v0
>>>protocol.
>>>(merge 2f0a093dd6 jt/v2-fetch-nego-fix later to maint).
>>
>> but that's somewhat buried. I dunno. It is not likely to introduce _new_
>> compatibility issues, but perhaps folks looking into compatibility stuff
>> may want to know about the revert.
>
> The promotion in Git 2.26 was buried in the "performance &
> implementation details" section and not in the backward
> compatibility section, so it feels a bit funny to highlight the
> reversion.  In any case, here is what I prepared (but not committed
> yet)

Speaking of which, should we enable protocol v2 by default for people
with feature.experimental enabled, like this?

(This isn't part of the rest of the feature.experimental handling
because those are tied to a repository object, whereas this code path
is used for operations like "git ls-remote" that do not require a
repository.)

Signed-off-by: Jonathan Nieder 

diff --git c/Documentation/config/protocol.txt 
i/Documentation/config/protocol.txt
index 0b40141613e..c46e9b3d00a 100644
--- c/Documentation/config/protocol.txt
+++ i/Documentation/config/protocol.txt
@@ -48,7 +48,8 @@ protocol.version::
If set, clients will attempt to communicate with a server
using the specified protocol version.  If the server does
not support it, communication falls back to version 0.
-   If unset, the default is `0`.
+   If unset, the default is `0`, unless `feature.experimental`
+   is enabled, in which case the default is `2`.
Supported versions:
 +
 --
diff --git c/protocol.c i/protocol.c
index d390391ebac..d1dd3424bba 100644
--- c/protocol.c
+++ i/protocol.c
@@ -17,6 +17,7 @@ static enum protocol_version parse_protocol_version(const 
char *value)
 enum protocol_version get_protocol_version_config(void)
 {
const char *value;
+   int val;
const char *git_test_k = "GIT_TEST_PROTOCOL_VERSION";
const char *git_test_v;
 
@@ -30,6 +31,9 @@ enum protocol_version get_protocol_version_config(void)
return version;
}
 
+   if (!git_config_get_bool("feature.experimental", ) && val)
+   return protocol_v2;
+
git_test_v = getenv(git_test_k);
if (git_test_v && *git_test_v) {
enum protocol_version env = parse_protocol_version(git_test_v);


Re: Re* [ANNOUNCE] Git v2.27.0-rc1

2020-05-20 Thread Jeff King
On Wed, May 20, 2020 at 01:31:30PM -0700, Junio C Hamano wrote:

> The promotion in Git 2.26 was buried in the "performance &
> implementation details" section and not in the backward
> compatibility section, so it feels a bit funny to highlight the
> reversion.  In any case, here is what I prepared (but not committed
> yet)

Hmm, yeah, that does make it feel funny. I'd argue that it probably
would have been worth promoting a bit more in v2.26, but it is obviously
too late now.

> -- >8 --
> Subject: [PATCH] RelNotes: advertise the demotion of protocol v2

What you have here looks fine, but I'd be OK if we just left it as-is,
too, given the v2.26 mention.

-Peff


Re: [ANNOUNCE] Git v2.27.0-rc1

2020-05-20 Thread Son Luong Ngoc
Hi folks,

> Shourya Shukla (4):
>   submodule--helper.c: Rename 'cb_foreach' to 'foreach_cb'
>   gitfaq: files in .gitignore are tracked
>   gitfaq: fetching and pulling a repository
>   submodule: port subcommand 'set-url' from shell to C

Could you please review the minor fix in
https://public-inbox.org/git/20200519045301.gy24...@pobox.com/
It helps the backward compatibility for packaging on CentOS6.

Thanks,
Son Luong.


Re* [ANNOUNCE] Git v2.27.0-rc1

2020-05-20 Thread Junio C Hamano
Jeff King  writes:

> On Wed, May 20, 2020 at 12:17:11PM -0700, Junio C Hamano wrote:
>
>> Git 2.27 Release Notes (draft)
>> ==
>> 
>> Updates since v2.26
>> ---
>> 
>> Backward compatibility notes
>
> Is it worth mentioning here the reversion of v2 as the default protocol?
>
> It does end up (along with the actual code fix) in the "fixes from
> v2.26" section:
>
>>  * Those fetching over protocol v2 from linux-next and other kernel
>>repositories are reporting that v2 often fetches way too much than
>>needed.
>>(merge 11c7f2a30b jn/demote-proto2-from-default later to maint).
>> 
>>  * The upload-pack protocol v2 gave up too early before finding a
>>common ancestor, resulting in a wasteful fetch from a fork of a
>>project.  This has been corrected to match the behaviour of v0
>>protocol.
>>(merge 2f0a093dd6 jt/v2-fetch-nego-fix later to maint).
>
> but that's somewhat buried. I dunno. It is not likely to introduce _new_
> compatibility issues, but perhaps folks looking into compatibility stuff
> may want to know about the revert.

The promotion in Git 2.26 was buried in the "performance &
implementation details" section and not in the backward
compatibility section, so it feels a bit funny to highlight the
reversion.  In any case, here is what I prepared (but not committed
yet)

-- >8 --
Subject: [PATCH] RelNotes: advertise the demotion of protocol v2

In the upcoming release, the transport protocol v2 is no longer the
default; note it in the backward compatibility section.

Suggested-by: Jeff King 
Signed-off-by: Junio C Hamano 
---
 Documentation/RelNotes/2.27.0.txt | 4 
 1 file changed, 4 insertions(+)

diff --git a/Documentation/RelNotes/2.27.0.txt 
b/Documentation/RelNotes/2.27.0.txt
index 5fb8c0cf67..95a8d338ad 100644
--- a/Documentation/RelNotes/2.27.0.txt
+++ b/Documentation/RelNotes/2.27.0.txt
@@ -24,6 +24,10 @@ Backward compatibility notes
users may find annoying---those who prefer not to rebase need to
set the variable to false to squelch the warning.
 
+ * The transport protocol version 2, which was promoted to the default
+   in Git 2.26 release, turned out to have some remaining rough edges,
+   so it has been demoted from the default.
+
 
 UI, Workflows & Features
 


Re: [ANNOUNCE] Git v2.27.0-rc1

2020-05-20 Thread Junio C Hamano
Jeff King  writes:

> On Wed, May 20, 2020 at 12:17:11PM -0700, Junio C Hamano wrote:
>
>> Git 2.27 Release Notes (draft)
>> ==
>> 
>> Updates since v2.26
>> ---
>> 
>> Backward compatibility notes
>
> Is it worth mentioning here the reversion of v2 as the default protocol?

Yeah, that is a good suggestion.  The fix inside v2 is not worth
reporting, but the change of the default is noteworthy enough to be
at the top.




Re: [ANNOUNCE] Git v2.27.0-rc1

2020-05-20 Thread Jeff King
On Wed, May 20, 2020 at 12:17:11PM -0700, Junio C Hamano wrote:

> Git 2.27 Release Notes (draft)
> ==
> 
> Updates since v2.26
> ---
> 
> Backward compatibility notes

Is it worth mentioning here the reversion of v2 as the default protocol?

It does end up (along with the actual code fix) in the "fixes from
v2.26" section:

>  * Those fetching over protocol v2 from linux-next and other kernel
>repositories are reporting that v2 often fetches way too much than
>needed.
>(merge 11c7f2a30b jn/demote-proto2-from-default later to maint).
> 
>  * The upload-pack protocol v2 gave up too early before finding a
>common ancestor, resulting in a wasteful fetch from a fork of a
>project.  This has been corrected to match the behaviour of v0
>protocol.
>(merge 2f0a093dd6 jt/v2-fetch-nego-fix later to maint).

but that's somewhat buried. I dunno. It is not likely to introduce _new_
compatibility issues, but perhaps folks looking into compatibility stuff
may want to know about the revert.

-Peff


[ANNOUNCE] Git v2.27.0-rc1

2020-05-20 Thread Junio C Hamano
A release candidate Git v2.27.0-rc1 is now available for testing
at the usual places.  It is comprised of 491 non-merge commits
since v2.26.0, contributed by 55 people, 16 of which are new faces.

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.27.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://github.com/gitster/git

New contributors whose contributions weren't in v2.26.0 are as follows.
Welcome to the Git development community!

  Andras Kucsma, Ash Holland, Christopher Warrington, Emma
  Brooks, Jessica Clarke, Jorge Lopez Silva, Julien Moutinho,
  Li Xuejiang, luciano.ro...@booking.com, Matthias Aßhauer,
  Michael F. Schönitzer, Nathan Sanders, Son Luong Ngoc, Terry
  Moschou, Vasil Dimov, and Yang Zhao.

Returning contributors who helped this release are as follows.
Thanks for your continued support.

  마누엘, Abhishek Kumar, Alban Gruin, Alexandr Miloslavskiy,
  Alex Henrie, Andrei Rybak, Andrew Oakley, Ben Keene, brian
  m. carlson, Carlo Marcelo Arenas Belón, Christian Couder,
  Damien Robert, Denton Liu, Derrick Stolee, Đoàn Trần Công
  Danh, Elijah Newren, Emily Shaffer, Eric Sunshine, Garima Singh,
  Hans Jerry Illikainen, Heba Waly, Jeff King, Jiang Xin, Johannes
  Schindelin, Jonathan Nieder, Jonathan Tan, Josh Steadmon, Junio
  C Hamano, Martin Ågren, Matheus Tavares, Patrick Steinhardt,
  Philippe Blain, Phillip Wood, René Scharfe, Shourya Shukla,
  SZEDER Gábor, Taylor Blau, Thomas Gummerer, and Todd Zullinger.



Git 2.27 Release Notes (draft)
==

Updates since v2.26
---

Backward compatibility notes

 * When "git describe C" finds that commit C is pointed by a signed or
   annotated tag, which records T as its tagname in the object, the
   command gives T as its answer.  Even if the user renames or moves
   such a tag from its natural location in the "refs/tags/" hierarchy,
   "git describe C" would still give T as the answer, but in such a
   case "git show T^0" would no longer work as expected.  There may be
   nothing at "refs/tags/T" or even worse there may be a different tag
   instead.

   Starting from this version, "git describe" will always use the
   "long" version, as if the "--long" option were given, when giving
   its output based on such a misplaced tag to work around the problem.

 * "git pull" issues a warning message until the pull.rebase
   configuration variable is explicitly given, which some existing
   users may find annoying---those who prefer not to rebase need to
   set the variable to false to squelch the warning.


UI, Workflows & Features

 * A handful of options to configure SSL when talking to proxies have
   been added.

 * Smudge/clean conversion filters are now given more information
   (e.g. the object of the tree-ish in which the blob being converted
   appears, in addition to its path, which has already been given).

 * When "git describe C" finds an annotated tag with tagname A to be
   the best name to explain commit C, and the tag is stored in a
   "wrong" place in the refs/tags hierarchy, e.g. refs/tags/B, the
   command gave a warning message but used A (not B) to describe C.
   If C is exactly at the tag, the describe output would be "A", but
   "git rev-parse A^0" would not be equal as "git rev-parse C^0".  The
   behavior of the command has been changed to use the "long" form
   i.e. A-0-gOBJECTNAME, which is correctly interpreted by rev-parse.

 * "git pull" learned to warn when no pull.rebase configuration
   exists, and neither --[no-]rebase nor --ff-only is given (which
   would result a merge).

 * "git p4" learned four new hooks and also "--no-verify" option to
   bypass them (and the existing "p4-pre-submit" hook).

 * "git pull" shares many options with underlying "git fetch", but
   some of them were not documented and some of those that would make
   sense to pass down were not passed down.

 * "git rebase" learned the "--no-gpg-sign" option to countermand
   commit.gpgSign the user may have.

 * The output from "git format-patch" uses RFC 2047 encoding for
   non-ASCII letters on From: and Subject: headers, so that it can
   directly be fed to e-mail programs.  A new option has been added
   to produce these headers in raw.

 * "git log" learned "--show-pulls" that helps pathspec limited
   history views; a merge commit that takes the whole change from a
   side branch, which is normally omitted from the output, is shown
   in addition to the commits that introduce real changes.

 * The interactive input from various codepaths are consolidated and
   any prompt possibly issued earlier are fflush()ed before we read.

 * Allow "git rebase" to reapply all local commits, even if the may be
   already in the upstream,