git@vger.kernel.org mailing list mirror (one of many)
 help / color / mirror / code / Atom feed
Search results ordered by [date|relevance]  view[summary|nested|Atom feed]
thread overview below | download mbox.gz: |
* macOS git grep change in required character classes
@ 2023-04-01 15:50  5% Matt Gardner
  0 siblings, 0 replies; 25+ results
From: Matt Gardner @ 2023-04-01 15:50 UTC (permalink / raw)
  To: git

Thank you for filling out a Git bug report!

Please answer the following questions to help us understand your issue.

What did you do before the bug happened? (Steps to reproduce your issue)

$ mkdir git-grep-test
$ cd git-grep-test
$ git init
$ echo "sub test { return; }" > test.pl
$ git grep --untracked -E \\btest\\b

What did you expect to happen? (Expected behavior)

It should find the results like the following:

test.pl:sub test { return; }

What happened instead? (Actual behavior)

No results found

What's different between what you expected and what actually happened?

To get results, you have to use BSD style character classes:

$ git grep --untracked -E \[\[:\<:\]\]test\[\[:\>:\]\]

test.pl:sub test { return; }

Anything else you want to add:

Testing in both git 2.24 and 2.34 (the only other version I have
access to at the moment), \\b and other GNU style character classes
return results.

My best guess is that
https://github.com/git/git/commit/1819ad327b7a1f19540a819813b70a0e8a7f798f
is causing git grep -E to require BSD style regular expression
character classes.  I don't know if this is a bug or an unadvertised
change in behavior.  In either case, it is frustrating.  Any person or
tool would have to know which version of git they have and which
operating system they are on to get results.

Please review the rest of the bug report below.

You can delete any lines you don't wish to share.
[System Info]
git version:
git version 2.40.0
cpu: x86_64
no commit associated with this build
sizeof-long: 8
sizeof-size_t: 8
shell-path: /bin/sh
feature: fsmonitor--daemon
uname: Darwin 19.6.0 Darwin Kernel Version 19.6.0: Tue Jun 21 21:18:39
PDT 2022; root:xnu-6153.141.66~1/RELEASE_X86_64 x86_64
compiler info: clang: 12.0.0 (clang-1200.0.32.29)
libc info: no libc information available
$SHELL (typically, interactive shell): /bin/bash


[Enabled Hooks]

^ permalink raw reply	[relevance 5%]

* Re: [Question] Is extensions.partialClone defunct?
  @ 2021-06-05 13:01  5%           ` Tao Klerks
  0 siblings, 0 replies; 25+ results
From: Tao Klerks @ 2021-06-05 13:01 UTC (permalink / raw)
  To: Christian Couder
  Cc: Jonathan Nieder, Jonathan Tan, Derrick Stolee, git, Taylor Blau

Hi folks, my apologies if old thread reanimation is frowned upon, I
have not been able to find any indications that this is the case.

On Sat, Mar 14, 2020 at 6:43 AM Christian Couder
<christian.couder@gmail.com> wrote:
> On Fri, Mar 13, 2020 at 12:09 AM Jonathan Nieder <jrnieder@gmail.com> wrote:
> > [...]
> > >>> Hmm...besides giving the name of the promisor remote, the
> > >>> extensions.partialClone setting is there to prevent old versions of Git
> > >>> (that do not know this extension) from manipulating the repo.

I was going to start a new thread about just this topic today, but
learned to use the archives instead, for better or for worse...

> > I can start writing a proposed patch to send this evening or tomorrow.
> That would be very much appreciated! Thanks!

Was this change ever attempted? Git's current behavior (as of 2.31.1)
appears to still violate the semantics of
core.repositoryformatversion=1 as documented at
https://github.com/git/git/blob/master/Documentation/technical/repository-version.txt,
and this has been the case since git 2.24.
I assume the right fix at this point would be to do something like
auto-detecting promisor remotes and/or packfiles and adding the
extensions.partialClone config key automatically/transparently. The
main question seems to be *what value* the config key should hold, if
there are multiple promisor remotes?

> > >> Christian, what would your prefered way be to fix this?  Should
> > >> extensions.partialclone specify a particular "default" promisor
> > >> remote, or should we use a new repository extension for multiple
> > >> promisors?
> > [...]
> > > So I'd rather obsolete "extensions.partialClone = <remote>" and to
> > > find other ways.
> >
> > I *think* that means "new repository extension".
> > [...]
> > That suggests something like
> >
> >         [extensions]
> >                 multiplePromisors = true
> > [...]
> > > or maybe
> > > we could have another extension alltogether like
> > > "[extensions]\npromisorremotes=<bool>" and over time obsolete
> > > "extensions.partialClone" altogether. I prefer the later.
> >
> > I think we're going to have to continue to support
> > extensions.partialClone=<remote> for a long time anyway (breaking the
> > ability to work with existing repositories is expensive), so I'm
> > reasonably comfortable with multiplePromisors being a separate
> > extension.  Some faraway day, we can introduce
> > "repositoryFormatVersion = 2" that mandates support for these
> > extensions by default, allowing us to clean up and simplify.
>
> > This behavior has been around for a few releases so it would want to
> > cook until the 2.27 cycle.
>
> Yeah, and partial clone is experimental, so I think it's ok.
>

I'm a little confused by suggestions to create a *new* extension key
here. In principle, this would mean that existing repositories
created/updated by the newest git version would declare themselves to
be incompatible with git clients that don't understand this
entirely-new key, even though:
 * promisor packfiles are a reasonably longstanding thing now (several
years old),
 * they have officially/theoretically been associated with the
"partialClone" extension key throughout that time (at least in the
docs), and
 * partial clone is no longer considered "experimental" in any public doc,

The kind of sudden backwards-incompatibility implied by a new
"extensions.*" key seems... bad? (unless it's something that you
*newly* opt in to - which doesn't seem to be the case here)

Thanks,
Tao

^ permalink raw reply	[relevance 5%]

* Re: Misrendering of git 2.24 log --graph
  2020-01-24 14:05  7% ` Derrick Stolee
  2020-01-24 14:06  8%   ` Derrick Stolee
@ 2020-01-24 16:08  8%   ` Jan Engelhardt
  1 sibling, 0 replies; 25+ results
From: Jan Engelhardt @ 2020-01-24 16:08 UTC (permalink / raw)
  To: Derrick Stolee; +Cc: git, James Coglan


On Friday 2020-01-24 15:05, Derrick Stolee wrote:
>> I have observed git 2.24 outputting a garbage graph element for a 
>> particular history.
>
>I initially thought you were right, as 2.25 did include some new
>rendering, and we've already found and fixed a regression [1] and
>a style issue [2].
>[...]
>Here is something I noticed: this does not reproduce without a
>commit-graph! That's likely because it changes the order of the
>initial refs. Keep that in mind for anyone trying to repro this.

Curiously, I need no --mirror for `git clone`, the default clone
operation is just fine. It has, as far as I can remember back,
always downloaded all origin:refs/heads/* and refs/tags/*.

>However, I see this output with 2.24.1:

>| | | _   
>| | * 79106b731 doc: update 8.7.x news
>
>and this output in 2.25.0 [...]
>
>Is it possible that you are not running the version you think you are?

I rerun my checks as I write this mail. The observations:

 * Built v2.23.0 from source, ran it via `../tmpdir/git/git log --andsoon`,
   shows said underscore.
 * Built v2.24.0 from source, shows underscore
 * Built v2.24.1 from source, shows underscore
 * Used v2.24.1 from distro (/usr/bin/git), renders underscore
 * Built ead10bacc466a409490fb743d7805893976f8f53 (most recent 
   branch join not having v2.25 as an ancestor) from src, 
   shows underscore
 * Built v2.25.0 from source, new rendering
 * Built 631a7dec11, same as v2.25.0
 * Built 631a7dec11^, same as v2.25.0

^ permalink raw reply	[relevance 8%]

* Re: Misrendering of git 2.24 log --graph
  2020-01-24 14:05  7% ` Derrick Stolee
@ 2020-01-24 14:06  8%   ` Derrick Stolee
  2020-01-24 16:08  8%   ` Jan Engelhardt
  1 sibling, 0 replies; 25+ results
From: Derrick Stolee @ 2020-01-24 14:06 UTC (permalink / raw)
  To: Jan Engelhardt, git, James Coglan

On 1/24/2020 9:05 AM, Derrick Stolee wrote:
> On 1/23/2020 6:12 PM, Jan Engelhardt wrote:
>> Greetings.
> 
> Hello, Jan. Thanks for sending this report.
> 
>> I have observed git 2.24 outputting a garbage graph element for a 
>> particular history. The issue does not appear in 2.25, but the 
>> underlying bug may still be in there; it is just that _this particular 
>> history_ does not expose it anymore due to the new, more compact tree 
>> rendering that 2.25 seems to be shipping.

I completely misread your ordering here. You are clear that this
is an issue in 2.24 and NOT 2.25. Sorry.

I'm not sure that there is anything to do since the graph rendering
has changed so much, and we intend to keep the new version instead.

Thanks,
-Stolee


^ permalink raw reply	[relevance 8%]

* Re: Misrendering of git 2.24 log --graph
  2020-01-23 23:12 14% Misrendering of git 2.24 log --graph Jan Engelhardt
@ 2020-01-24 14:05  7% ` Derrick Stolee
  2020-01-24 14:06  8%   ` Derrick Stolee
  2020-01-24 16:08  8%   ` Jan Engelhardt
  0 siblings, 2 replies; 25+ results
From: Derrick Stolee @ 2020-01-24 14:05 UTC (permalink / raw)
  To: Jan Engelhardt, git, James Coglan

On 1/23/2020 6:12 PM, Jan Engelhardt wrote:
> Greetings.

Hello, Jan. Thanks for sending this report.

> I have observed git 2.24 outputting a garbage graph element for a 
> particular history. The issue does not appear in 2.25, but the 
> underlying bug may still be in there; it is just that _this particular 
> history_ does not expose it anymore due to the new, more compact tree 
> rendering that 2.25 seems to be shipping.

I initially thought you were right, as 2.25 did include some new
rendering, and we've already found and fixed a regression [1] and
a style issue [2].

[1] https://lore.kernel.org/git/pull.517.git.1578408947.gitgitgadget@gmail.com/
[2] https://lore.kernel.org/git/pull.518.git.1578457675.gitgitgadget@gmail.com/

> Reproducer:
> 
> $ git clone git://github.com/jengelh/git-issue-20200123 gi

I needed to use "--mirror" in my clone to create local copies
of all the remote refs.

> $ cd gi; git log --oneline --graph --all --topo-order | head -n 74
> [...]
> | | * |   ba85ad93c Merge branch 'kc-8.7.x'
> | | |\ \  
> | |/ / /  

Interesting, since the compact graph output in 2.25 intentionally
wanted this merge to have the first edge go immediately to the left
(see my output below).

> | | | _   
> | | * 79106b731 doc: update 8.7.x news
> 
> See that underscore there in line 73. The connection between commit 
> 610d621dd and its parent 79106b731 is not properly connected (visually). 
> I think this should have been [diff notation follows]
> 
> -| | | _   
> +| | | /
> +| | |/
>  | | * 79106b731 doc: update 8.7.x news
> 
> or something along those lines (pun intended).

You are correct about the expected output here.

Here is something I noticed: this does not reproduce without a
commit-graph! That's likely because it changes the order of the
initial refs. Keep that in mind for anyone trying to repro this.

However, I see this output with 2.24.1:

| | | | * d95d49694 freebusy: add missing "else" in HrGetHumanReadableString
| | | |/  
| | |/|   
| | * |   ba85ad93c Merge branch 'kc-8.7.x'
| | |\ \  
| |/ / /  
| | | _   
| | * 79106b731 doc: update 8.7.x news

and this output in 2.25.0:

| | | | * d95d49694 freebusy: add missing "else" in HrGetHumanReadableString
| | | |/  
| | |/|   
| | * | ba85ad93c Merge branch 'kc-8.7.x'
| |/| | 
| | |/  
| | * 79106b731 doc: update 8.7.x news

And comparing v2.25.0 versus ds/graph-horizontal-edges has
no difference in output.

Is it possible that you are not running the version you think you are?

Thanks,
-Stolee


^ permalink raw reply	[relevance 7%]

* Misrendering of git 2.24 log --graph
@ 2020-01-23 23:12 14% Jan Engelhardt
  2020-01-24 14:05  7% ` Derrick Stolee
  0 siblings, 1 reply; 25+ results
From: Jan Engelhardt @ 2020-01-23 23:12 UTC (permalink / raw)
  To: git; +Cc: jengelh

Greetings.

I have observed git 2.24 outputting a garbage graph element for a 
particular history. The issue does not appear in 2.25, but the 
underlying bug may still be in there; it is just that _this particular 
history_ does not expose it anymore due to the new, more compact tree 
rendering that 2.25 seems to be shipping.

Reproducer:

$ git clone git://github.com/jengelh/git-issue-20200123 gi
$ cd gi; git log --oneline --graph --all --topo-order | head -n 74
[...]
| | * |   ba85ad93c Merge branch 'kc-8.7.x'
| | |\ \  
| |/ / /  
| | | _   
| | * 79106b731 doc: update 8.7.x news

See that underscore there in line 73. The connection between commit 
610d621dd and its parent 79106b731 is not properly connected (visually). 
I think this should have been [diff notation follows]

-| | | _   
+| | | /
+| | |/
 | | * 79106b731 doc: update 8.7.x news

or something along those lines (pun intended).

^ permalink raw reply	[relevance 14%]

* Re: Parallel fetch and commit graph writing results in locking failure (even on linux)
  2019-12-13 19:20  5% Parallel fetch and commit graph writing results in locking failure (even on linux) Thomas Braun
@ 2019-12-13 19:35  0% ` Derrick Stolee
  0 siblings, 0 replies; 25+ results
From: Derrick Stolee @ 2019-12-13 19:35 UTC (permalink / raw)
  To: Thomas Braun, git, Jeff King

On 12/13/2019 2:20 PM, Thomas Braun wrote:
> Hi,
> 
> on git version da72936f (Git 2.24, 2019-11-04) and debian stretch I currently get every now and then the following error during fetching
> 
> $git fetch --all --jobs 12
> Fordere an von origin
> Fordere an von XXXX
> Fordere an von YYYY
> Fordere an von ZZZZ
> Fordere an von EEEE
> Von github.com:tango-controls/cppTango
>    37cc52f8..4550a743  tango-9-lts -> origin/tango-9-lts
> Commit-Graph Generierungsnummern berechnen: 100% (14/14), Fertig.
> Commit-Graph Generierungsnummern berechnen: 100% (13/13), Fertig.
> fatal: Konnte '/home/firma/devel/cppTango/.git/objects/info/commit-graphs/commit-graph-chain.lock' nicht erstellen: Die Datei existiert bereits.
> 
> Ein anderer Git-Prozess scheint in diesem Repository ausgeführt
> zu werden, zum Beispiel ein noch offener Editor von 'git commit'.
> Bitte stellen Sie sicher, dass alle Prozesse beendet wurden und
> versuchen Sie es erneut. Falls es immer noch fehlschlägt, könnte
> ein früherer Git-Prozess in diesem Repository abgestürzt sein:
> Löschen Sie die Datei manuell um fortzufahren.
> Konnte 'myFork' nicht anfordern (Exit-Code: 128)
> Commit-Graph Generierungsnummern berechnen: 100% (13/13), Fertig.
> Commit-Graph Generierungsnummern berechnen: 100% (13/13), Fertig.
> Commit-Graph Generierungsnummern berechnen: 100% (13/13), Fertig.
> 
> (Sorry for the german text, this is not easily reproducible.)
> It complains that it could not create the lock file as it already exists.
> 
> I've set the following possible relevant settings:
> 
> [core]
>   commitGraph = true
> 
> [fetch]
>   prune = true
>   writeCommitGraph = true
> 
> [protocol]
>   version = 2
> 
> Anything obvious I'm doing wrong?

I don't think so. I think you just found a bug where the
fetch.writeCommitGraph logic doesn't work with parallel fetch
jobs (only one can write at a time).

I believe the fix would be to write the commit-graph after
all of the jobs have completed, which should mean we need to
move the call to write_commit_graph_reachable() somewhere else
inside builtin/fetch.c.

I'll take a look now.

Thanks,
-Stolee


^ permalink raw reply	[relevance 0%]

* Parallel fetch and commit graph writing results in locking failure (even on linux)
@ 2019-12-13 19:20  5% Thomas Braun
  2019-12-13 19:35  0% ` Derrick Stolee
  0 siblings, 1 reply; 25+ results
From: Thomas Braun @ 2019-12-13 19:20 UTC (permalink / raw)
  To: git

Hi,

on git version da72936f (Git 2.24, 2019-11-04) and debian stretch I currently get every now and then the following error during fetching

$git fetch --all --jobs 12
Fordere an von origin
Fordere an von XXXX
Fordere an von YYYY
Fordere an von ZZZZ
Fordere an von EEEE
Von github.com:tango-controls/cppTango
   37cc52f8..4550a743  tango-9-lts -> origin/tango-9-lts
Commit-Graph Generierungsnummern berechnen: 100% (14/14), Fertig.
Commit-Graph Generierungsnummern berechnen: 100% (13/13), Fertig.
fatal: Konnte '/home/firma/devel/cppTango/.git/objects/info/commit-graphs/commit-graph-chain.lock' nicht erstellen: Die Datei existiert bereits.

Ein anderer Git-Prozess scheint in diesem Repository ausgeführt
zu werden, zum Beispiel ein noch offener Editor von 'git commit'.
Bitte stellen Sie sicher, dass alle Prozesse beendet wurden und
versuchen Sie es erneut. Falls es immer noch fehlschlägt, könnte
ein früherer Git-Prozess in diesem Repository abgestürzt sein:
Löschen Sie die Datei manuell um fortzufahren.
Konnte 'myFork' nicht anfordern (Exit-Code: 128)
Commit-Graph Generierungsnummern berechnen: 100% (13/13), Fertig.
Commit-Graph Generierungsnummern berechnen: 100% (13/13), Fertig.
Commit-Graph Generierungsnummern berechnen: 100% (13/13), Fertig.

(Sorry for the german text, this is not easily reproducible.)
It complains that it could not create the lock file as it already exists.

I've set the following possible relevant settings:

[core]
  commitGraph = true

[fetch]
  prune = true
  writeCommitGraph = true

[protocol]
  version = 2

Anything obvious I'm doing wrong?

Thanks,
Thomas

PS: The error is also present on latest git for windows.

^ permalink raw reply	[relevance 5%]

* Re: [BUG?] ls-files -o now traverses nested repo when given multiple pathspecs
  2019-12-08  5:42  5%   ` Elijah Newren
@ 2019-12-08  7:46  0%     ` Elijah Newren
  0 siblings, 0 replies; 25+ results
From: Elijah Newren @ 2019-12-08  7:46 UTC (permalink / raw)
  To: Kyle Meyer; +Cc: Git Mailing List

On Sat, Dec 7, 2019 at 9:42 PM Elijah Newren <newren@gmail.com> wrote:
>
> Hi Kyle,
>
> On Sat, Dec 7, 2019 at 9:31 PM Kyle Meyer <kyle@kyleam.com> wrote:
> >
> > Kyle Meyer <kyle@kyleam.com> writes:
> >
> > > Elijah Newren <newren@gmail.com> writes:
> > >> [...]
> > >> At least my changes in git-2.24.0 made the behavior consistent; it'll
> > >> always traverse into a directory that matches a given pathspec.
> > >
> > > I might be getting mixed up, but the changes in 2.24.0 did introduce
> > > some inconsistent behavior (in the no trailing slash case) with respect
> > > to giving a single pathspec and giving multiple pathspecs, no?  Using
> > > your example:
> > >
> > >     $ git --version
> > >     git version 2.24.0
> > >     $ git ls-files -o untracked_repo
> > >     untracked_repo/
> > >     $ git ls-files -o untracked_repo empty
> > >     empty
> > >     untracked_repo/
> > >     untracked_repo/empty
> >
> > It looks like the "multiple pathspecs trigger traversal" change isn't
> > limited to nested repositories.  It can also be observed with
> > --directory and plain untracked directories.  Assume the tree layout
> > from your example again.  With a single pathspec (and no slash),
> > 'ls-files -o --directory' will not expand the untracked directory's
> > contents:
> >
> >     $ git ls-files -o --directory untracked_dir
> >     untracked_dir/
> >
> > But, as of 89a1f4aaf7, tacking on an additional pathspec will cause
> > ls-files to traverse into the untracked directory:
> >
> >     $ git ls-files -o --directory untracked_dir empty
> >     empty
> >     untracked_dir/
> >     untracked_dir/empty
> >
> > In contrast, on 89a1f4aaf7^ the same command shows
> >
> >     $ git ls-files -o --directory untracked_dir empty
> >     empty
> >     untracked_dir/
>
> Yeah, I spotted that too.  You left out a case, a single pathspec with
> the trailing slash:
>
>    git ls-files -o --directory untracked_dir/
>
> That will traverse into the directory before or after my changes.  I
> also spotted a few other bugs, e.g. try out 'git ls-files -o .git/'
> (with either git-2.23 or git-2.24).  Whoops.  We do correctly avoid
> traversing into the .git directory if multiple pathspecs are provided.
> Anyway, this whole area seems to be a bug factory.  Every time I think
> I'm close to having some patches to send to the list to fix up the
> issues I've found, I find the fix isn't where I thought it was and/or
> find yet another bug.  Quite aggravating.
>
> I'm thinking of just sending the patches I have, since they fix up all
> the issues we've discussed so far (including the .git/ case I just
> mentioned), and ignoring the 2-3 other bugs I found that are still
> broken other than providing testcases documenting their breakage.

If you want to take an early look, I've got some patches up at
https://github.com/git/git/pull/676.  I plan to write a proper cover
letter and submit to the list on Monday.

^ permalink raw reply	[relevance 0%]

* Re: [BUG?] ls-files -o now traverses nested repo when given multiple pathspecs
  @ 2019-12-08  5:42  5%   ` Elijah Newren
  2019-12-08  7:46  0%     ` Elijah Newren
  0 siblings, 1 reply; 25+ results
From: Elijah Newren @ 2019-12-08  5:42 UTC (permalink / raw)
  To: Kyle Meyer; +Cc: Git Mailing List

Hi Kyle,

On Sat, Dec 7, 2019 at 9:31 PM Kyle Meyer <kyle@kyleam.com> wrote:
>
> Kyle Meyer <kyle@kyleam.com> writes:
>
> > Elijah Newren <newren@gmail.com> writes:
> >> [...]
> >> At least my changes in git-2.24.0 made the behavior consistent; it'll
> >> always traverse into a directory that matches a given pathspec.
> >
> > I might be getting mixed up, but the changes in 2.24.0 did introduce
> > some inconsistent behavior (in the no trailing slash case) with respect
> > to giving a single pathspec and giving multiple pathspecs, no?  Using
> > your example:
> >
> >     $ git --version
> >     git version 2.24.0
> >     $ git ls-files -o untracked_repo
> >     untracked_repo/
> >     $ git ls-files -o untracked_repo empty
> >     empty
> >     untracked_repo/
> >     untracked_repo/empty
>
> It looks like the "multiple pathspecs trigger traversal" change isn't
> limited to nested repositories.  It can also be observed with
> --directory and plain untracked directories.  Assume the tree layout
> from your example again.  With a single pathspec (and no slash),
> 'ls-files -o --directory' will not expand the untracked directory's
> contents:
>
>     $ git ls-files -o --directory untracked_dir
>     untracked_dir/
>
> But, as of 89a1f4aaf7, tacking on an additional pathspec will cause
> ls-files to traverse into the untracked directory:
>
>     $ git ls-files -o --directory untracked_dir empty
>     empty
>     untracked_dir/
>     untracked_dir/empty
>
> In contrast, on 89a1f4aaf7^ the same command shows
>
>     $ git ls-files -o --directory untracked_dir empty
>     empty
>     untracked_dir/

Yeah, I spotted that too.  You left out a case, a single pathspec with
the trailing slash:

   git ls-files -o --directory untracked_dir/

That will traverse into the directory before or after my changes.  I
also spotted a few other bugs, e.g. try out 'git ls-files -o .git/'
(with either git-2.23 or git-2.24).  Whoops.  We do correctly avoid
traversing into the .git directory if multiple pathspecs are provided.
Anyway, this whole area seems to be a bug factory.  Every time I think
I'm close to having some patches to send to the list to fix up the
issues I've found, I find the fix isn't where I thought it was and/or
find yet another bug.  Quite aggravating.

I'm thinking of just sending the patches I have, since they fix up all
the issues we've discussed so far (including the .git/ case I just
mentioned), and ignoring the 2-3 other bugs I found that are still
broken other than providing testcases documenting their breakage.

^ permalink raw reply	[relevance 5%]

* Re: git 2.24: git revert <commit1> <commit2> requires extra '--continue'?
  2019-11-23  0:34  6% ` SZEDER Gábor
@ 2019-11-23  9:53  8%   ` Phillip Wood
  0 siblings, 0 replies; 25+ results
From: Phillip Wood @ 2019-11-23  9:53 UTC (permalink / raw)
  To: SZEDER Gábor, Brian Norris; +Cc: git, Phillip Wood

Hi Brian & Gábor

Thanks to Brian for reporting this and Gábor for bisecting and creating 
the tests.

On 23/11/2019 00:34, SZEDER Gábor wrote:
> On Fri, Nov 22, 2019 at 03:10:20PM -0800, Brian Norris wrote:
>> Hi! I'm using git 2.24 (or, a variant of that packaged my distro -- I
>> can try to build my own if this is deemed not reproducible), and I
>> feel like I've been seeing a regression here:
>>
>> Previously, when reverting multiple commits (with the default --edit
>> behavior), as soon as I'm done editing the first revert commit
>> message, the second revert commit pops up an editor, and I'm on my
>> way. Now, it seems to require an extra 'git revert --continue' prompt
>> in between, yet it doesn't actually recommend that. This is highly
>> confusing, and seemingly unnecessary.
> 
> Thanks for the report, this is indeed a regression in v2.24.0: it
> bisects down to a47ba3c777 (rebase -i: check for updated todo after
> squash and reword, 2019-08-19) [Cc'ing Phillip].  It's not specific to
> 'git revert', but with a slight variation affects 'git cherry-pick' as
> well.

Thanks, I suspect it's missing an 'if (is_rebase_i(opts))' I'll take a 
look later and come up with a fix

Best Wishes

Phillip

>> An annotated transcript provided below.
> 
> I transcribed your transcript into tests that can be run in our test
> framework and demonstrate this regression:
> 
>    --- >8 ---
> 
> #!/bin/sh
> 
> test_description='test'
> 
> . ./test-lib.sh
> 
> test_expect_success "Brian's revert regression" '
> 	test_create_repo revert &&
> 	(
> 		cd revert &&
> 
> 		echo 1 >file &&
> 		git add file &&
> 		git commit -m first &&
> 		echo 2 >file &&
> 		git commit -am second &&
> 		echo 3 >file &&
> 		git commit -am third &&
> 
> 		git checkout -b branch &&
> 
> 		git revert --edit HEAD HEAD^ &&
> 
> 		echo 1 >expect &&
> 		test_cmp expect file
> 	)
> '
> 
> test_expect_success "a variant of Brian's regression for cherry-pick" '
> 	test_create_repo cherry-pick &&
> 	(
> 		cd cherry-pick &&
> 
> 		echo 1 >file &&
> 		git add file &&
> 		git commit -m first &&
> 		echo 2 >file &&
> 		git commit -am second &&
> 		echo 3 >file &&
> 		git commit -am third &&
> 
> 		git checkout -b branch HEAD^^ &&
> 
> 		git cherry-pick --edit master^ master &&
> 
> 		echo 3 >expect &&
> 		test_cmp expect file
> 	)
> '
> 
> test_done
> 
>    ---  >8  ---
> 
> They both succeed on a47ba3c777's parent, but fail on a47ba3c777 when
> the 'git revert' or 'git cherry-pick' commands return with exit code 1
> after reverting/cherry-picking the first commit instead of processing
> the second commit:
> 
>    + git revert --edit HEAD HEAD^
>    [branch 88ea48c] Revert "third"
>     Author: A U Thor <author@example.com>
>     1 file changed, 1 insertion(+), 1 deletion(-)
>    On branch branch
>    Revert currently in progress.
>    
>    nothing to commit, working tree clean
>    error: last command exited with $?=1
>    not ok 1 - Brian's revert regression
> 
> 
> 
>    + git cherry-pick --edit master^ master
>    [branch 2cb3f74] second
>     Author: A U Thor <author@example.com>
>     Date: Sat Nov 23 00:17:32 2019 +0000
>     1 file changed, 1 insertion(+), 1 deletion(-)
>    On branch branch
>    Cherry-pick currently in progress.
>    
>    nothing to commit, working tree clean
>    The previous cherry-pick is now empty, possibly due to conflict
>    resolution.
>    If you wish to commit it anyway, use:
>    
>        git commit --allow-empty
>    
>    If you wish to skip this commit, use:
>    
>        git reset
>    
>    Then "git cherry-pick --continue" will resume cherry-picking
>    the remaining commits.
>    error: last command exited with $?=1
>    not ok 2 - a variant of Brian's regression for cherry-pick
> 
> 
> These test should probably be squeezed into
> 't3508-cherry-pick-many-commits.sh', but Friday has just turned into
> Saturday around here, so that's enough from me for now.
> 
> 
>> Note that none of this happens with --no-edit; my reverts happen
>> smoothly, with no extra need for --continue.
>>
>> Regards,
>> Brian
>>
>> $ mkdir tmp
>> $ cd tmp
>> /tmp$ git init
>> Initialized empty Git repository in [...]/tmp/.git/
>> /tmp$ touch foo
>> /tmp$ git add foo
>> /tmp$ echo bar >> foo
>> /tmp$ git commit -am baz
>> [master (root-commit) a388f78d9013] baz
>>   1 file changed, 1 insertion(+)
>>   create mode 100644 foo
>> /tmp$ echo pow >> foo
>> /tmp$ git commit -am whizzbang
>> [master 51753222dd9a] whizzbang
>>   1 file changed, 1 insertion(+)
>> /tmp$ echo pop >> foo
>> /tmp$ git commit -am nothing
>> [master 7153607b11e0] nothing
>>   1 file changed, 1 insertion(+)
>> /tmp$ git revert HEAD HEAD^
>> ## EDITOR pops up, as expected
>> [master 586469974ec2] Revert "nothing"
>>   1 file changed, 1 deletion(-)
>> On branch master
>> Revert currently in progress.
>>
>> nothing to commit, working tree clean
>> ## Unexpected, confusing pause? No prompt to '--continue'
>> /tmp$ git log --oneline
>> 586469974ec2 (HEAD -> master) Revert "nothing"
>> 7153607b11e0 nothing
>> 51753222dd9a whizzbang
>> a388f78d9013 baz
>> /tmp$ git status
>> On branch master
>> Revert currently in progress.
>>    (run "git revert --continue" to continue)
>>    (use "git revert --skip" to skip this patch)
>>    (use "git revert --abort" to cancel the revert operation)
>>
>> nothing to commit, working tree clean
>> /tmp$ git revert --continue
>> ## EDITOR pops up, as expected
>> [master b8dd23f61d07] Revert "whizzbang"
>>   1 file changed, 1 deletion(-)
>> On branch master
>> Revert currently in progress.
>>
>> nothing to commit, working tree clean
>> ## Unexpected state; both reverts happened, but revert is still in progress?
>> /tmp$ git log --oneline
>> b8dd23f61d07 (HEAD -> master) Revert "whizzbang"
>> 586469974ec2 Revert "nothing"
>> 7153607b11e0 nothing
>> 51753222dd9a whizzbang
>> a388f78d9013 baz
>> /tmp$ git status
>> On branch master
>> Revert currently in progress.
>>    (run "git revert --continue" to continue)
>>    (use "git revert --skip" to skip this patch)
>>    (use "git revert --abort" to cancel the revert operation)
>>
>> nothing to commit, working tree clean
>> ## OK...I'll run it one more time.
>> /tmp$ git revert --continue
>> /tmp$ git status
>> On branch master
>> nothing to commit, working tree clean
>> ## *Now* I'm done
>> /tmp$ git log --oneline
>> b8dd23f61d07 (HEAD -> master) Revert "whizzbang"
>> 586469974ec2 Revert "nothing"
>> 7153607b11e0 nothing
>> 51753222dd9a whizzbang
>> a388f78d9013 baz

^ permalink raw reply	[relevance 8%]

* Re: git 2.24: git revert <commit1> <commit2> requires extra '--continue'?
  2019-11-22 23:10 11% git 2.24: git revert <commit1> <commit2> requires extra '--continue'? Brian Norris
@ 2019-11-23  0:34  6% ` SZEDER Gábor
  2019-11-23  9:53  8%   ` Phillip Wood
  0 siblings, 1 reply; 25+ results
From: SZEDER Gábor @ 2019-11-23  0:34 UTC (permalink / raw)
  To: Brian Norris; +Cc: git, Phillip Wood

On Fri, Nov 22, 2019 at 03:10:20PM -0800, Brian Norris wrote:
> Hi! I'm using git 2.24 (or, a variant of that packaged my distro -- I
> can try to build my own if this is deemed not reproducible), and I
> feel like I've been seeing a regression here:
> 
> Previously, when reverting multiple commits (with the default --edit
> behavior), as soon as I'm done editing the first revert commit
> message, the second revert commit pops up an editor, and I'm on my
> way. Now, it seems to require an extra 'git revert --continue' prompt
> in between, yet it doesn't actually recommend that. This is highly
> confusing, and seemingly unnecessary.

Thanks for the report, this is indeed a regression in v2.24.0: it
bisects down to a47ba3c777 (rebase -i: check for updated todo after
squash and reword, 2019-08-19) [Cc'ing Phillip].  It's not specific to
'git revert', but with a slight variation affects 'git cherry-pick' as
well.

> An annotated transcript provided below.

I transcribed your transcript into tests that can be run in our test
framework and demonstrate this regression:

  --- >8 ---

#!/bin/sh

test_description='test'

. ./test-lib.sh

test_expect_success "Brian's revert regression" '
	test_create_repo revert &&
	(
		cd revert &&

		echo 1 >file &&
		git add file &&
		git commit -m first &&
		echo 2 >file &&
		git commit -am second &&
		echo 3 >file &&
		git commit -am third &&

		git checkout -b branch &&

		git revert --edit HEAD HEAD^ &&

		echo 1 >expect &&
		test_cmp expect file
	)
'

test_expect_success "a variant of Brian's regression for cherry-pick" '
	test_create_repo cherry-pick &&
	(
		cd cherry-pick &&

		echo 1 >file &&
		git add file &&
		git commit -m first &&
		echo 2 >file &&
		git commit -am second &&
		echo 3 >file &&
		git commit -am third &&

		git checkout -b branch HEAD^^ &&

		git cherry-pick --edit master^ master &&

		echo 3 >expect &&
		test_cmp expect file
	)
'

test_done

  ---  >8  ---

They both succeed on a47ba3c777's parent, but fail on a47ba3c777 when
the 'git revert' or 'git cherry-pick' commands return with exit code 1
after reverting/cherry-picking the first commit instead of processing
the second commit:

  + git revert --edit HEAD HEAD^
  [branch 88ea48c] Revert "third"
   Author: A U Thor <author@example.com>
   1 file changed, 1 insertion(+), 1 deletion(-)
  On branch branch
  Revert currently in progress.
  
  nothing to commit, working tree clean
  error: last command exited with $?=1
  not ok 1 - Brian's revert regression



  + git cherry-pick --edit master^ master
  [branch 2cb3f74] second
   Author: A U Thor <author@example.com>
   Date: Sat Nov 23 00:17:32 2019 +0000
   1 file changed, 1 insertion(+), 1 deletion(-)
  On branch branch
  Cherry-pick currently in progress.
  
  nothing to commit, working tree clean
  The previous cherry-pick is now empty, possibly due to conflict
  resolution.
  If you wish to commit it anyway, use:
  
      git commit --allow-empty
  
  If you wish to skip this commit, use:
  
      git reset
  
  Then "git cherry-pick --continue" will resume cherry-picking
  the remaining commits.
  error: last command exited with $?=1
  not ok 2 - a variant of Brian's regression for cherry-pick


These test should probably be squeezed into
't3508-cherry-pick-many-commits.sh', but Friday has just turned into
Saturday around here, so that's enough from me for now.


> Note that none of this happens with --no-edit; my reverts happen
> smoothly, with no extra need for --continue.
> 
> Regards,
> Brian
> 
> $ mkdir tmp
> $ cd tmp
> /tmp$ git init
> Initialized empty Git repository in [...]/tmp/.git/
> /tmp$ touch foo
> /tmp$ git add foo
> /tmp$ echo bar >> foo
> /tmp$ git commit -am baz
> [master (root-commit) a388f78d9013] baz
>  1 file changed, 1 insertion(+)
>  create mode 100644 foo
> /tmp$ echo pow >> foo
> /tmp$ git commit -am whizzbang
> [master 51753222dd9a] whizzbang
>  1 file changed, 1 insertion(+)
> /tmp$ echo pop >> foo
> /tmp$ git commit -am nothing
> [master 7153607b11e0] nothing
>  1 file changed, 1 insertion(+)
> /tmp$ git revert HEAD HEAD^
> ## EDITOR pops up, as expected
> [master 586469974ec2] Revert "nothing"
>  1 file changed, 1 deletion(-)
> On branch master
> Revert currently in progress.
> 
> nothing to commit, working tree clean
> ## Unexpected, confusing pause? No prompt to '--continue'
> /tmp$ git log --oneline
> 586469974ec2 (HEAD -> master) Revert "nothing"
> 7153607b11e0 nothing
> 51753222dd9a whizzbang
> a388f78d9013 baz
> /tmp$ git status
> On branch master
> Revert currently in progress.
>   (run "git revert --continue" to continue)
>   (use "git revert --skip" to skip this patch)
>   (use "git revert --abort" to cancel the revert operation)
> 
> nothing to commit, working tree clean
> /tmp$ git revert --continue
> ## EDITOR pops up, as expected
> [master b8dd23f61d07] Revert "whizzbang"
>  1 file changed, 1 deletion(-)
> On branch master
> Revert currently in progress.
> 
> nothing to commit, working tree clean
> ## Unexpected state; both reverts happened, but revert is still in progress?
> /tmp$ git log --oneline
> b8dd23f61d07 (HEAD -> master) Revert "whizzbang"
> 586469974ec2 Revert "nothing"
> 7153607b11e0 nothing
> 51753222dd9a whizzbang
> a388f78d9013 baz
> /tmp$ git status
> On branch master
> Revert currently in progress.
>   (run "git revert --continue" to continue)
>   (use "git revert --skip" to skip this patch)
>   (use "git revert --abort" to cancel the revert operation)
> 
> nothing to commit, working tree clean
> ## OK...I'll run it one more time.
> /tmp$ git revert --continue
> /tmp$ git status
> On branch master
> nothing to commit, working tree clean
> ## *Now* I'm done
> /tmp$ git log --oneline
> b8dd23f61d07 (HEAD -> master) Revert "whizzbang"
> 586469974ec2 Revert "nothing"
> 7153607b11e0 nothing
> 51753222dd9a whizzbang
> a388f78d9013 baz

^ permalink raw reply	[relevance 6%]

* git 2.24: git revert <commit1> <commit2> requires extra '--continue'?
@ 2019-11-22 23:10 11% Brian Norris
  2019-11-23  0:34  6% ` SZEDER Gábor
  0 siblings, 1 reply; 25+ results
From: Brian Norris @ 2019-11-22 23:10 UTC (permalink / raw)
  To: git

Hi! I'm using git 2.24 (or, a variant of that packaged my distro -- I
can try to build my own if this is deemed not reproducible), and I
feel like I've been seeing a regression here:

Previously, when reverting multiple commits (with the default --edit
behavior), as soon as I'm done editing the first revert commit
message, the second revert commit pops up an editor, and I'm on my
way. Now, it seems to require an extra 'git revert --continue' prompt
in between, yet it doesn't actually recommend that. This is highly
confusing, and seemingly unnecessary.

An annotated transcript provided below.

Note that none of this happens with --no-edit; my reverts happen
smoothly, with no extra need for --continue.

Regards,
Brian

$ mkdir tmp
$ cd tmp
/tmp$ git init
Initialized empty Git repository in [...]/tmp/.git/
/tmp$ touch foo
/tmp$ git add foo
/tmp$ echo bar >> foo
/tmp$ git commit -am baz
[master (root-commit) a388f78d9013] baz
 1 file changed, 1 insertion(+)
 create mode 100644 foo
/tmp$ echo pow >> foo
/tmp$ git commit -am whizzbang
[master 51753222dd9a] whizzbang
 1 file changed, 1 insertion(+)
/tmp$ echo pop >> foo
/tmp$ git commit -am nothing
[master 7153607b11e0] nothing
 1 file changed, 1 insertion(+)
/tmp$ git revert HEAD HEAD^
## EDITOR pops up, as expected
[master 586469974ec2] Revert "nothing"
 1 file changed, 1 deletion(-)
On branch master
Revert currently in progress.

nothing to commit, working tree clean
## Unexpected, confusing pause? No prompt to '--continue'
/tmp$ git log --oneline
586469974ec2 (HEAD -> master) Revert "nothing"
7153607b11e0 nothing
51753222dd9a whizzbang
a388f78d9013 baz
/tmp$ git status
On branch master
Revert currently in progress.
  (run "git revert --continue" to continue)
  (use "git revert --skip" to skip this patch)
  (use "git revert --abort" to cancel the revert operation)

nothing to commit, working tree clean
/tmp$ git revert --continue
## EDITOR pops up, as expected
[master b8dd23f61d07] Revert "whizzbang"
 1 file changed, 1 deletion(-)
On branch master
Revert currently in progress.

nothing to commit, working tree clean
## Unexpected state; both reverts happened, but revert is still in progress?
/tmp$ git log --oneline
b8dd23f61d07 (HEAD -> master) Revert "whizzbang"
586469974ec2 Revert "nothing"
7153607b11e0 nothing
51753222dd9a whizzbang
a388f78d9013 baz
/tmp$ git status
On branch master
Revert currently in progress.
  (run "git revert --continue" to continue)
  (use "git revert --skip" to skip this patch)
  (use "git revert --abort" to cancel the revert operation)

nothing to commit, working tree clean
## OK...I'll run it one more time.
/tmp$ git revert --continue
/tmp$ git status
On branch master
nothing to commit, working tree clean
## *Now* I'm done
/tmp$ git log --oneline
b8dd23f61d07 (HEAD -> master) Revert "whizzbang"
586469974ec2 Revert "nothing"
7153607b11e0 nothing
51753222dd9a whizzbang
a388f78d9013 baz

^ permalink raw reply	[relevance 11%]

* What's cooking in git.git (Nov 2019, #02; Fri, 8)
@ 2019-11-08  8:40  1% Junio C Hamano
  0 siblings, 0 replies; 25+ results
From: Junio C Hamano @ 2019-11-08  8:40 UTC (permalink / raw)
  To: git

Here are the topics that have been cooking.  Commits prefixed with
'-' are only in 'pu' (proposed updates) while commits prefixed with
'+' are in 'next'.  The ones marked with '.' do not appear in any of
the integration branches, but I am still holding onto them.

Git 2.24 has been tagged.  Hopefully there needs no immediate brown
paper bag fixes needed for the 'master' branch. The next cycle will
start perhaps early next week by first rewinding the 'next' branch,
after the dust settles. Topics marked as "will cook in next" can be
given a fresh start by ejecting them from 'next' and queueing a new
version (please just ask). Topics currently not in 'next' will then
start getting merged down after all that.

You can find the changes described here in the integration branches
of the repositories listed at

    http://git-blame.blogspot.com/p/git-public-repositories.html

--------------------------------------------------
[New Topics]

* am/pathspec-from-file (2019-11-07) 6 commits
 - commit: support the --pathspec-from-file option
 - doc: commit: unify <pathspec> description
 - reset: support the `--pathspec-from-file` option
 - doc: reset: unify <pathspec> description
 - pathspec: add new function to parse file
 - parse-options.h: add new options `--pathspec-from-file`, `--pathspec-file-nul`

 A few commands learned to take the pathspec from the
 standard input or a named file, instead of taking it as the command
 line arguments.

 Will merge to 'next'.


* cb/curl-use-xmalloc (2019-11-07) 1 commit
 - remote-curl: unbreak http.extraHeader with custom allocators

 HTTP transport had possible allocator/deallocator mismatch, which
 has been corrected.

 Will merge to 'next'.


* ds/commit-graph-delay-gen-progress (2019-11-07) 1 commit
 - commit-graph: use start_delayed_progress()

 One kind of progress messages were always given during commit-graph
 generation, instead of following the "if it takes more than two
 seconds, show progress" pattern, which has been corrected.

 Will merge to 'next'.


* ec/fetch-mark-common-refs-trace2 (2019-11-07) 1 commit
 - fetch: add trace2 instrumentation

 Trace2 annotation.

 Expecting a response to review.


* en/misc-doc-fixes (2019-11-07) 3 commits
 - name-hash.c: remove duplicate word in comment
 - hashmap: fix documentation misuses of -> versus .
 - git-filter-branch.txt: correct argument name typo

 Misc doc fixes.

 Will merge to 'next'.


* en/t6024-style (2019-11-07) 1 commit
 - t6024: modernize style

 Test updates.

 Will merge to 'next'.


* ep/guard-kset-tar-headers (2019-11-07) 1 commit
 - kset.h, tar.h: add missing header guard to prevent multiple inclusion

 Code clean-up.

 Will merge to 'next'.


* js/fetch-multi-lockfix (2019-11-06) 2 commits
 - fetch: avoid locking issues between fetch.jobs/fetch.writeCommitGraph
 - fetch: add the command-line option `--write-commit-graph`

 Fetching from multiple remotes into the same repository in parallel
 had a bad interaction with the recent change to (optionally) update
 the commit-graph after a fetch job finishes, as these parallel
 fetches compete with each other.  Which has been corrected.

 Will merge to 'next'.


* jt/fetch-remove-lazy-fetch-plugging (2019-11-06) 1 commit
 - fetch: remove fetch_if_missing=0

 "git fetch" codepath had a big "do not lazily fetch missing objects
 when I ask if something exists" switch.  This has been corrected by
 marking the "does this thing exist?" calls with "if not please do not
 lazily fetch it" flag.

 Will merge to 'next'.


* kw/fsmonitor-watchman-fix (2019-11-06) 1 commit
 - fsmonitor: fix watchman integration

 The watchman integration for fsmonitor was racy, which has been
 corrected to be more conservative.

 Will merge to 'next'.


* ln/userdiff-elixir (2019-11-08) 1 commit
 - userdiff: add Elixir to supported languages

 The patterns to detect function boundary for Elixir language has
 been added.

 Will merge to 'next'.


* ns/test-desc-typofix (2019-11-07) 1 commit
 - t: fix typo in test descriptions

 Typofix.

 Will merge to 'next'.


* py/shortlog-list-options-for-log (2019-11-06) 1 commit
 - git-shortlog.txt: include commit limiting options

 Documentation pages for "git shortlog" now lists commit limiting
 options explicitly.

 Expecting a reroll.  
 It excludes too much (e.g. the section for pathspec based history
 simplification) in a way that makes future shuffling of sections
 in rev-list-options.txt error prone.


* rs/trace2-dots (2019-11-06) 1 commit
 - trace2: add dots directly to strbuf in perf_fmt_prepare()

 Code cleanup.

 Will merge to 'next'.


* dd/sequencer-utf8 (2019-11-07) 8 commits
 - sequencer: reencode commit message for am/rebase --show-current-patch
 - sequencer: reencode old merge-commit message
 - sequencer: reencode squashing commit's message
 - sequencer: reencode revert/cherry-pick's todo list
 - sequencer: reencode to utf-8 before arrange rebase's todo list
 - t3900: demonstrate git-rebase problem with multi encoding
 - configure.ac: define ICONV_OMITS_BOM if necessary
 - t0028: eliminate non-standard usage of printf

 Handling of commit objects that use non UTF-8 encoding during
 "rebase -i" has been improved.


* dl/t5520-cleanup (2019-11-08) 14 commits
 - t5520: replace `! git` with `test_must_fail git`
 - t5520: remove redundant lines in test cases
 - t5520: replace subshell cat comparison with test_cmp
 - t5520: don't put git in upstream of pipe
 - t5520: test single-line files by git with test_cmp
 - t5520: use test_cmp_rev where possible
 - t5520: replace test -{n,z} with test-lib functions
 - t5520: use test_line_count where possible
 - t5520: remove spaces after redirect operator
 - t5520: replace test -f with test-lib functions
 - t5520: let sed open its own input
 - t5520: use sq for test case names
 - t5520: improve test style
 - t: teach test_cmp_rev to accept ! for not-equals

 Test cleanup.

 Expecting a response to review.

--------------------------------------------------
[Stalled]

* vn/reset-deleted-ita (2019-07-26) 1 commit
 - reset: unstage empty deleted ita files

 "git reset HEAD [<pathspec>]" did not reset an empty file that was
 added with the intent-to-add bit.

 Expecting a reroll.


* jn/unknown-index-extensions (2018-11-21) 2 commits
 - index: offer advice for unknown index extensions
 - index: do not warn about unrecognized extensions

 A bit too alarming warning given when unknown index extensions
 exist is getting revamped.

 Expecting a reroll.


* jc/format-patch-delay-message-id (2019-04-05) 1 commit
 - format-patch: move message-id and related headers to the end

 The location "git format-patch --thread" adds the Message-Id:
 header in the series of header fields has been moved down, which
 may help working around a suspected bug in GMail MSA, reported at
 <CAHk-=whP1stFZNAaJiMi5eZ9rj0MRt20Y_yHVczZPH+O01d+sA@mail.gmail.com>

 Waiting for feedback to see if it truly helps.
 Needs tests.


* js/protocol-advertise-multi (2018-12-28) 1 commit
 - protocol: advertise multiple supported versions

 The transport layer has been updated so that the protocol version
 used can be negotiated between the parties, by the initiator
 listing the protocol versions it is willing to talk, and the other
 side choosing from one of them.

 Expecting a reroll.
 cf. <CANq=j3u-zdb_FvNJGPCmygNMScseav63GhVvBX3NcVS4f7TejA@mail.gmail.com>


* mk/use-size-t-in-zlib (2018-10-15) 1 commit
 - zlib.c: use size_t for size

 The wrapper to call into zlib followed our long tradition to use
 "unsigned long" for sizes of regions in memory, which have been
 updated to use "size_t".

--------------------------------------------------
[Cooking]

* js/builtin-add-i (2019-11-08) 9 commits
 - built-in add -i: implement the `help` command
 - built-in add -i: use color in the main loop
 - built-in add -i: support `?` (prompt help)
 - built-in add -i: show unique prefixes of the commands
 - built-in add -i: implement the main loop
 - built-in add -i: color the header in the `status` command
 - built-in add -i: implement the `status` command
 - diff: export diffstat interface
 - Start to implement a built-in version of `git add --interactive`

 The beginning of rewriting "git add -i" in C.


* es/myfirstcontrib-updates (2019-11-02) 3 commits
 - myfirstcontrib: hint to find gitgitgadget allower
 - myfirstcontrib: add dependency installation step
 - myfirstcontrib: add 'psuh' to command-list.txt

 Doc updates.

 Will merge to 'next'.


* rt/fetch-message-fix (2019-11-02) 1 commit
 - fetch.c: fix typo in a warning message

 A small message update.

 Will merge to 'next'.


* ra/rebase-i-more-options (2019-11-02) 6 commits
 - rebase: add --reset-author-date
 - rebase -i: support --ignore-date
 - sequencer: rename amend_author to author_to_rename
 - rebase -i: support --committer-date-is-author-date
 - sequencer: allow callers of read_author_script() to ignore fields
 - rebase -i: add --ignore-whitespace flag

 "git rebase -i" learned a few options that are known by "git
 rebase" proper.


* en/doc-typofix (2019-11-07) 11 commits
 - Fix spelling errors in no-longer-updated-from-upstream modules
 - multimail: fix a few simple spelling errors
 - sha1dc: fix trivial comment spelling error
 - Fix spelling errors in test commands
 - Fix spelling errors in messages shown to users
 - Fix spelling errors in names of tests
 - Fix spelling errors in comments of testcases
 - Fix spelling errors in code comments
 - Prefer 'up-to-date' spelling
 - Fix spelling errors in documentation outside of Documentation/
 - Documentation: fix a bunch of typos, both old and new

 Docfix.

 Will merge to 'next'.


* hw/remove-api-docs-placeholder (2019-10-25) 1 commit
  (merged to 'next' on 2019-10-30 at c99fe16682)
 + documentation: remove empty doc files

 Docfix.

 Will merge to 'master'.


* js/update-index-ignore-removal-for-skip-worktree (2019-11-02) 2 commits
  (merged to 'next' on 2019-11-02 at 57f7fb885f)
 + stash: handle staged changes in skip-worktree files correctly
 + update-index: optionally leave skip-worktree entries alone

 "git stash save" in a working tree that is sparsely checked out
 mistakenly removed paths that are outside the area of interest.

 Will merge to 'master'.


* pb/pretty-email-without-domain-part (2019-10-30) 3 commits
  (merged to 'next' on 2019-10-30 at 06f719efa5)
 + pretty: add "%aL" etc. to show local-part of email addresses
 + t4203: use test-lib.sh definitions
 + t6006: use test-lib.sh definitions

 The custom format for "git log --format=<format>" learned the l/L
 placeholder that is similar to e/E that fills in the e-mail
 address, but only the local part on the left side of '@'.

 Will merge to 'master'.


* sg/commit-graph-usage-fix (2019-10-28) 1 commit
  (merged to 'next' on 2019-10-28 at 13d01506dd)
 + builtin/commit-graph.c: remove subcommand-less usage string

 Message fix.

 Will merge to 'master'.


* dl/doc-diff-no-index-implies-exit-code (2019-11-02) 1 commit
 - git-diff.txt: document return code of `--no-index`

 Doc update.

 Will merge to 'next'.


* dl/submodule-set-url (2019-10-30) 1 commit
 - submodule: teach set-url subcommand

 "git submodule" learned a subcommand "set-url".


* js/vreportf-wo-buffering (2019-11-02) 1 commit
 - vreportf(): avoid relying on stdio buffering

 Messages from die() etc. can be mixed up from multiple processes
 without even line buffering on Windows, which has been worked
 around.

 Will merge to 'next'.


* ma/bisect-doc-sample-update (2019-10-29) 1 commit
 - Documentation/git-bisect.txt: add --no-ff to merge command

 "git merge --no-commit" needs "--no-ff" if you do not want to move
 HEAD, which has been corrected in the manual page for "git bisect".

 Will merge to 'next'.


* mr/clone-dir-exists-to-path-exists (2019-10-29) 1 commit
 - clone: rename static function `dir_exists()`.

 Code cleanup.

 Will merge to 'next'.


* pb/help-list-gitsubmodules-among-guides (2019-10-29) 1 commit
 - help: add gitsubmodules to the list of guides

 Help update.

 Will merge to 'next'.


* pb/no-recursive-reset-hard-in-worktree-add (2019-10-30) 1 commit
 - worktree: teach "add" to ignore submodule.recurse config

 "git worktree add" internally calls "reset --hard" that should not
 descend into submodules, even when submodule.recurse configuration
 is set, but it was affected.  This has been correct.

 Will merge to 'next'.


* sg/blame-indent-heuristics-is-now-the-default (2019-10-29) 1 commit
 - builtin/blame.c: remove '--indent-heuristic' from usage string

 Message update.

 Will merge to 'next'.


* hv/bitshift-constants-in-blame (2019-10-21) 1 commit
  (merged to 'next' on 2019-10-24 at bc84aae4d4)
 + builtin/blame.c: constants into bit shift format

 Move the definition of a set of bitmask constants from 0ctal
 literal to (1U<<count) notation.

 Will merge to 'master'.


* jk/cleanup-object-parsing-and-fsck (2019-10-28) 23 commits
  (merged to 'next' on 2019-10-30 at 6e8b84557e)
 + fsck: accept an oid instead of a "struct tree" for fsck_tree()
 + fsck: accept an oid instead of a "struct commit" for fsck_commit()
 + fsck: accept an oid instead of a "struct tag" for fsck_tag()
 + fsck: rename vague "oid" local variables
 + fsck: don't require an object struct in verify_headers()
 + fsck: don't require an object struct for fsck_ident()
 + fsck: drop blob struct from fsck_finish()
 + fsck: accept an oid instead of a "struct blob" for fsck_blob()
 + fsck: don't require an object struct for report()
 + fsck: only require an oid for skiplist functions
 + fsck: only provide oid/type in fsck_error callback
 + fsck: don't require object structs for display functions
 + fsck: use oids rather than objects for object_name API
 + fsck_describe_object(): build on our get_object_name() primitive
 + fsck: unify object-name code
 + fsck: require an actual buffer for non-blobs
 + fsck: stop checking tag->tagged
 + fsck: stop checking commit->parent counts
 + fsck: stop checking commit->tree value
 + commit, tag: don't set parsed bit for parse failures
 + parse_tag_buffer(): treat NULL tag pointer as parse error
 + parse_commit_buffer(): treat lookup_tree() failure as parse error
 + parse_commit_buffer(): treat lookup_commit() failure as parse error

 Crufty code and logic accumulated over time around the object
 parsing and low-level object access used in "git fsck" have been
 cleaned up.

 Will cook in 'next'.


* js/rebase-deprecate-preserve-merges (2019-10-21) 1 commit
  (merged to 'next' on 2019-10-24 at 82fa49bbf2)
 + rebase: hide --preserve-merges option

 "git rebase --preserve-merges" has been marked as deprecated; this
 release stops advertising it in the "git rebase -h" output.

 Will merge to 'master'.


* po/bundle-doc-clonable (2019-10-21) 1 commit
 - Doc: Bundle file usage

 Doc update.

 Expecting a reroll.


* jc/am-show-current-patch-docfix (2019-10-23) 1 commit
  (merged to 'next' on 2019-10-24 at 31fa6081f2)
 + doc: am --show-current-patch gives an entire e-mail message

 Doc update.

 Will merge to 'master'.


* js/advise-rebase-skip (2019-10-23) 3 commits
  (merged to 'next' on 2019-10-24 at e2edd2df2d)
 + commit: give correct advice for empty commit during a rebase
 + sequencer: export the function to get the path of `.git/rebase-merge/`
 + cherry-pick: add test for `--skip` advice in `git commit`

 The logic used in "git commit" to give hints and errors depending
 on what operation was in progress learned to distinguish rebase and
 cherry-pick better.

 Perhaps discard and expect a reroll.
 cf. <9d550cd9-08a2-eee5-7d7f-63678285accc@gmail.com>


* sg/dir-trie-fixes (2019-10-23) 5 commits
  (merged to 'next' on 2019-10-24 at 06d60a7fb0)
 + path.c: don't call the match function without value in trie_find()
 + path.c: clarify two field names in 'struct common_dir'
 + path.c: mark 'logs/HEAD' in 'common_list' as file
 + path.c: clarify trie_find()'s in-code comment
 + Documentation: mention more worktree-specific exceptions

 Code clean-up and a bugfix in the logic used to tell worktree local
 and repository global refs apart.

 Will merge to 'master'.


* wb/midx-progress (2019-10-23) 6 commits
  (merged to 'next' on 2019-10-24 at 95c3e3ab3a)
 + multi-pack-index: add [--[no-]progress] option.
 + midx: honor the MIDX_PROGRESS flag in midx_repack
 + midx: honor the MIDX_PROGRESS flag in verify_midx_file
 + midx: add progress to expire_midx_packs
 + midx: add progress to write_midx_file
 + midx: add MIDX_PROGRESS flag

 The code to generate multi-pack index learned to show (or not to
 show) progress indicators.

 Will merge to 'master'.


* dl/apply-3way-diff3 (2019-10-24) 5 commits
  (merged to 'next' on 2019-10-24 at 84e27d28b6)
 + apply: respect merge.conflictStyle in --3way
 + t4108: demonstrate bug in apply
 + t4108: use `test_config` instead of `git config`
 + t4108: remove git command upstream of pipe
 + t4108: replace create_file with test_write_lines

 "git apply --3way" learned to honor merge.conflictStyle
 configuration variable, like merges would.

 Will merge to 'master'.


* hw/config-doc-in-header (2019-10-24) 1 commit
 - config: move documentation to config.h

 Follow recent push to move API docs from Documentation/ to header
 files and update config.h

 Will merge to 'next'.


* dd/notes-copy-default-dst-to-head (2019-10-18) 2 commits
  (merged to 'next' on 2019-10-18 at 2588a175ec)
 + notes: fix minimum number of parameters to "copy" subcommand
 + t3301: test diagnose messages for too few/many paramters

 "git notes copy $original" ought to copy the notes attached to the
 original object to HEAD, but a mistaken tightening to command line
 parameter validation made earlier disabled that feature by mistake.

 Will merge to 'master'.


* jc/log-graph-simplify (2019-10-16) 13 commits
  (merged to 'next' on 2019-10-24 at 190b88709e)
 + graph: fix coloring of octopus dashes
 + graph: flatten edges that fuse with their right neighbor
 + graph: smooth appearance of collapsing edges on commit lines
 + graph: rename `new_mapping` to `old_mapping`
 + graph: commit and post-merge lines for left-skewed merges
 + graph: tidy up display of left-skewed merges
 + graph: example of graph output that can be simplified
 + graph: extract logic for moving to GRAPH_PRE_COMMIT state
 + graph: remove `mapping_idx` and `graph_update_width()`
 + graph: reduce duplication in `graph_insert_into_new_columns()`
 + graph: reuse `find_new_column_by_commit()`
 + graph: handle line padding in `graph_next_line()`
 + graph: automatically track display width of graph lines

 The implementation of "git log --graph" got refactored and then its
 output got simplified.

 Will cook in 'next'.


* js/git-path-head-dot-lock-fix (2019-10-29) 2 commits
 - git_path(): handle `.lock` files correctly
 - t1400: wrap setup code in test case

 "git rev-parse --git-path HEAD.lock" did not give the right path
 when run in a secondary worktree.

 Will merge to 'next'.


* pw/post-commit-from-sequencer (2019-10-16) 6 commits
  (merged to 'next' on 2019-10-18 at 15b41a097d)
 + sequencer: run post-commit hook
 + move run_commit_hook() to libgit and use it there
 + sequencer.h fix placement of #endif
 + t3404: remove uneeded calls to set_fake_editor
 + t3404: set $EDITOR in subshell
 + t3404: remove unnecessary subshell

 "rebase -i" ceased to run post-commit hook by mistake in an earlier
 update, which has been corrected.

 Will merge to 'master'.


* ds/sparse-cone (2019-10-23) 17 commits
 - sparse-checkout: cone mode should not interact with .gitignore
 - sparse-checkout: write using lockfile
 - sparse-checkout: update working directory in-process
 - sparse-checkout: sanitize for nested folders
 - read-tree: show progress by default
 - unpack-trees: add progress to clear_ce_flags()
 - unpack-trees: hash less in cone mode
 - sparse-checkout: init and set in cone mode
 - sparse-checkout: use hashmaps for cone patterns
 - sparse-checkout: add 'cone' mode
 - trace2: add region in clear_ce_flags
 - sparse-checkout: create 'disable' subcommand
 - sparse-checkout: add '--stdin' option to set subcommand
 - sparse-checkout: 'set' subcommand
 - clone: add --sparse mode
 - sparse-checkout: create 'init' subcommand
 - sparse-checkout: create builtin with 'list' subcommand

 Management of sparsely checked-out working tree has gained a
 dedicated "sparse-checkout" command.

 Will merge to 'next'.


* dl/format-patch-cover-from-desc (2019-10-16) 3 commits
  (merged to 'next' on 2019-10-18 at 40e992b6f5)
 + format-patch: teach --cover-from-description option
 + format-patch: use enum variables
 + format-patch: replace erroneous and condition

 The branch description ("git branch --edit-description") has been
 used to fill the body of the cover letters by the format-patch
 command; this has been enhanced so that the subject can also be
 filled.

 Will merge to 'master'.


* en/merge-recursive-directory-rename-fixes (2019-10-23) 3 commits
  (merged to 'next' on 2019-10-24 at 82e64029a8)
 + t604[236]: do not run setup in separate tests
 + merge-recursive: fix merging a subdirectory into the root directory
 + merge-recursive: clean up get_renamed_dir_portion()

 When all files from some subdirectory were renamed to the root
 directory, the directory rename heuristics would fail to detect that
 as a rename/merge of the subdirectory to the root directory, which has
 been corrected.

 Will merge to 'master'.


* jt/fetch-pack-record-refs-in-the-dot-promisor (2019-10-16) 1 commit
  (merged to 'next' on 2019-10-18 at 4ead52e59a)
 + fetch-pack: write fetched refs to .promisor

 Debugging support for lazy cloning has been a bit improved.

 Will merge to 'master'.


* es/walken-tutorial (2019-10-12) 1 commit
  (merged to 'next' on 2019-10-18 at 59160e59e9)
 + documentation: add tutorial for object walking

 A tutorial on object enumeration.

 Will merge to 'master'.


* bc/hash-independent-tests-part-6 (2019-10-28) 15 commits
  (merged to 'next' on 2019-10-30 at 70037a3839)
 + t4048: abstract away SHA-1-specific constants
 + t4045: make hash-size independent
 + t4044: update test to work with SHA-256
 + t4039: abstract away SHA-1-specific constants
 + t4038: abstract away SHA-1 specific constants
 + t4034: abstract away SHA-1-specific constants
 + t4027: make hash-size independent
 + t4015: abstract away SHA-1-specific constants
 + t4011: abstract away SHA-1-specific constants
 + t4010: abstract away SHA-1-specific constants
 + t3429: remove SHA1 annotation
 + t1305: avoid comparing extensions
 + rev-parse: add a --show-object-format option
 + t/oid-info: add empty tree and empty blob values
 + t/oid-info: allow looking up hash algorithm name

 Test updates to prepare for SHA-2 transition continues.

 Will merge to 'master'.


* ag/sequencer-todo-updates (2019-10-28) 6 commits
  (merged to 'next' on 2019-10-28 at 85f694d9d3)
 + SQUASH??? tentative leakfix
  (merged to 'next' on 2019-10-18 at 8dac803e49)
 + sequencer: directly call pick_commits() from complete_action()
 + rebase: fill `squash_onto' in get_replay_opts()
 + sequencer: move the code writing total_nr on the disk to a new function
 + sequencer: update `done_nr' when skipping commands in a todo list
 + sequencer: update `total_nr' when adding an item to a todo list

 Reduce unnecessary reading of state variables back from the disk
 during sequener operation.

 Kick back to 'pu' before squashing the leakfix.


* mt/threaded-grep-in-object-store (2019-10-02) 11 commits
 - grep: move driver pre-load out of critical section
 - grep: re-enable threads in non-worktree case
 - grep: protect packed_git [re-]initialization
 - grep: allow submodule functions to run in parallel
 - submodule-config: add skip_if_read option to repo_read_gitmodules()
 - grep: replace grep_read_mutex by internal obj read lock
 - object-store: allow threaded access to object reading
 - replace-object: make replace operations thread-safe
 - grep: fix racy calls in grep_objects()
 - grep: fix race conditions at grep_submodule()
 - grep: fix race conditions on userdiff calls

 Traditionally, we avoided threaded grep while searching in objects
 (as opposed to files in the working tree) as accesses to the object
 layer is not thread-safe.  This limitation is getting lifted.

 What's the current status of this one?


* jk/packfile-reuse-cleanup (2019-10-23) 9 commits
 - pack-objects: improve partial packfile reuse
 - builtin/pack-objects: introduce obj_is_packed()
 - pack-objects: introduce pack.allowPackReuse
 - csum-file: introduce hashfile_total()
 - pack-bitmap: introduce bitmap_walk_contains()
 - pack-bitmap: don't rely on bitmap_git->reuse_objects
 - ewah/bitmap: introduce bitmap_word_alloc()
 + packfile: expose get_delta_base()
 + builtin/pack-objects: report reused packfile objects

 The way "git pack-objects" reuses objects stored in existing pack
 to generate its result has been improved.

 Will merge to 'next'.

^ permalink raw reply	[relevance 1%]

* Re: What's cooking in git.git (Nov 2019, #01; Mon, 4)
  2019-11-04  5:37  1% What's cooking in git.git (Nov 2019, #01; Mon, 4) Junio C Hamano
@ 2019-11-05  1:20  0% ` Elijah Newren
  0 siblings, 0 replies; 25+ results
From: Elijah Newren @ 2019-11-05  1:20 UTC (permalink / raw)
  To: Junio C Hamano; +Cc: Git Mailing List

On Sun, Nov 3, 2019 at 9:48 PM Junio C Hamano <gitster@pobox.com> wrote:
>
> Here are the topics that have been cooking.  Commits prefixed with
> '-' are only in 'pu' (proposed updates) while commits prefixed with
> '+' are in 'next'.  The ones marked with '.' do not appear in any of
> the integration branches, but I am still holding onto them.
>
> Git 2.24 has been tagged.  Hopefully there needs no immediate brown
> paper bag fixes needed for the 'master' branch. The next cycle will
> start perhaps early next week by first rewinding the 'next' branch,
> after the dust settles. Topics marked as "will cook in next" can be
> given a fresh start by ejecting them from 'next' and queueing a new
> version (please just ask).

Please go ahead and eject en/doc-typofix from next; I'll send a
re-roll with a lot more typofixes.  :-)

^ permalink raw reply	[relevance 0%]

* [RFC PATCH v2 0/2] rebase -i: extend rebase.missingCommitsCheck to `--edit-todo'
  @ 2019-11-04  9:54  3% ` Alban Gruin
  0 siblings, 0 replies; 25+ results
From: Alban Gruin @ 2019-11-04  9:54 UTC (permalink / raw)
  To: git; +Cc: Johannes Schindelin, Phillip Wood, Alban Gruin

To prevent mistakes when editing a branch, rebase features a knob,
rebase.missingCommitsCheck, to warn the user if a commit was dropped.
Unfortunately, this check is only effective for the initial edit, which
means that if you edit the todo list at a later point of the rebase and
dropped a commit, no warnings or errors would be issued.

This adds the ability to check if commits were dropped when editing the
todo list with `--edit-todo'.

The first patch adds new tests demonstrating that the todo list is not
checked with `--edit-todo'.  The second patch implements the check.

This series is pretty much a revamp of the first version.  Some patches
from the original series were rerolled separately and live now in
ag/sequencer-todo-updates.  This version is pretty much brand new, as
you can see in the range diff below.

Changes since v1 are about what the new todo list is compared to, and
when.  The original series compared the todo list against the original
edit, so if a commit was added then deleted, it would go unnoticed.
Now, it is compared against the previous version to avoid that.  This is
highlighted in the new tests.  The original series checked the todo list
after `--edit-todo', but also before continuing a rebase or after having
executed a command.  Now, it only checks it after `--edit-todo', as
suggested by Phillip Wood.

This is based on master (da72936f54, "Git 2.24").

The tip of this series is tagged as "edit-todo-drop-rfc-v2" at
https://github.com/agrn/git.

Alban Gruin (2):
  t3404: demonstrate that --edit-todo does not check for dropped commits
  rebase-interactive: warn if commit is dropped with --edit-todo

 rebase-interactive.c          |  7 ++--
 sequencer.c                   |  5 +--
 t/t3404-rebase-interactive.sh | 75 +++++++++++++++++++++++++++++++++++
 3 files changed, 79 insertions(+), 8 deletions(-)

Diff-intervalle contre v1 :
 1:  b35f920318 !  1:  6974b6c8f2 t3404: demonstrate that --edit-todo does not check for dropped commits
    @@ Commit message
     
         When set to "warn" or "error", `rebase.missingCommitCheck' would make
         rebase -i warn if the user removed commits from the todo list to prevent
    -    mistakes.  Unfortunately, rebase --edit-todo and rebase --continue don't
    -    take it into account.
    +    mistakes.  Unfortunately, rebase --edit-todo don't take it into account.
     
         This adds three tests to t3404 to demonstrate this.  The first one is
         not broken, as when `rebase.missingCommitsCheck' is not set, nothing in
         particular must be done towards dropped commits.  The two others are
         broken, demonstrating the problem.
     
    +    The tests for `rebase.missingCommitsCheck = warn' and
    +    `rebase.missingCommitsCheck = error' have a similar structure.  First,
    +    we start a rebase with an incorrect command on the first line.  Then, we
    +    edit the todo list, removing the first and the last lines.  This
    +    demonstrates that `--edit-todo' notices dropped commits, but not when
    +    the command is incorrect.  Then, we restore the original todo list, and
    +    edit it to remove the last line.  This demonstrates that if we add a
    +    commit after the initial edit, then remove it, `--edit-todo' will notice
    +    that it has been dropped.  Then, the actual rebase takes place.
    +
         Signed-off-by: Alban Gruin <alban.gruin@gmail.com>
     
      ## t/t3404-rebase-interactive.sh ##
    @@ t/t3404-rebase-interactive.sh: test_expect_success 'rebase -i respects rebase.mi
     +	test_config rebase.missingCommitsCheck ignore &&
     +	rebase_setup_and_clean missing-commit &&
     +	set_fake_editor &&
    -+	test_must_fail env FAKE_LINES="1 2 bad 3 4" \
    -+		git rebase -i --root >/dev/null 2>stderr &&
    -+	FAKE_LINES="1 2 4" git rebase --edit-todo &&
    ++	FAKE_LINES="break 1 2 3 4 5" git rebase -i --root &&
    ++	FAKE_LINES="1 2 3 4" git rebase --edit-todo 2>actual &&
     +	git rebase --continue 2>actual &&
     +	test D = $(git cat-file commit HEAD | sed -ne \$p) &&
     +	test_i18ngrep \
    @@ t/t3404-rebase-interactive.sh: test_expect_success 'rebase -i respects rebase.mi
     +		actual
     +'
     +
    -+cat >expect <<EOF
    -+error: invalid line 5: badcmd $(git rev-list --pretty=oneline --abbrev-commit -1 master)
    -+Warning: some commits may have been dropped accidentally.
    -+Dropped commits (newer to older):
    -+ - $(git rev-list --pretty=oneline --abbrev-commit -1 master)
    -+To avoid this message, use "drop" to explicitly remove a commit.
    -+
    -+Use 'git config rebase.missingCommitsCheck' to change the level of warnings.
    -+The possible behaviours are: ignore, warn, error.
    -+
    -+EOF
    -+
    -+tail -n 8 <expect >expect.2
    -+
     +test_expect_failure 'rebase --edit-todo respects rebase.missingCommitsCheck = warn' '
    ++	cat >expect <<-EOF &&
    ++	error: invalid line 1: badcmd $(git rev-list --pretty=oneline --abbrev-commit -1 master~4)
    ++	Warning: some commits may have been dropped accidentally.
    ++	Dropped commits (newer to older):
    ++	 - $(git rev-list --pretty=oneline --abbrev-commit -1 master)
    ++	To avoid this message, use "drop" to explicitly remove a commit.
    ++	EOF
    ++	tail -n4 expect >expect.2 &&
     +	test_config rebase.missingCommitsCheck warn &&
     +	rebase_setup_and_clean missing-commit &&
     +	set_fake_editor &&
    -+	test_must_fail env FAKE_LINES="1 2 3 4 bad 5" \
    -+		git rebase -i --root >/dev/null 2>stderr &&
    -+	FAKE_LINES="1 2 3 4" git rebase --edit-todo 2>actual &&
    ++	test_must_fail env FAKE_LINES="bad 1 2 3 4 5" \
    ++		git rebase -i --root &&
    ++	cp .git/rebase-merge/git-rebase-todo.backup orig &&
    ++	FAKE_LINES="2 3 4" git rebase --edit-todo 2>actual.2 &&
    ++	head -n5 actual.2 >actual &&
     +	test_i18ncmp expect actual &&
    -+	git rebase --continue 2>actual.2 &&
    -+	head -n 8 <actual.2 >actual &&
    ++	cp orig .git/rebase-merge/git-rebase-todo &&
    ++	FAKE_LINES="1 2 3 4" git rebase --edit-todo 2>actual.2 &&
    ++	head -n4 actual.2 >actual &&
     +	test_i18ncmp expect.2 actual &&
    ++	git rebase --continue 2>actual &&
     +	test D = $(git cat-file commit HEAD | sed -ne \$p) &&
     +	test_i18ngrep \
     +		"Successfully rebased and updated refs/heads/missing-commit" \
    -+		actual.2
    ++		actual
     +'
     +
    -+cat >expect <<EOF
    -+error: invalid line 3: badcmd $(git rev-list --pretty=oneline --abbrev-commit -1 master~2)
    -+Warning: some commits may have been dropped accidentally.
    -+Dropped commits (newer to older):
    -+ - $(git rev-list --pretty=oneline --abbrev-commit -1 master)
    -+ - $(git rev-list --pretty=oneline --abbrev-commit -1 master~2)
    -+To avoid this message, use "drop" to explicitly remove a commit.
    -+
    -+Use 'git config rebase.missingCommitsCheck' to change the level of warnings.
    -+The possible behaviours are: ignore, warn, error.
    -+
    -+EOF
    -+
    -+tail -n 9 <expect >expect.2
    -+
     +test_expect_failure 'rebase --edit-todo respects rebase.missingCommitsCheck = error' '
    ++	cat >expect <<-EOF &&
    ++	error: invalid line 1: badcmd $(git rev-list --pretty=oneline --abbrev-commit -1 master~4)
    ++	Warning: some commits may have been dropped accidentally.
    ++	Dropped commits (newer to older):
    ++	 - $(git rev-list --pretty=oneline --abbrev-commit -1 master)
    ++	To avoid this message, use "drop" to explicitly remove a commit.
    ++	EOF
    ++	tail -n4 expect >expect.2 &&
     +	test_config rebase.missingCommitsCheck error &&
     +	rebase_setup_and_clean missing-commit &&
     +	set_fake_editor &&
    -+	test_must_fail env FAKE_LINES="1 2 bad 3 4" \
    -+		git rebase -i --root >/dev/null 2>stderr &&
    -+	test_must_fail env FAKE_LINES="1 2 4" \
    -+		git rebase --edit-todo 2>actual &&
    ++	test_must_fail env FAKE_LINES="bad 1 2 3 4 5" \
    ++		git rebase -i --root &&
    ++	cp .git/rebase-merge/git-rebase-todo.backup orig &&
    ++	test_must_fail env FAKE_LINES="2 3 4" \
    ++		git rebase --edit-todo 2>actual.2 &&
    ++	head -n5 actual.2 >actual &&
     +	test_i18ncmp expect actual &&
    -+	test_must_fail git rebase --continue 2>actual &&
    ++	cp orig .git/rebase-merge/git-rebase-todo &&
    ++	test_must_fail env FAKE_LINES="1 2 3 4" \
    ++		git rebase --edit-todo 2>actual.2 &&
    ++	head -n4 actual.2 >actual &&
     +	test_i18ncmp expect.2 actual &&
    -+	cp .git/rebase-merge/git-rebase-todo.backup \
    -+		.git/rebase-merge/git-rebase-todo &&
    -+	FAKE_LINES="1 2 drop 3 4 drop 5" \
    -+		git rebase --edit-todo &&
    ++	cp orig .git/rebase-merge/git-rebase-todo &&
    ++	FAKE_LINES="1 2 3 4 drop 5" git rebase --edit-todo &&
     +	git rebase --continue 2>actual &&
     +	test D = $(git cat-file commit HEAD | sed -ne \$p) &&
     +	test_i18ngrep \
 2:  7410a1bc4b <  -:  ---------- t3429: demonstrate that rebase exec does not check for dropped commits
 3:  f9ef6d5569 <  -:  ---------- sequencer: update `total_nr' when adding an item to a todo list
 4:  049a92dec0 <  -:  ---------- sequencer: update `done_nr' when skipping commands in a todo list
 5:  f7aae0c763 <  -:  ---------- sequencer: move the code writing total_nr on the disk to a new function
 6:  0e41c4c85e <  -:  ---------- sequencer: add a parameter to sequencer_continue() to accept a todo list
 7:  e6f5589f18 <  -:  ---------- rebase-interactive: todo_list_check() also uses the done list
 8:  69a562b0ab <  -:  ---------- rebase-interactive: warn if commit is dropped with --edit-todo
 9:  4656ab11ae <  -:  ---------- sequencer: have read_populate_todo() check for dropped commits
 -:  ---------- >  2:  a4a700ce8b rebase-interactive: warn if commit is dropped with --edit-todo
-- 
2.24.0.2.ga4a700ce8b


^ permalink raw reply	[relevance 3%]

* What's cooking in git.git (Nov 2019, #01; Mon, 4)
@ 2019-11-04  5:37  1% Junio C Hamano
  2019-11-05  1:20  0% ` Elijah Newren
  0 siblings, 1 reply; 25+ results
From: Junio C Hamano @ 2019-11-04  5:37 UTC (permalink / raw)
  To: git

Here are the topics that have been cooking.  Commits prefixed with
'-' are only in 'pu' (proposed updates) while commits prefixed with
'+' are in 'next'.  The ones marked with '.' do not appear in any of
the integration branches, but I am still holding onto them.

Git 2.24 has been tagged.  Hopefully there needs no immediate brown
paper bag fixes needed for the 'master' branch. The next cycle will
start perhaps early next week by first rewinding the 'next' branch,
after the dust settles. Topics marked as "will cook in next" can be
given a fresh start by ejecting them from 'next' and queueing a new
version (please just ask). Topics currently not in 'next' will then
start getting merged down after all that.

You can find the changes described here in the integration branches
of the repositories listed at

    http://git-blame.blogspot.com/p/git-public-repositories.html

--------------------------------------------------
[Graduated to "master"]

* bc/doc-use-docbook-5 (2019-11-02) 1 commit
  (merged to 'next' on 2019-11-02 at 68e379d0b0)
 + manpage-bold-literal.xsl: match for namespaced "d:literal" in template

 Finishing touches to the recent update to the build procedure for
 the documentation.


* ds/commit-graph-on-fetch (2019-10-25) 2 commits
  (merged to 'next' on 2019-10-30 at 3ca711f743)
 + commit-graph: fix writing first commit-graph during fetch
 + t5510-fetch.sh: demonstrate fetch.writeCommitGraph bug

 Regression fix.


* jt/delay-fetch-if-missing (2019-10-24) 1 commit
  (merged to 'next' on 2019-10-30 at 6c884f3267)
 + fetch: delay fetch_if_missing=0 until after config

 Work-around a lazy fetch glitch.

--------------------------------------------------
[New Topics]

* es/myfirstcontrib-updates (2019-11-02) 3 commits
 - myfirstcontrib: hint to find gitgitgadget allower
 - myfirstcontrib: add dependency installation step
 - myfirstcontrib: add 'psuh' to command-list.txt

 Doc updates.

 Will merge to 'next'.


* rt/fetch-message-fix (2019-11-02) 1 commit
 - fetch.c: fix typo in a warning message

 A small message update.

 Will merge to 'next'.

--------------------------------------------------
[Stalled]

* vn/reset-deleted-ita (2019-07-26) 1 commit
 - reset: unstage empty deleted ita files

 "git reset HEAD [<pathspec>]" did not reset an empty file that was
 added with the intent-to-add bit.

 Expecting a reroll.


* jn/unknown-index-extensions (2018-11-21) 2 commits
 - index: offer advice for unknown index extensions
 - index: do not warn about unrecognized extensions

 A bit too alarming warning given when unknown index extensions
 exist is getting revamped.

 Expecting a reroll.


* jc/format-patch-delay-message-id (2019-04-05) 1 commit
 - format-patch: move message-id and related headers to the end

 The location "git format-patch --thread" adds the Message-Id:
 header in the series of header fields has been moved down, which
 may help working around a suspected bug in GMail MSA, reported at
 <CAHk-=whP1stFZNAaJiMi5eZ9rj0MRt20Y_yHVczZPH+O01d+sA@mail.gmail.com>

 Waiting for feedback to see if it truly helps.
 Needs tests.


* js/protocol-advertise-multi (2018-12-28) 1 commit
 - protocol: advertise multiple supported versions

 The transport layer has been updated so that the protocol version
 used can be negotiated between the parties, by the initiator
 listing the protocol versions it is willing to talk, and the other
 side choosing from one of them.

 Expecting a reroll.
 cf. <CANq=j3u-zdb_FvNJGPCmygNMScseav63GhVvBX3NcVS4f7TejA@mail.gmail.com>


* mk/use-size-t-in-zlib (2018-10-15) 1 commit
 - zlib.c: use size_t for size

 The wrapper to call into zlib followed our long tradition to use
 "unsigned long" for sizes of regions in memory, which have been
 updated to use "size_t".

--------------------------------------------------
[Cooking]

* ra/rebase-i-more-options (2019-11-02) 6 commits
 - rebase: add --reset-author-date
 - rebase -i: support --ignore-date
 - sequencer: rename amend_author to author_to_rename
 - rebase -i: support --committer-date-is-author-date
 - sequencer: allow callers of read_author_script() to ignore fields
 - rebase -i: add --ignore-whitespace flag

 "git rebase -i" learned a few options that are known by "git
 rebase" proper.


* en/doc-typofix (2019-10-25) 1 commit
  (merged to 'next' on 2019-10-30 at 8405cac984)
 + Documentation: fix a bunch of typos, both old and new

 Docfix.

 Will cook in 'next'.


* hw/remove-api-docs-placeholder (2019-10-25) 1 commit
  (merged to 'next' on 2019-10-30 at c99fe16682)
 + documentation: remove empty doc files

 Docfix.

 Will cook in 'next'.


* js/update-index-ignore-removal-for-skip-worktree (2019-11-02) 2 commits
  (merged to 'next' on 2019-11-02 at 57f7fb885f)
 + stash: handle staged changes in skip-worktree files correctly
 + update-index: optionally leave skip-worktree entries alone

 "git stash save" in a working tree that is sparsely checked out
 mistakenly removed paths that are outside the area of interest.

 Will cook in 'next'.


* pb/pretty-email-without-domain-part (2019-10-30) 3 commits
  (merged to 'next' on 2019-10-30 at 06f719efa5)
 + pretty: add "%aL" etc. to show local-part of email addresses
 + t4203: use test-lib.sh definitions
 + t6006: use test-lib.sh definitions

 The custom format for "git log --format=<format>" learned the l/L
 placeholder that is similar to e/E that fills in the e-mail
 address, but only the local part on the left side of '@'.

 Will cook in 'next'.


* sg/commit-graph-usage-fix (2019-10-28) 1 commit
  (merged to 'next' on 2019-10-28 at 13d01506dd)
 + builtin/commit-graph.c: remove subcommand-less usage string

 Message fix.

 Will merge to 'next'.


* dl/doc-diff-no-index-implies-exit-code (2019-11-02) 1 commit
 - git-diff.txt: document return code of `--no-index`

 Doc update.

 Will merge to 'next'.


* dl/submodule-set-url (2019-10-30) 1 commit
 - submodule: teach set-url subcommand

 "git submodule" learned a subcommand "set-url".


* js/vreportf-wo-buffering (2019-11-02) 1 commit
 - vreportf(): avoid relying on stdio buffering

 Messages from die() etc. can be mixed up from multiple processes
 without even line buffering on Windows, which has been worked
 around.

 Will merge to 'next'.


* ma/bisect-doc-sample-update (2019-10-29) 1 commit
 - Documentation/git-bisect.txt: add --no-ff to merge command

 "git merge --no-commit" needs "--no-ff" if you do not want to move
 HEAD, which has been corrected in the manual page for "git bisect".

 Will merge to 'next'.


* mr/clone-dir-exists-to-path-exists (2019-10-29) 1 commit
 - clone: rename static function `dir_exists()`.

 Code cleanup.

 Will merge to 'next'.


* pb/help-list-gitsubmodules-among-guides (2019-10-29) 1 commit
 - help: add gitsubmodules to the list of guides

 Help update.

 Will merge to 'next'.


* pb/no-recursive-reset-hard-in-worktree-add (2019-10-30) 1 commit
 - worktree: teach "add" to ignore submodule.recurse config

 "git worktree add" internally calls "reset --hard" that should not
 descend into submodules, even when submodule.recurse configuration
 is set, but it was affected.  This has been correct.

 Will merge to 'next'.


* sg/blame-indent-heuristics-is-now-the-default (2019-10-29) 1 commit
 - builtin/blame.c: remove '--indent-heuristic' from usage string

 Message update.

 Will merge to 'next'.


* hv/bitshift-constants-in-blame (2019-10-21) 1 commit
  (merged to 'next' on 2019-10-24 at bc84aae4d4)
 + builtin/blame.c: constants into bit shift format

 Move the definition of a set of bitmask constants from 0ctal
 literal to (1U<<count) notation.

 Will cook in 'next'.


* jk/cleanup-object-parsing-and-fsck (2019-10-28) 23 commits
  (merged to 'next' on 2019-10-30 at 6e8b84557e)
 + fsck: accept an oid instead of a "struct tree" for fsck_tree()
 + fsck: accept an oid instead of a "struct commit" for fsck_commit()
 + fsck: accept an oid instead of a "struct tag" for fsck_tag()
 + fsck: rename vague "oid" local variables
 + fsck: don't require an object struct in verify_headers()
 + fsck: don't require an object struct for fsck_ident()
 + fsck: drop blob struct from fsck_finish()
 + fsck: accept an oid instead of a "struct blob" for fsck_blob()
 + fsck: don't require an object struct for report()
 + fsck: only require an oid for skiplist functions
 + fsck: only provide oid/type in fsck_error callback
 + fsck: don't require object structs for display functions
 + fsck: use oids rather than objects for object_name API
 + fsck_describe_object(): build on our get_object_name() primitive
 + fsck: unify object-name code
 + fsck: require an actual buffer for non-blobs
 + fsck: stop checking tag->tagged
 + fsck: stop checking commit->parent counts
 + fsck: stop checking commit->tree value
 + commit, tag: don't set parsed bit for parse failures
 + parse_tag_buffer(): treat NULL tag pointer as parse error
 + parse_commit_buffer(): treat lookup_tree() failure as parse error
 + parse_commit_buffer(): treat lookup_commit() failure as parse error

 Crufty code and logic accumulated over time around the object
 parsing and low-level object access used in "git fsck" have been
 cleaned up.

 Will cook in 'next'.


* js/rebase-deprecate-preserve-merges (2019-10-21) 1 commit
  (merged to 'next' on 2019-10-24 at 82fa49bbf2)
 + rebase: hide --preserve-merges option

 "git rebase --preserve-merges" has been marked as deprecated; this
 release stops advertising it in the "git rebase -h" output.

 Will cook in 'next'.


* po/bundle-doc-clonable (2019-10-21) 1 commit
 - Doc: Bundle file usage

 Doc update.

 Expecting a reroll.


* jc/am-show-current-patch-docfix (2019-10-23) 1 commit
  (merged to 'next' on 2019-10-24 at 31fa6081f2)
 + doc: am --show-current-patch gives an entire e-mail message

 Doc update.

 Will cook in 'next'.


* js/advise-rebase-skip (2019-10-23) 3 commits
  (merged to 'next' on 2019-10-24 at e2edd2df2d)
 + commit: give correct advice for empty commit during a rebase
 + sequencer: export the function to get the path of `.git/rebase-merge/`
 + cherry-pick: add test for `--skip` advice in `git commit`

 The logic used in "git commit" to give hints and errors depending
 on what operation was in progress learned to distinguish rebase and
 cherry-pick better.

 Will cook in 'next'.
 cf. <9d550cd9-08a2-eee5-7d7f-63678285accc@gmail.com>


* sg/dir-trie-fixes (2019-10-23) 5 commits
  (merged to 'next' on 2019-10-24 at 06d60a7fb0)
 + path.c: don't call the match function without value in trie_find()
 + path.c: clarify two field names in 'struct common_dir'
 + path.c: mark 'logs/HEAD' in 'common_list' as file
 + path.c: clarify trie_find()'s in-code comment
 + Documentation: mention more worktree-specific exceptions

 Code clean-up and a bugfix in the logic used to tell worktree local
 and repository global refs apart.

 Will cook in 'next'.


* wb/midx-progress (2019-10-23) 6 commits
  (merged to 'next' on 2019-10-24 at 95c3e3ab3a)
 + multi-pack-index: add [--[no-]progress] option.
 + midx: honor the MIDX_PROGRESS flag in midx_repack
 + midx: honor the MIDX_PROGRESS flag in verify_midx_file
 + midx: add progress to expire_midx_packs
 + midx: add progress to write_midx_file
 + midx: add MIDX_PROGRESS flag

 The code to generate multi-pack index learned to show (or not to
 show) progress indicators.

 Will cook in 'next'.


* dl/apply-3way-diff3 (2019-10-24) 5 commits
  (merged to 'next' on 2019-10-24 at 84e27d28b6)
 + apply: respect merge.conflictStyle in --3way
 + t4108: demonstrate bug in apply
 + t4108: use `test_config` instead of `git config`
 + t4108: remove git command upstream of pipe
 + t4108: replace create_file with test_write_lines

 "git apply --3way" learned to honor merge.conflictStyle
 configuration variable, like merges would.

 Will cook in 'next'.


* hw/config-doc-in-header (2019-10-24) 1 commit
 - config: move documentation to config.h

 Follow recent push to move API docs from Documentation/ to header
 files and update config.h

 Will merge to 'next'.


* dd/notes-copy-default-dst-to-head (2019-10-18) 2 commits
  (merged to 'next' on 2019-10-18 at 2588a175ec)
 + notes: fix minimum number of parameters to "copy" subcommand
 + t3301: test diagnose messages for too few/many paramters

 "git notes copy $original" ought to copy the notes attached to the
 original object to HEAD, but a mistaken tightening to command line
 parameter validation made earlier disabled that feature by mistake.

 Will cook in 'next'.


* jc/log-graph-simplify (2019-10-16) 13 commits
  (merged to 'next' on 2019-10-24 at 190b88709e)
 + graph: fix coloring of octopus dashes
 + graph: flatten edges that fuse with their right neighbor
 + graph: smooth appearance of collapsing edges on commit lines
 + graph: rename `new_mapping` to `old_mapping`
 + graph: commit and post-merge lines for left-skewed merges
 + graph: tidy up display of left-skewed merges
 + graph: example of graph output that can be simplified
 + graph: extract logic for moving to GRAPH_PRE_COMMIT state
 + graph: remove `mapping_idx` and `graph_update_width()`
 + graph: reduce duplication in `graph_insert_into_new_columns()`
 + graph: reuse `find_new_column_by_commit()`
 + graph: handle line padding in `graph_next_line()`
 + graph: automatically track display width of graph lines

 The implementation of "git log --graph" got refactored and then its
 output got simplified.

 Will cook in 'next'.


* js/git-path-head-dot-lock-fix (2019-10-29) 2 commits
 - git_path(): handle `.lock` files correctly
 - t1400: wrap setup code in test case

 "git rev-parse --git-path HEAD.lock" did not give the right path
 when run in a secondary worktree.

 Will merge to 'next'.


* pw/post-commit-from-sequencer (2019-10-16) 6 commits
  (merged to 'next' on 2019-10-18 at 15b41a097d)
 + sequencer: run post-commit hook
 + move run_commit_hook() to libgit and use it there
 + sequencer.h fix placement of #endif
 + t3404: remove uneeded calls to set_fake_editor
 + t3404: set $EDITOR in subshell
 + t3404: remove unnecessary subshell

 "rebase -i" ceased to run post-commit hook by mistake in an earlier
 update, which has been corrected.

 Will cook in 'next'.


* ds/sparse-cone (2019-10-23) 17 commits
 - sparse-checkout: cone mode should not interact with .gitignore
 - sparse-checkout: write using lockfile
 - sparse-checkout: update working directory in-process
 - sparse-checkout: sanitize for nested folders
 - read-tree: show progress by default
 - unpack-trees: add progress to clear_ce_flags()
 - unpack-trees: hash less in cone mode
 - sparse-checkout: init and set in cone mode
 - sparse-checkout: use hashmaps for cone patterns
 - sparse-checkout: add 'cone' mode
 - trace2: add region in clear_ce_flags
 - sparse-checkout: create 'disable' subcommand
 - sparse-checkout: add '--stdin' option to set subcommand
 - sparse-checkout: 'set' subcommand
 - clone: add --sparse mode
 - sparse-checkout: create 'init' subcommand
 - sparse-checkout: create builtin with 'list' subcommand

 Management of sparsely checked-out working tree has gained a
 dedicated "sparse-checkout" command.

 Will merge to 'next'.


* dl/format-patch-cover-from-desc (2019-10-16) 3 commits
  (merged to 'next' on 2019-10-18 at 40e992b6f5)
 + format-patch: teach --cover-from-description option
 + format-patch: use enum variables
 + format-patch: replace erroneous and condition

 The branch description ("git branch --edit-description") has been
 used to fill the body of the cover letters by the format-patch
 command; this has been enhanced so that the subject can also be
 filled.

 Will cook in 'next'.
 No need for rush, as this is a new feature.


* en/merge-recursive-directory-rename-fixes (2019-10-23) 3 commits
  (merged to 'next' on 2019-10-24 at 82e64029a8)
 + t604[236]: do not run setup in separate tests
 + merge-recursive: fix merging a subdirectory into the root directory
 + merge-recursive: clean up get_renamed_dir_portion()

 When all files from some subdirectory were renamed to the root
 directory, the directory rename heuristics would fail to detect that
 as a rename/merge of the subdirectory to the root directory, which has
 been corrected.

 Will cook in 'next'.


* jt/fetch-pack-record-refs-in-the-dot-promisor (2019-10-16) 1 commit
  (merged to 'next' on 2019-10-18 at 4ead52e59a)
 + fetch-pack: write fetched refs to .promisor

 Debugging support for lazy cloning has been a bit improved.

 Will cook in 'next'.
 No need for rush, as this is a new feature.


* es/walken-tutorial (2019-10-12) 1 commit
  (merged to 'next' on 2019-10-18 at 59160e59e9)
 + documentation: add tutorial for object walking

 A tutorial on object enumeration.

 Will cook in 'next'.


* bc/hash-independent-tests-part-6 (2019-10-28) 15 commits
  (merged to 'next' on 2019-10-30 at 70037a3839)
 + t4048: abstract away SHA-1-specific constants
 + t4045: make hash-size independent
 + t4044: update test to work with SHA-256
 + t4039: abstract away SHA-1-specific constants
 + t4038: abstract away SHA-1 specific constants
 + t4034: abstract away SHA-1-specific constants
 + t4027: make hash-size independent
 + t4015: abstract away SHA-1-specific constants
 + t4011: abstract away SHA-1-specific constants
 + t4010: abstract away SHA-1-specific constants
 + t3429: remove SHA1 annotation
 + t1305: avoid comparing extensions
 + rev-parse: add a --show-object-format option
 + t/oid-info: add empty tree and empty blob values
 + t/oid-info: allow looking up hash algorithm name

 Test updates to prepare for SHA-2 transition continues.

 Will cook in 'next'.


* ag/sequencer-todo-updates (2019-10-28) 6 commits
  (merged to 'next' on 2019-10-28 at 85f694d9d3)
 + SQUASH??? tentative leakfix
  (merged to 'next' on 2019-10-18 at 8dac803e49)
 + sequencer: directly call pick_commits() from complete_action()
 + rebase: fill `squash_onto' in get_replay_opts()
 + sequencer: move the code writing total_nr on the disk to a new function
 + sequencer: update `done_nr' when skipping commands in a todo list
 + sequencer: update `total_nr' when adding an item to a todo list

 Reduce unnecessary reading of state variables back from the disk
 during sequener operation.

 Will cook in 'next'.


* mt/threaded-grep-in-object-store (2019-10-02) 11 commits
 - grep: move driver pre-load out of critical section
 - grep: re-enable threads in non-worktree case
 - grep: protect packed_git [re-]initialization
 - grep: allow submodule functions to run in parallel
 - submodule-config: add skip_if_read option to repo_read_gitmodules()
 - grep: replace grep_read_mutex by internal obj read lock
 - object-store: allow threaded access to object reading
 - replace-object: make replace operations thread-safe
 - grep: fix racy calls in grep_objects()
 - grep: fix race conditions at grep_submodule()
 - grep: fix race conditions on userdiff calls

 Traditionally, we avoided threaded grep while searching in objects
 (as opposed to files in the working tree) as accesses to the object
 layer is not thread-safe.  This limitation is getting lifted.


* jk/packfile-reuse-cleanup (2019-10-23) 9 commits
 - pack-objects: improve partial packfile reuse
 - builtin/pack-objects: introduce obj_is_packed()
 - pack-objects: introduce pack.allowPackReuse
 - csum-file: introduce hashfile_total()
 - pack-bitmap: introduce bitmap_walk_contains()
 - pack-bitmap: don't rely on bitmap_git->reuse_objects
 - ewah/bitmap: introduce bitmap_word_alloc()
 + packfile: expose get_delta_base()
 + builtin/pack-objects: report reused packfile objects

 The way "git pack-objects" reuses objects stored in existing pack
 to generate its result has been improved.


* js/builtin-add-i (2019-08-30) 11 commits
 . built-in add -i: implement the `help` command
 . built-in add -i: use color in the main loop
 . built-in add -i: support `?` (prompt help)
 . built-in add -i: show unique prefixes of the commands
 . Add a function to determine unique prefixes for a list of strings
 . built-in add -i: implement the main loop
 . built-in add -i: color the header in the `status` command
 . built-in add -i: refresh the index before running `status`
 . built-in add -i: implement the `status` command
 . diff: export diffstat interface
 . Start to implement a built-in version of `git add --interactive`

 The beginning of rewriting "git add -i" in C.

 Expecting a reroll on top of a base with the tg/stash-refresh-index
 topic that defines an updated repo_refresh_and_write_index() helper.
 cf. <20190911175201.GA11444@cat>

^ permalink raw reply	[relevance 1%]

* [ANNOUNCE] Git v2.24.0
@ 2019-11-04  5:36  3% Junio C Hamano
  0 siblings, 0 replies; 25+ results
From: Junio C Hamano @ 2019-11-04  5:36 UTC (permalink / raw)
  To: git; +Cc: Linux Kernel, git-packagers

The latest feature release Git v2.24.0 is now available at the
usual places.  It is comprised of 544 non-merge commits since
v2.23.0, contributed by 78 people, 21 of which are new faces.

The tarballs are found at:

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

The following public repositories all have a copy of the 'v2.24.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://github.com/gitster/git

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

  Alexandr Miloslavskiy, Ali Utku Selen, Ben Milman, Cameron
  Steffen, CB Bailey, Christopher Diaz Riveros, Garima Singh,
  Hervé Beraud, Jakob Jarmar, kdnakt, Kunal Tyagi, Maxim
  Belsky, Max Rothman, Norman Rasmussen, Paul Wise, Pedro Sousa,
  Philip.McGraw, Pratyush Yadav, Thomas Klaeger, William Baker,
  and YanKe.

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

  Adam Roben, Ævar Arnfjörð Bjarmason, Alessandro Menti,
  Alexander Shopov, Alex Henrie, Andrey Mazo, Beat Bolli, Ben
  Wijen, Bert Wesarg, Birger Skogeng Pedersen, brian m. carlson,
  Carlo Marcelo Arenas Belón, Christian Couder, Clément Chigot,
  Corentin BOMPARD, David Turner, Denton Liu, Derrick Stolee,
  Elijah Newren, Emily Shaffer, Eric Wong, Gabriele Mazzotta,
  Jean-Noël Avila, Jeff Hostetler, Jeff King, Jiang Xin, Johannes
  Schindelin, Johannes Sixt, Jonathan Tan, Jon Simons, Jordi Mas,
  Josh Steadmon, Junio C Hamano, Martin Ågren, Masaya Suzuki,
  Matheus Tavares, Matthew DeVore, Matthias Rüster, Michael
  J Gruber, Mike Hommey, Mischa POSLAWSKY, Paul Mackerras,
  Peter Krefting, Phillip Wood, René Scharfe, Robert Luberda,
  Stephen Boyd, Stephen P. Smith, Sun Chao, SZEDER Gábor,
  Tanay Abhra, Taylor Blau, Thomas Gummerer, Tobias Klauser,
  Torsten Bögershausen, Trần Ngọc Quân, and Varun Naik.

----------------------------------------------------------------

Git 2.24 Release Notes
======================

Updates since v2.23
-------------------

Backward compatibility note

 * "filter-branch" is showing its age and alternatives are available.
   From this release, we started to discourage its use and hint
   people about filter-repo.

UI, Workflows & Features

 * We now have an active interim maintainer for the Git-Gui part of
   the system.  Praise and thank Pratyush Yadav for volunteering.

 * The command line parser learned "--end-of-options" notation; the
   standard convention for scripters to have hardcoded set of options
   first on the command line, and force the command to treat end-user
   input as non-options, has been to use "--" as the delimiter, but
   that would not work for commands that use "--" as a delimiter
   between revs and pathspec.

 * A mechanism to affect the default setting for a (related) group of
   configuration variables is introduced.

 * "git fetch" learned "--set-upstream" option to help those who first
   clone from their private fork they intend to push to, add the true
   upstream via "git remote add" and then "git fetch" from it.

 * Device-tree files learned their own userdiff patterns.
   (merge 3c81760bc6 sb/userdiff-dts later to maint).

 * "git rebase --rebase-merges" learned to drive different merge
   strategies and pass strategy specific options to them.

 * A new "pre-merge-commit" hook has been introduced.

 * Command line completion updates for "git -c var.name=val" have been
   added.

 * The lazy clone machinery has been taught that there can be more
   than one promisor remote and consult them in order when downloading
   missing objects on demand.

 * The list-objects-filter API (used to create a sparse/lazy clone)
   learned to take a combined filter specification.

 * The documentation and tests for "git format-patch" have been
   cleaned up.

 * On Windows, the root level of UNC share is now allowed to be used
   just like any other directory.

 * The command line completion support (in contrib/) learned about the
   "--skip" option of "git revert" and "git cherry-pick".

 * "git rebase --keep-base <upstream>" tries to find the original base
   of the topic being rebased and rebase on top of that same base,
   which is useful when running the "git rebase -i" (and its limited
   variant "git rebase -x").

   The command also has learned to fast-forward in more cases where it
   can instead of replaying to recreate identical commits.

 * A configuration variable tells "git fetch" to write the commit
   graph after finishing.

 * "git add -i" has been taught to show the total number of hunks and
   the hunks that has been processed so far when showing prompts.

 * "git fetch --jobs=<n>" allowed <n> parallel jobs when fetching
   submodules, but this did not apply to "git fetch --multiple" that
   fetches from multiple remote repositories.  It now does.

 * The installation instruction for zsh completion script (in
   contrib/) has been a bit improved.


Performance, Internal Implementation, Development Support etc.

 * The code to write commit-graph over given commit object names has
   been made a bit more robust.

 * The first line of verbose output from each test piece now carries
   the test name and number to help scanning with eyeballs.

 * Further clean-up of the initialization code.

 * xmalloc() used to have a mechanism to ditch memory and address
   space resources as the last resort upon seeing an allocation
   failure from the underlying malloc(), which made the code complex
   and thread-unsafe with dubious benefit, as major memory resource
   users already do limit their uses with various other mechanisms.
   It has been simplified away.

 * Unnecessary full-tree diff in "git log -L" machinery has been
   optimized away.

 * The http transport lacked some optimization the native transports
   learned to avoid unnecessary ref advertisement, which has been
   corrected.

 * Preparation for SHA-256 upgrade continues in the test department.
   (merge 0c37c41d13 bc/hash-independent-tests-part-5 later to maint).

 * The memory ownership model of the "git fast-import" got
   straightened out.

 * Output from trace2 subsystem is formatted more prettily now.

 * The internal code originally invented for ".gitignore" processing
   got reshuffled and renamed to make it less tied to "excluding" and
   stress more that it is about "matching", as it has been reused for
   things like sparse checkout specification that want to check if a
   path is "included".

 * "git stash" learned to write refreshed index back to disk.

 * Coccinelle checks are done on more source files than before now.

 * The cache-tree code has been taught to be less aggressive in
   attempting to see if a tree object it computed already exists in
   the repository.

 * The code to parse and use the commit-graph file has been made more
   robust against corrupted input.

 * The hg-to-git script (in contrib/) has been updated to work with
   Python 3.

 * Update the way build artifacts in t/helper/ directory are ignored.

 * Preparation for SHA-256 upgrade continues.

 * "git log --graph" for an octopus merge is sometimes colored
   incorrectly, which is demonstrated and documented but not yet
   fixed.

 * The trace2 output, when sending them to files in a designated
   directory, can populate the directory with too many files; a
   mechanism is introduced to set the maximum number of files and
   discard further logs when the maximum is reached.

 * We have adopted a Code-of-conduct document.
   (merge 3f9ef874a7 jk/coc later to maint).


Fixes since v2.23
-----------------

 * "git grep --recurse-submodules" that looks at the working tree
   files looked at the contents in the index in submodules, instead of
   files in the working tree.
   (merge 6a289d45c0 mt/grep-submodules-working-tree later to maint).

 * Codepaths to walk tree objects have been audited for integer
   overflows and hardened.
   (merge 5aa02f9868 jk/tree-walk-overflow later to maint).

 * "git pack-refs" can lose refs that are created while running, which
   is getting corrected.
   (merge a613d4f817 sc/pack-refs-deletion-racefix later to maint).

 * "git checkout" and "git restore" to re-populate the index from a
   tree-ish (typically HEAD) did not work correctly for a path that
   was removed and then added again with the intent-to-add bit, when
   the corresponding working tree file was empty.  This has been
   corrected.

 * Compilation fix.
   (merge 70597e8386 rs/nedalloc-fixlets later to maint).

 * "git gui" learned to call the clean-up procedure before exiting.
   (merge 0d88f3d2c5 py/git-gui-do-quit later to maint).

 * We promoted the "indent heuristics" that decides where to split
   diff hunks from experimental to the default a few years ago, but
   some stale documentation still marked it as experimental, which has
   been corrected.
   (merge 64e5e1fba1 sg/diff-indent-heuristic-non-experimental later to maint).

 * Fix a mismerge that happened in 2.22 timeframe.
   (merge acb7da05ac en/checkout-mismerge-fix later to maint).

 * "git archive" recorded incorrect length in extended pax header in
   some corner cases, which has been corrected.
   (merge 71d41ff651 rs/pax-extended-header-length-fix later to maint).

 * On-demand object fetching in lazy clone incorrectly tried to fetch
   commits from submodule projects, while still working in the
   superproject, which has been corrected.
   (merge a63694f523 jt/diff-lazy-fetch-submodule-fix later to maint).

 * Prepare get_short_oid() codepath to be thread-safe.
   (merge 7cfcb16b0e rs/sort-oid-array-thread-safe later to maint).

 * "for-each-ref" and friends that show refs did not protect themselves
   against ancient tags that did not record tagger names when asked to
   show "%(taggername)", which have been corrected.
   (merge 8b3f33ef11 mp/for-each-ref-missing-name-or-email later to maint).

 * The "git am" based backend of "git rebase" ignored the result of
   updating ".gitattributes" done in one step when replaying
   subsequent steps.
   (merge 2c65d90f75 bc/reread-attributes-during-rebase later to maint).

 * Tell cURL library to use the same malloc() implementation, with the
   xmalloc() wrapper, as the rest of the system, for consistency.
   (merge 93b980e58f cb/curl-use-xmalloc later to maint).

 * Build fix to adjust .gitignore to unignore a path that we started to track.
   (merge aac6ff7b5b js/visual-studio later to maint).

 * A few implementation fixes in the notes API.
   (merge 60fe477a0b mh/notes-duplicate-entries later to maint).

 * Fix an earlier regression to "git push --all" which should have
   been forbidden when the target remote repository is set to be a
   mirror.
   (merge 8e4c8af058 tg/push-all-in-mirror-forbidden later to maint).

 * Fix an earlier regression in the test suite, which mistakenly
   stopped running HTTPD tests.
   (merge 3960290675 sg/git-test-boolean later to maint).

 * "git rebase --autostash <upstream> <branch>", when <branch> is
   different from the current branch, incorrectly moved the tip of the
   current branch, which has been corrected.
   (merge bf1e28e0ad bw/rebase-autostash-keep-current-branch later to maint).

 * Update support for Asciidoctor documentation toolchain.
   (merge 83b0b8953e ma/asciidoctor-refmiscinfo later to maint).

 * Start using DocBook 5 (instead of DocBook 4.5) as Asciidoctor 2.0
   no longer works with the older one.
   (merge f6461b82b9 bc/doc-use-docbook-5 later to maint).

 * The markup used in user-manual has been updated to work better with
   asciidoctor.
   (merge c4d2f6143a ma/user-manual-markup-update later to maint).

 * Make sure the grep machinery does not abort when seeing a payload
   that is not UTF-8 even when JIT is not in use with PCRE1.
   (merge ad7c543e3b cb/skip-utf8-check-with-pcre1 later to maint).

 * The name of the blob object that stores the filter specification
   for sparse cloning/fetching was interpreted in a wrong place in the
   code, causing Git to abort.

 * "git log --decorate-refs-exclude=<pattern>" was incorrectly
   overruled when the "--simplify-by-decoration" option is used, which
   has been corrected.
   (merge 0cc7380d88 rs/simplify-by-deco-with-deco-refs-exclude later to maint).

 * The "upload-pack" (the counterpart of "git fetch") needs to disable
   commit-graph when responding to a shallow clone/fetch request, but
   the way this was done made Git panic, which has been corrected.

 * The object traversal machinery has been optimized not to load tree
   objects when we are only interested in commit history.
   (merge 72ed80c784 jk/list-objects-optim-wo-trees later to maint).

 * The object name parser for "Nth parent" syntax has been made more
   robust against integer overflows.
   (merge 59fa5f5a25 rs/nth-parent-parse later to maint).

 * The code used in following tags in "git fetch" has been optimized.
   (merge b7e2d8bca5 ms/fetch-follow-tag-optim later to maint).

 * Regression fix for progress output.
   (merge 2bb74b53a4 sg/progress-fix later to maint).

 * A bug in merge-recursive code that triggers when a branch with a
   symbolic link is merged with a branch that replaces it with a
   directory has been fixed.
   (merge 83e3ad3b12 jt/merge-recursive-symlink-is-not-a-dir-in-way later to maint).

 * The rename detection logic sorts a list of rename source candidates
   by similarity to pick the best candidate, which means that a tie
   between sources with the same similarity is broken by the original
   location in the original candidate list (which is sorted by path).
   Force the sorting by similarity done with a stable sort, which is
   not promised by system supplied qsort(3), to ensure consistent
   results across platforms.
   (merge 2049b8dc65 js/diff-rename-force-stable-sort later to maint).

 * The code to skip "UTF" and "UTF-" prefix, when computing an advice
   message, did not work correctly when the prefix was "UTF", which
   has been fixed.
   (merge b181676ce9 rs/convert-fix-utf-without-dash later to maint).

 * The author names taken from SVN repositories may have extra leading
   or trailing whitespaces, which are now munged away.
   (merge 4ddd4bddb1 tk/git-svn-trim-author-name later to maint).

 * "git rebase -i" showed a wrong HEAD while "reword" open the editor.
   (merge b0a3186140 pw/rebase-i-show-HEAD-to-reword later to maint).

 * A few simplification and bugfixes to PCRE interface.
   (merge c581e4a749 ab/pcre-jit-fixes later to maint).

 * PCRE fixes.
   (merge ff61681b46 cb/pcre1-cleanup later to maint).

 * "git range-diff" segfaulted when diff.noprefix configuration was
   used, as it blindly expected the patch it internally generates to
   have the standard a/ and b/ prefixes.  The command now forces the
   internal patch to be built without any prefix, not to be affected
   by any end-user configuration.
   (merge 937b76ed49 js/range-diff-noprefix later to maint).

 * "git stash apply" in a subdirectory of a secondary worktree failed
   to access the worktree correctly, which has been corrected.
   (merge dfd557c978 js/stash-apply-in-secondary-worktree later to maint).

 * The merge-recursive machinery is one of the most complex parts of
   the system that accumulated cruft over time.  This large series
   cleans up the implementation quite a bit.
   (merge b657047719 en/merge-recursive-cleanup later to maint).

 * Pretty-printed command line formatter (used in e.g. reporting the
   command being run by the tracing API) had a bug that lost an
   argument that is an empty string, which has been corrected.
   (merge ce2d7ed2fd gs/sq-quote-buf-pretty later to maint).

 * "git range-diff" failed to handle mode-only change, which has been
   corrected.
   (merge 2b6a9b13ca tg/range-diff-output-update later to maint).

 * Dev support update.
   (merge 4f3c1dc5d6 dl/allow-running-cocci-verbosely later to maint).

 * "git format-patch -o <outdir>" did an equivalent of "mkdir <outdir>"
   not "mkdir -p <outdir>", which was corrected.

 * "git stash save" lost local changes to submodules, which has been
   corrected.
   (merge 556895d0c8 jj/stash-reset-only-toplevel later to maint).

 * The atomic push over smart HTTP transport did not work, which has
   been corrected.
   (merge 6f1194246a bc/smart-http-atomic-push later to maint).

 * Other code cleanup, docfix, build fix, etc.
   (merge d1387d3895 en/fast-import-merge-doc later to maint).
   (merge 1c24a54ea4 bm/repository-layout-typofix later to maint).
   (merge 415b770b88 ds/midx-expire-repack later to maint).
   (merge 19800bdc3f nd/diff-parseopt later to maint).
   (merge 58166c2e9d tg/t0021-racefix later to maint).
   (merge 7027f508c7 dl/compat-cleanup later to maint).
   (merge e770fbfeff jc/test-cleanup later to maint).
   (merge 1fd881d404 rs/trace2-dst-warning later to maint).
   (merge 7e92756751 mh/http-urlmatch-cleanup later to maint).
   (merge 9784f97321 mh/release-commit-memory-fix later to maint).
   (merge 60d198d022 tb/banned-vsprintf-namefix later to maint).
   (merge 80e3658647 rs/help-unknown-ref-does-not-return later to maint).
   (merge 0a8bc7068f dt/remote-helper-doc-re-lock-option later to maint).
   (merge 27fd1e4ea7 en/merge-options-ff-and-friends later to maint).
   (merge 502c386ff9 sg/clean-nested-repo-with-ignored later to maint).
   (merge 26e3d1cbea am/mailmap-andrey-mazo later to maint).
   (merge 47b27c96fa ss/get-time-cleanup later to maint).
   (merge dd2e50a84e jk/commit-graph-cleanup later to maint).
   (merge 4fd39c76e6 cs/pretty-formats-doc-typofix later to maint).
   (merge 40e747e89d dl/submodule-set-branch later to maint).
   (merge 689a146c91 rs/commit-graph-use-list-count later to maint).
   (merge 0eb7c37a8a js/doc-patch-text later to maint).
   (merge 4b3aa170d1 rs/nth-switch-code-simplification later to maint).
   (merge 0d4304c124 ah/doc-submodule-ignore-submodules later to maint).
   (merge af78249463 cc/svn-fe-py-shebang later to maint).
   (merge 7bd97d6dff rs/alias-use-copy-array later to maint).
   (merge c46ebc2496 sg/travis-help-debug later to maint).
   (merge 24c681794f ps/my-first-contribution-alphasort later to maint).
   (merge 75b2c15435 cb/do-not-use-test-cmp-with-a later to maint).
   (merge cda0d497e3 bw/submodule-helper-usage-fix later to maint).
   (merge fe0ed5d5e9 am/visual-studio-config-fix later to maint).
   (merge 2e09c01232 sg/name-rev-cutoff-underflow-fix later to maint).
   (merge ddb3c856f3 as/shallow-slab-use-fix later to maint).
   (merge 71f4960b91 js/mingw-spawn-with-spaces-in-path later to maint).
   (merge 53d687bf5f ah/cleanups later to maint).
   (merge f537485fa5 rs/test-remove-useless-debugging-cat later to maint).
   (merge 11a3d3aadd dl/rev-list-doc-cleanup later to maint).
   (merge d928a8388a am/t0028-utf16-tests later to maint).
   (merge b05b40930e dl/t0000-skip-test-test later to maint).
   (merge 03d3b1297c js/xdiffi-comment-updates later to maint).
   (merge 57d8f4b4c7 js/doc-stash-save later to maint).
   (merge 8c1cfd58e3 ta/t1308-typofix later to maint).
   (merge fa364ad790 bb/utf8-wcwidth-cleanup later to maint).
   (merge 68b69211b2 bb/compat-util-comment-fix later to maint).
   (merge 5cc6a4be11 rs/http-push-simplify later to maint).
   (merge a81e42d235 rs/column-use-utf8-strnwidth later to maint).
   (merge 062a309d36 rs/remote-curl-use-argv-array later to maint).
   (merge 3b3c79f6c9 nr/diff-highlight-indent-fix later to maint).
   (merge 3444ec2eb2 wb/fsmonitor-bitmap-fix later to maint).
   (merge 10da030ab7 cb/pcre2-chartables-leakfix later to maint).
   (merge 60e6569a12 js/mingw-needs-hiding-fix later to maint).
   (merge 52bd3e4657 rl/gitweb-blame-prev-fix later to maint).

----------------------------------------------------------------

Changes since v2.23.0 are as follows:

Adam Roben (1):
      mingw: fix launching of externals from Unicode paths

Alessandro Menti (2):
      l10n: it.po: update the Italian translation for Git 2.24.0
      l10n: it.po: update the Italian translation for Git 2.24.0 round #2

Alex Henrie (4):
      doc: fix reference to --ignore-submodules
      commit-graph: remove a duplicate assignment
      diffcore-break: use a goto instead of a redundant if statement
      wrapper: use a loop instead of repetitive statements

Alexander Shopov (2):
      l10n: bg.po: Updated Bulgarian translation (4693)
      l10n: bg.po: Updated Bulgarian translation (4694)

Alexandr Miloslavskiy (4):
      contrib/buildsystems: fix Visual Studio Debug configuration
      t0028: fix test for UTF-16-LE-BOM
      t0028: add more tests
      t0061: fix test for argv[0] with spaces (MINGW only)

Ali Utku Selen (1):
      shallow.c: don't free unallocated slabs

Andrey Mazo (1):
      .mailmap: update email address of Andrey Mazo

Beat Bolli (3):
      grep: under --debug, show whether PCRE JIT is enabled
      utf8: use ARRAY_SIZE() in git_wcwidth()
      git-compat-util: fix documentation syntax

Ben Milman (1):
      repository-layout.txt: correct pluralization of 'object'

Ben Wijen (2):
      builtin/rebase.c: make sure the active branch isn't moved when autostashing
      builtin/rebase.c: Remove pointless message

Bert Wesarg (7):
      git-gui: convert new/amend commit radiobutton to checkbutton
      git-gui: add horizontal scrollbar to commit buffer
      builtin/submodule--helper: fix usage string for 'update-clone'
      git-gui: use existing interface to query a path's attribute
      git-gui: support for diff3 conflict style
      format-patch: create leading components of output directory
      t4014: make output-directory tests self-contained

Birger Skogeng Pedersen (2):
      git-gui: add hotkeys to set widget focus
      git-gui: add hotkey to toggle "Amend Last Commit"

CB Bailey (1):
      t4038: Remove non-portable '-a' option passed to test_cmp

Cameron Steffen (1):
      doc: minor formatting fix

Carlo Marcelo Arenas Belón (7):
      http: use xmalloc with cURL
      grep: make sure NO_LIBPCRE1_JIT disable JIT in PCRE1
      grep: refactor and simplify PCRE1 support
      grep: skip UTF8 checks explicitly
      grep: make PCRE1 aware of custom allocator
      grep: make PCRE2 aware of custom allocator
      grep: avoid leak of chartables in PCRE2

Christian Couder (15):
      t0410: remove pipes after git commands
      fetch-object: make functions return an error code
      Add initial support for many promisor remotes
      promisor-remote: implement promisor_remote_get_direct()
      promisor-remote: add promisor_remote_reinit()
      promisor-remote: use repository_format_partial_clone
      Use promisor_remote_get_direct() and has_promisor_remote()
      promisor-remote: parse remote.*.partialclonefilter
      builtin/fetch: remove unique promisor remote limitation
      t0410: test fetching from many promisor remotes
      partial-clone: add multiple remotes in the doc
      remote: add promisor and partial clone config to the doc
      Remove fetch-object.{c,h} in favor of promisor-remote.{c,h}
      Move repository_format_partial_clone to promisor-remote.c
      Move core_partial_clone_filter_default to promisor-remote.c

Christopher Diaz Riveros (1):
      l10n: es: 2.24.0 round 2

Clément Chigot (1):
      contrib/svn-fe: fix shebang for svnrdump_sim.py

Corentin BOMPARD (1):
      pull, fetch: add --set-upstream option

David Turner (1):
      clarify documentation for remote helpers

Denton Liu (50):
      packfile.h: drop extern from function declaration
      t4014: drop unnecessary blank lines from test cases
      t3431: add rebase --fork-point tests
      t3432: test rebase fast-forward behavior
      completion: merge options for cherry-pick and revert
      completion: add --skip for cherry-pick and revert
      status: mention --skip for revert and cherry-pick
      rebase: refactor can_fast_forward into goto tower
      rebase: fast-forward --onto in more cases
      rebase: fast-forward --fork-point in more cases
      rebase: teach rebase --keep-base
      mingw: apply array.cocci rule
      compat/*.[ch]: remove extern from function declarations using spatch
      t4014: s/expected/expect/
      t4014: move closing sq onto its own line
      t4014: use sq for test case names
      t4014: remove spaces after redirect operators
      t4014: use indentable here-docs
      t4014: drop redirections to /dev/null
      t4014: let sed open its own files
      t4014: use test_line_count() where possible
      t4014: remove confusing pipe in check_threading()
      t4014: stop losing return codes of git commands
      Doc: add more detail for git-format-patch
      config/format.txt: specify default value of format.coverLetter
      t: use common $SQ variable
      completion: teach rebase to use __gitcomp_builtin
      completion: teach archive to use __gitcomp_builtin
      git-submodule.txt: fix AsciiDoc formatting error
      Makefile: strip leading ./ in $(LIB_H)
      Makefile: define THIRD_PARTY_SOURCES
      Makefile: strip leading ./ in $(FIND_SOURCE_FILES)
      Makefile: run coccicheck on more source files
      gitk: rename zh_CN.po to zh_cn.po
      promisor-remote.h: drop extern from function declaration
      apply.h: include missing header
      promisor-remote.h: include missing header
      pack-bitmap.h: remove magic number
      Makefile: emulate compile in $(HCO) target better
      test-lib: let test_merge() perform octopus merges
      t4214: use test_merge
      t4214: generate expect in their own test cases
      t4214: explicitly list tags in log
      t4214: demonstrate octopus graph coloring failure
      git-rev-list.txt: prune options in synopsis
      t4014: treat rev-list output as the expected value
      t0000: cover GIT_SKIP_TESTS blindspots
      pthread.h: manually align parameter lists
      Makefile: respect $(V) in %.cocci.patch target
      t7419: change test_must_fail to ! for grep

Derrick Stolee (17):
      repo-settings: consolidate some config settings
      t6501: use 'git gc' in quiet mode
      commit-graph: turn on commit-graph by default
      repo-settings: parse core.untrackedCache
      repo-settings: create feature.manyFiles setting
      repo-settings: create feature.experimental setting
      merge-recursive: introduce an enum for detect_directory_renames values
      checkout: add simple check for 'git checkout -b'
      fetch: add fetch.writeCommitGraph config setting
      treewide: rename 'struct exclude' to 'struct path_pattern'
      treewide: rename 'struct exclude_list' to 'struct pattern_list'
      treewide: rename 'EXCL_FLAG_' to 'PATTERN_FLAG_'
      treewide: rename 'exclude' methods to 'pattern'
      unpack-trees: rename 'is_excluded_from_list()'
      repo-settings: read an int for index.version
      t5510-fetch.sh: demonstrate fetch.writeCommitGraph bug
      commit-graph: fix writing first commit-graph during fetch

Elijah Newren (55):
      git-fast-import.txt: clarify that multiple merge commits are allowed
      checkout: remove duplicate code
      merge-recursive: be consistent with assert
      checkout: provide better conflict hunk description with detached HEAD
      merge-recursive: enforce opt->ancestor != NULL when calling merge_trees()
      merge-recursive: provide a better label for diff3 common ancestor
      merge-recursive: future-proof update_file_flags() against memory leaks
      merge-recursive: remove another implicit dependency on the_repository
      Ensure index matches head before invoking merge machinery, round N
      merge-recursive: exit early if index != head
      merge-recursive: remove useless parameter in merge_trees()
      merge-recursive: don't force external callers to do our logging
      cache-tree: share code between functions writing an index as a tree
      merge-recursive: fix some overly long lines
      merge-recursive: use common name for ancestors/common/base_list
      merge-recursive: rename 'mrtree' to 'result_tree', for clarity
      merge-recursive: rename merge_options argument to opt in header
      merge-recursive: move some definitions around to clean up the header
      merge-recursive: consolidate unnecessary fields in merge_options
      merge-recursive: comment and reorder the merge_options fields
      merge-recursive: avoid losing output and leaking memory holding that output
      merge-recursive: split internal fields into a separate struct
      merge-recursive: rename MERGE_RECURSIVE_* to MERGE_VARIANT_*
      merge-recursive: add sanity checks for relevant merge_options
      merge-recursive: alphabetize include list
      merge-options.txt: clarify meaning of various ff-related options
      t3427: accelerate this test by using fast-export and fast-import
      t6006: simplify, fix, and optimize empty message test
      Recommend git-filter-repo instead of git-filter-branch
      t9902: use a non-deprecated command for testing
      t7300: add testcases showing failure to clean specified pathspecs
      dir: fix typo in comment
      dir: fix off-by-one error in match_pathspec_item
      dir: also check directories for matching pathspecs
      dir: make the DO_MATCH_SUBMODULE code reusable for a non-submodule case
      dir: if our pathspec might match files under a dir, recurse into it
      dir: add commentary explaining match_pathspec_item's return value
      git-clean.txt: do not claim we will delete files with -n/--dry-run
      clean: disambiguate the definition of -d
      clean: avoid removing untracked files in a nested git repository
      clean: rewrap overly long line
      clean: fix theoretical path corruption
      fast-export: fix exporting a tag and nothing else
      dir: special case check for the possibility that pathspec is NULL
      merge-recursive: fix the diff3 common ancestor label for virtual commits
      fast-import: fix handling of deleted tags
      fast-import: allow tags to be identified by mark labels
      fast-import: add support for new 'alias' command
      fast-export: add support for --import-marks-if-exists
      fast-export: allow user to request tags be marked with --mark-tags
      t9350: add tests for tags of things other than a commit
      fast-export: handle nested tags
      merge-recursive: fix the fix to the diff3 common ancestor label
      RelNotes/2.24.0: typofix
      RelNotes/2.24.0: fix self-contradictory note

Emily Shaffer (1):
      promisor-remote: skip move_to_tail when no-op

Eric Wong (20):
      diff: use hashmap_entry_init on moved_entry.ent
      coccicheck: detect hashmap_entry.hash assignment
      packfile: use hashmap_entry in delta_base_cache_entry
      hashmap_entry_init takes "struct hashmap_entry *"
      hashmap_get_next takes "const struct hashmap_entry *"
      hashmap_add takes "struct hashmap_entry *"
      hashmap_get takes "const struct hashmap_entry *"
      hashmap_remove takes "const struct hashmap_entry *"
      hashmap_put takes "struct hashmap_entry *"
      introduce container_of macro
      hashmap_get_next returns "struct hashmap_entry *"
      hashmap: use *_entry APIs to wrap container_of
      hashmap_get{,_from_hash} return "struct hashmap_entry *"
      hashmap_cmp_fn takes hashmap_entry params
      hashmap: use *_entry APIs for iteration
      hashmap: hashmap_{put,remove} return hashmap_entry *
      hashmap: introduce hashmap_free_entries
      OFFSETOF_VAR macro to simplify hashmap iterators
      hashmap: remove type arg from hashmap_{get,put,remove}_entry
      hashmap_entry: remove first member requirement from docs

Gabriele Mazzotta (1):
      gitk: Do not mistake unchanged lines for submodule changes

Garima Singh (3):
      commit-graph: add --[no-]progress to write and verify
      commit-graph: emit trace2 cmd_mode for each sub-command
      sq_quote_buf_pretty: don't drop empty arguments

Hervé Beraud (1):
      hg-to-git: make it compatible with both python3 and python2

Jakob Jarmar (1):
      stash: avoid recursive hard reset on submodules

Jean-Noël Avila (2):
      l10n: fr 2.24.0 rnd 1
      l10n: fr v2.24.0 rnd2

Jeff Hostetler (7):
      trace2: cleanup column alignment in perf target format
      trace2: trim whitespace in region messages in perf target format
      trace2: remove dead code in maybe_add_string_va()
      trace2: trim trailing whitespace in normal format error message
      quote: add sq_append_quote_argv_pretty()
      trace2: cleanup whitespace in normal format
      trace2: cleanup whitespace in perf format

Jeff King (32):
      setup_traverse_info(): stop copying oid
      tree-walk: drop oid from traverse_info
      tree-walk: use size_t consistently
      tree-walk: accept a raw length for traverse_path_len()
      tree-walk: add a strbuf wrapper for make_traverse_path()
      tree-walk: harden make_traverse_path() length computations
      revision: allow --end-of-options to end option parsing
      parse-options: allow --end-of-options as a synonym for "--"
      gitcli: document --end-of-options
      t1309: use short branch name in includeIf.onbranch test
      common-main: delay trace2 initialization
      config: stop checking whether the_repository is NULL
      t/perf: rename duplicate-numbered test script
      packfile: drop release_pack_memory()
      notes: avoid potential use-after-free during insertion
      fast-import: duplicate parsed encoding string
      fast-import: duplicate into history rather than passing ownership
      git-am: handle missing "author" when parsing commit
      pack-objects: use object_id in packlist_alloc()
      bulk-checkin: zero-initialize hashfile_checkpoint
      diff-delta: set size out-parameter to 0 for NULL delta
      test-read-cache: drop namelen variable
      pack-objects: drop packlist index_pos optimization
      commit-graph: turn off save_commit_buffer
      list-objects: don't queue root trees unless revs->tree_objects is set
      commit-graph: bump DIE_ON_LOAD check to actual load-time
      upload-pack: disable commit graph more gently for shallow traversal
      list-objects-filter: delay parsing of sparse oid
      list-objects-filter: use empty string instead of NULL for sparse "base"
      git_mkstemps_mode(): replace magic numbers with computed value
      add a Code of Conduct document
      CODE_OF_CONDUCT: mention individual project-leader emails

Jiang Xin (3):
      l10n: git.pot: v2.24.0 round 1 (35 new, 16 removed)
      l10n: git.pot: v2.24.0 round 2 (1 new)
      l10n: zh_CN: for git v2.24.0 l10n round 1~2

Johannes Schindelin (46):
      Drop unused git-rebase--am.sh
      t3400: stop referring to the scripted rebase
      .gitignore: there is no longer a built-in `git-rebase--interactive`
      sequencer: the `am` and `rebase--interactive` scripts are gone
      rebase: fold git-rebase--common into the -p backend
      t3427: add a clarifying comment
      t3427: simplify the `setup` test case significantly
      t3427: move the `filter-branch` invocation into the `setup` case
      t3427: condense the unnecessarily repetitive test cases into three
      t3427: fix erroneous assumption
      t3427: accommodate for the `rebase --merge` backend having been replaced
      t3427: fix another incorrect assumption
      rebase -r: support merge strategies other than `recursive`
      t/lib-rebase: prepare for testing `git rebase --rebase-merges`
      t3418: test `rebase -r` with merge strategies
      rebase -r: do not (re-)generate root commits with `--root` *and* `--onto`
      setup_git_directory(): handle UNC paths correctly
      Fix .git/ discovery at the root of UNC shares
      setup_git_directory(): handle UNC root paths correctly
      .gitignore: stop ignoring `.manifest` files
      Fix build with core.autocrlf=true
      Move git_sort(), a stable sort, into into libgit.a
      diffcore_rename(): use a stable sort
      ci: run `hdr-check` as part of the `Static Analysis` job
      range-diff: internally force `diff.noprefix=true`
      push: do not pretend to return `int` from `die_push_simple()`
      fetch: let --jobs=<n> parallelize --multiple, too
      stash apply: report status correctly even in a worktree's subdirectory
      msvc: avoid using minus operator on unsigned types
      winansi: use FLEX_ARRAY to avoid compiler warning
      compat/win32/path-utils.h: add #include guards
      msvc: ignore some libraries when linking
      msvc: handle DEVELOPER=1
      msvc: work around a bug in GetEnvironmentVariable()
      vcxproj: only copy `git-remote-http.exe` once it was built
      vcxproj: include more generated files
      test-tool run-command: learn to run (parts of) the testsuite
      tests: let --immediate and --write-junit-xml play well together
      ci: really use shallow clones on Azure Pipelines
      ci: also build and test with MS Visual Studio on Azure Pipelines
      xdiffi: fix typos and touch up comments
      doc(stash): clarify the description of `save`
      ci(visual-studio): use strict compile flags, and optimization
      ci(visual-studio): actually run the tests in parallel
      ci(osx): use new location of the `perforce` cask
      mingw: avoid a buffer overrun in `needs_hiding()`

Johannes Sixt (2):
      diff, log doc: say "patch text" instead of "patches"
      diff, log doc: small grammer, format, and language fixes

Jon Simons (2):
      t5616: test cloning/fetching with sparse:oid=<oid> filter
      list-objects-filter: give a more specific error sparse parsing error

Jonathan Tan (7):
      diff: skip GITLINK when lazy fetching missing objs
      transport-helper: skip ls-refs if unnecessary
      transport: teach all vtables to allow fetch first
      cache-tree: do not lazy-fetch tentative tree
      merge-recursive: symlink's descendants not in way
      send-pack: never fetch when checking exclusions
      fetch: delay fetch_if_missing=0 until after config

Jordi Mas (1):
      l10n: Update Catalan translation

Josh Steadmon (7):
      t7503: verify proper hook execution
      fetch: add trace2 instrumentation
      push: add trace2 instrumentation
      docs: mention trace2 target-dir mode in git-config
      docs: clarify trace2 version invariants
      trace2: discard new traces if target directory has too many files
      trace2: write discard message to sentinel files

Junio C Hamano (18):
      First batch after Git 2.23
      t: use LF variable defined in the test harness
      t3005: remove unused variable
      Second batch
      Third batch
      SubmittingPatches: git-gui has a new maintainer
      Fourth batch
      Fifth batch
      Sixth batch
      transport: push codepath can take arbitrary repository
      Seventh batch
      Eighth batch
      Ninth batch
      Git 2.24-rc0
      Eleventh batch
      Git 2.24-rc1
      Git 2.24-rc2
      Git 2.24

Kunal Tyagi (1):
      add -i: show progress counter in the prompt

Martin Ågren (16):
      Documentation: wrap blocks with "--"
      git-merge-base.txt: render indentations correctly under Asciidoctor
      Documentation: wrap config listings in "----"
      git-ls-remote.txt: wrap shell listing in "----"
      git-receive-pack.txt: wrap shell [script] listing in "----"
      git-merge-index.txt: wrap shell listing in "----"
      gitweb.conf.txt: switch pluses to backticks to help Asciidoctor
      Doc/Makefile: give mansource/-version/-manual attributes
      asciidoctor-extensions: provide `<refmiscinfo/>`
      doc-diff: replace --cut-header-footer with --cut-footer
      treewide: correct several "up-to-date" to "up to date"
      user-manual.txt: add missing section label
      user-manual.txt: change header notation
      asciidoctor-extensions.rb: handle "book" doctype in linkgit
      user-manual.txt: render ASCII art correctly under Asciidoctor
      manpage-bold-literal.xsl: match for namespaced "d:literal" in template

Masaya Suzuki (1):
      fetch: use oidset to keep the want OIDs for faster lookup

Matheus Tavares (1):
      grep: fix worktree case in submodules

Matthew DeVore (10):
      list-objects-filter: encapsulate filter components
      list-objects-filter: put omits set in filter struct
      list-objects-filter-options: always supply *errbuf
      list-objects-filter: implement composite filters
      list-objects-filter-options: move error check up
      list-objects-filter-options: make filter_spec a string_list
      strbuf: give URL-encoding API a char predicate fn
      list-objects-filter-options: allow mult. --filter
      list-objects-filter-options: clean up use of ALLOC_GROW
      list-objects-filter-options: make parser void

Matthias Rüster (1):
      l10n: de.po: Update German translation

Max Rothman (1):
      completion: add missing completions for log, diff, show

Maxim Belsky (1):
      completion: clarify installation instruction for zsh

Michael J Gruber (3):
      merge: do no-verify like commit
      git-merge: honor pre-merge-commit hook
      merge: --no-verify to bypass pre-merge-commit hook

Mike Hommey (3):
      notes: avoid leaking duplicate entries
      commit: free the right buffer in release_commit_memory
      http: don't leak urlmatch_config.vars

Mischa POSLAWSKY (1):
      ref-filter: initialize empty name or email fields

Norman Rasmussen (1):
      diff-highlight: fix a whitespace nit

Paul Mackerras (1):
      gitk: Make web links clickable

Paul Wise (1):
      gitk: Use right colour for remote refs in the "Tags and heads" dialog

Pedro Sousa (1):
      doc: MyFirstContribution: fix cmd placement instructions

Peter Krefting (2):
      l10n: sv.po: Update Swedish translation (4674t0f0u)
      l10n: sv.po: Update Swedish translation (4695t0f0u)

Philip.McGraw (1):
      git-p4: auto-delete named temporary file

Phillip Wood (3):
      rebase -i: always update HEAD before rewording
      rebase -i: check for updated todo after squash and reword
      sequencer: simplify root commit creation

Pratyush Yadav (7):
      git-gui: call do_quit before destroying the main window
      git-gui: allow reverting selected lines
      git-gui: allow reverting selected hunk
      git-gui: return early when patch fails to apply
      git-gui: allow undoing last revert
      Documentation: update the location of the git-gui repo
      git-gui: add a readme

René Scharfe (28):
      nedmalloc: do assignments only after the declaration section
      nedmalloc: avoid compiler warning about unused value
      archive-tar: report wrong pax extended header length
      archive-tar: fix pax extended header length calculation
      archive-tar: use size_t in strbuf_append_ext_header()
      archive-tar: turn length miscalculation warning into BUG
      parseopt: move definition of enum parse_opt_result up
      sha1-name: make sort_ambiguous_oid_array() thread-safe
      log-tree: always use return value of strbuf_detach()
      grep: use return value of strbuf_detach()
      trace2: use warning() directly in tr2_dst_malformed_warning()
      help: make help_unknown_ref() NORETURN
      tree: simplify parse_tree_indirect()
      tag: factor out get_tagged_oid()
      use get_tagged_oid()
      log: test --decorate-refs-exclude with --simplify-by-decoration
      log-tree: call load_ref_decorations() in get_name_decoration()
      rev-parse: demonstrate overflow of N for "foo^N" and "foo~N"
      sha1-name: check for overflow of N in "foo^N" and "foo~N"
      commit-graph: use commit_list_count()
      sha1_name: simplify strbuf handling in interpret_nth_prior_checkout()
      git: use COPY_ARRAY and MOVE_ARRAY in handle_alias()
      treewide: remove duplicate #include directives
      convert: fix handling of dashless UTF prefix in validate_encoding()
      tests: remove "cat foo" before "test_i18ngrep bar foo"
      http-push: simplify deleting a list item
      column: use utf8_strnwidth() to strip out ANSI color escapes
      remote-curl: use argv_array in parse_push()

Robert Luberda (1):
      gitweb: correctly store previous rev in javascript-actions mode

SZEDER Gábor (35):
      t5510-fetch: fix negated 'test_i18ngrep' invocation
      t5510-fetch: run non-httpd-specific test before sourcing 'lib-httpd.sh'
      t5703: run all non-httpd-specific tests before sourcing 'lib-httpd.sh'
      t: warn against adding non-httpd-specific tests after sourcing 'lib-httpd'
      t5318-commit-graph: use 'test_expect_code'
      commit-graph: turn a group of write-related macro flags into an enum
      commit-graph: error out on invalid commit oids in 'write --stdin-commits'
      t0000-basic: use realistic test script names in the verbose tests
      tests: show the test name and number at the start of verbose output
      completion: fix a typo in a comment
      completion: complete more values of more 'color.*' configuration variables
      completion: add tests for 'git config' completion
      completion: deduplicate configuration sections
      completion: use 'sort -u' to deduplicate config variable names
      completion: simplify inner 'case' pattern in __gitcomp()
      completion: split _git_config()
      completion: complete configuration sections and variable names for 'git -c'
      completion: complete values of configuration variables after 'git -c var='
      completion: complete config variables names and values for 'git clone -c'
      completion: complete config variables and values for 'git clone --config='
      worktree remove: clarify error message on dirty worktree
      diff: 'diff.indentHeuristic' is no longer experimental
      line-log: extract pathspec parsing from line ranges into a helper function
      line-log: avoid unnecessary full tree diffs
      t7300-clean: demonstrate deleting nested repo with an ignored file breakage
      t/lib-git-svn.sh: check GIT_TEST_SVN_HTTPD when running SVN HTTP tests
      ci: restore running httpd tests
      commit-graph: don't show progress percentages while expanding reachable commits
      Revert "progress: use term_clear_line()"
      Test the progress display
      t/helper: ignore only executable files
      travis-ci: do not skip successfully tested trees in debug mode
      name-rev: avoid cutoff timestamp underflow
      test-progress: fix test failures on big-endian systems
      ci: fix GCC install in the Travis CI GCC OSX job

Stephen Boyd (2):
      userdiff: add a builtin pattern for dts files
      userdiff: fix some corner cases in dts regex

Stephen P. Smith (2):
      Quit passing 'now' to date code
      test_date.c: remove reference to GIT_TEST_DATE_NOW

Sun Chao (1):
      pack-refs: always refresh after taking the lock file

Tanay Abhra (1):
      t1308-config-set: fix a test that has a typo

Taylor Blau (4):
      banned.h: fix vsprintf()'s ban message
      t/t5318: introduce failing 'git commit-graph write' tests
      commit-graph.c: handle commit parsing errors
      commit-graph.c: handle corrupt/missing trees

Thomas Gummerer (6):
      t0021: make sure clean filter runs
      push: disallow --all and refspecs when remote.<name>.mirror is set
      factor out refresh_and_write_cache function
      merge: use refresh_and_write_cache
      stash: make sure to write refreshed cache
      range-diff: don't segfault with mode-only changes

Thomas Klaeger (1):
      git-gui (Windows): use git-bash.exe if it is available

Tobias Klauser (1):
      git-svn: trim leading and trailing whitespaces in author name

Torsten Bögershausen (1):
      mingw: support UNC in git clone file://server/share/repo

Trần Ngọc Quân (1):
      l10n: vi(4694t): Updated translation for v2.24.0

Varun Naik (2):
      checkout.c: unstage empty deleted ita files
      restore: add test for deleted ita files

William Baker (2):
      fsmonitor: don't fill bitmap with entries to be removed
      t7519-status-fsmonitor: improve comments

YanKe (1):
      gitk: Add Chinese (zh_CN) translation

brian m. carlson (44):
      builtin/replace: make hash size independent
      patch-id: convert to use the_hash_algo
      fetch-pack: use parse_oid_hex
      builtin/receive-pack: switch to use the_hash_algo
      builtin/blame: switch uses of GIT_SHA1_HEXSZ to the_hash_algo
      builtin/rev-parse: switch to use the_hash_algo
      blame: remove needless comparison with GIT_SHA1_HEXSZ
      show-index: switch hard-coded constants to the_hash_algo
      connected: switch GIT_SHA1_HEXSZ to the_hash_algo
      bundle: switch to use the_hash_algo
      combine-diff: replace GIT_SHA1_HEXSZ with the_hash_algo
      config: use the_hash_algo in abbrev comparison
      sha1-lookup: switch hard-coded constants to the_hash_algo
      bisect: switch to using the_hash_algo
      sequencer: convert to use the_hash_algo
      pack-write: use hash_to_hex when writing checksums
      builtin/repack: write object IDs of the proper length
      builtin/worktree: switch null_sha1 to null_oid
      cache: remove null_sha1
      wt-status: convert struct wt_status to object_id
      packfile: replace sha1_to_hex
      builtin/index-pack: replace sha1_to_hex
      builtin/receive-pack: replace sha1_to_hex
      rerere: replace sha1_to_hex
      builtin/show-index: replace sha1_to_hex
      midx: switch to using the_hash_algo
      t3201: abstract away SHA-1-specific constants
      t3206: abstract away hash size constants
      t3301: abstract away SHA-1-specific constants
      t3305: make hash size independent
      t3306: abstract away SHA-1-specific constants
      t3404: abstract away SHA-1-specific constants
      t3430: avoid hard-coded object IDs
      t3506: make hash independent
      t3600: make hash size independent
      t3800: make hash-size independent
      t3903: abstract away SHA-1-specific constants
      t4000: make hash size independent
      t4002: make hash independent
      t4009: make hash size independent
      path: add a function to check for path suffix
      am: reload .gitattributes after patching it
      Documentation: fix build with Asciidoctor 2
      remote-curl: pass on atomic capability to remote side

kdnakt (1):
      git-gui: improve Japanese translation

Ævar Arnfjörð Bjarmason (20):
      log tests: test regex backends in "--encode=<enc>" tests
      grep: don't use PCRE2?_UTF8 with "log --encoding=<non-utf8>"
      t4210: skip more command-line encoding tests on MinGW
      grep: inline the return value of a function call used only once
      grep tests: move "grep binary" alongside the rest
      grep tests: move binary pattern tests into their own file
      grep: make the behavior for NUL-byte in patterns sane
      grep: drop support for \0 in --fixed-strings <pattern>
      grep: remove the kwset optimization
      grep: use PCRE v2 for optimized fixed-string search
      grep: remove overly paranoid BUG(...) code
      grep: stop "using" a custom JIT stack with PCRE v2
      grep: stop using a custom JIT stack with PCRE v1
      grep: consistently use "p->fixed" in compile_regexp()
      grep: create a "is_fixed" member in "grep_pat"
      grep: stess test PCRE v2 on invalid UTF-8 data
      grep: do not enter PCRE2_UTF mode on fixed matching
      t3432: distinguish "noop-same" v.s. "work-same" in "same head" tests
      t3432: test for --no-ff's interaction with fast-forward
      rebase tests: test linear branch topology


^ permalink raw reply	[relevance 3%]

* [GIT PULL] l10n updates for 2.24.0 round 2
@ 2019-11-02 13:35  5% Jiang Xin
  0 siblings, 0 replies; 25+ results
From: Jiang Xin @ 2019-11-02 13:35 UTC (permalink / raw)
  To: Junio C Hamano
  Cc: Jiang Xin, Git List, Alessandro Menti, Alexander Shopov,
	Christopher Diaz Riveros, Dimitriy Ryazantcev, Gwan-gyeong Mun,
	Jean-Noël Avila, Jimmy Angelakos, Jordi Mas,
	Matthias Rüster, Peter Krefting, Phillip Szelat,
	Ralf Thielow, Trần Ngọc Quân, Vasco Almeida

From: Jiang Xin <worldhello.net@gmail.com>

Hi Junio,

Please pull the following l10n updates for Git 2.24.0.

The following changes since commit 566a1439f6f56c2171b8853ddbca0ad3f5098770:

  Git 2.24-rc1 (2019-10-24 13:34:03 +0900)

are available in the Git repository at:

  git@github.com:git-l10n/git-po.git tags/l10n-2.24.0-rnd2

for you to fetch changes up to a5cd71ca4a7c58ba507bf36dc36febbae8043361:

  l10n: zh_CN: for git v2.24.0 l10n round 1~2 (2019-11-02 20:51:12 +0800)

----------------------------------------------------------------
l10n-2.24.0-rnd2

----------------------------------------------------------------
Alessandro Menti (2):
      l10n: it.po: update the Italian translation for Git 2.24.0
      l10n: it.po: update the Italian translation for Git 2.24.0 round #2

Alexander Shopov (2):
      l10n: bg.po: Updated Bulgarian translation (4693)
      l10n: bg.po: Updated Bulgarian translation (4694)

Christopher Diaz Riveros (1):
      l10n: es: 2.24.0 round 2

Jean-Noël Avila (2):
      l10n: fr 2.24.0 rnd 1
      l10n: fr v2.24.0 rnd2

Jiang Xin (10):
      l10n: git.pot: v2.24.0 round 1 (35 new, 16 removed)
      Merge remote-tracking branch 'git-po/master' into git-po-master
      Merge branch 'master' of github.com:alshopov/git-po into git-po-master
      Merge branch 'master' of github.com:jnavila/git into git-po-master
      Merge tag 'v2.24.0-rc1' of github.com:git/git into master
      l10n: git.pot: v2.24.0 round 2 (1 new)
      Merge branch 'l10n/it/update-italian-translation'
      Merge branch 'next' of github.com:ChrisADR/git-po
      Merge branch 'master' of github.com:vnwildman/git
      l10n: zh_CN: for git v2.24.0 l10n round 1~2

Jordi Mas (1):
      l10n: Update Catalan translation

Matthias Rüster (1):
      l10n: de.po: Update German translation

Peter Krefting (2):
      l10n: sv.po: Update Swedish translation (4674t0f0u)
      l10n: sv.po: Update Swedish translation (4695t0f0u)

Trần Ngọc Quân (1):
      l10n: vi(4694t): Updated translation for v2.24.0

 po/bg.po    | 4989 ++++++++++++++++++++++++++++----------------------------
 po/ca.po    |   60 +-
 po/de.po    | 5044 ++++++++++++++++++++++++++++----------------------------
 po/es.po    | 5220 +++++++++++++++++++++++++++++-----------------------------
 po/fr.po    | 4994 ++++++++++++++++++++++++++++----------------------------
 po/git.pot  | 4924 ++++++++++++++++++++++++++++---------------------------
 po/it.po    | 5034 ++++++++++++++++++++++++++++----------------------------
 po/sv.po    | 5240 ++++++++++++++++++++++++++++++-----------------------------
 po/vi.po    | 5040 ++++++++++++++++++++++++++++----------------------------
 po/zh_CN.po | 4978 +++++++++++++++++++++++++++++---------------------------
 10 files changed, 23301 insertions(+), 22222 deletions(-)

--
Jiang Xin

^ permalink raw reply	[relevance 5%]

* Re: [ANNOUNCE] Git v2.24.0-rc1
  2019-10-30  6:56  0% ` Elijah Newren
  2019-10-30 20:52  0%   ` Elijah Newren
@ 2019-11-02  3:25  0%   ` Junio C Hamano
  1 sibling, 0 replies; 25+ results
From: Junio C Hamano @ 2019-11-02  3:25 UTC (permalink / raw)
  To: Elijah Newren; +Cc: Git Mailing List

Elijah Newren <newren@gmail.com> writes:

> Hi Junio,
>
> A couple questions on the release notes...
>
> On Thu, Oct 24, 2019 at 1:35 PM Junio C Hamano <gitster@pobox.com> wrote:
>> Git 2.24 Release Notes (draft)
>> ==============================
>>
>> Updates since v2.23
>> -------------------
>>
>> Backward compatibility note
>>
>>  * Although it is not officially deprecated, "filter-branch" is
>>    showing its age and alternatives are available.  From this release,
>>    we started to discourage its uses and hint people about
>>    filter-repo.
>
> What do you mean by deprecation, then?
>
> My understanding has always been that deprecation meant "supported but
> discouraged", which is exactly what we're doing.

You probably want to question the "officially" part.  My
understading is that some vocal members of the community
may be advocating for the official deprecation, and I am
more or less in agreement, but haven't heard from enough
folks to make it "official" community consensus just yet.

^ permalink raw reply	[relevance 0%]

* Re: [ANNOUNCE] Git v2.24.0-rc1
  2019-10-30  6:56  0% ` Elijah Newren
@ 2019-10-30 20:52  0%   ` Elijah Newren
  2019-11-02  3:25  0%   ` Junio C Hamano
  1 sibling, 0 replies; 25+ results
From: Elijah Newren @ 2019-10-30 20:52 UTC (permalink / raw)
  To: Junio C Hamano; +Cc: Git Mailing List

On Tue, Oct 29, 2019 at 11:56 PM Elijah Newren <newren@gmail.com> wrote:
>
> Hi Junio,
>
> A couple questions on the release notes...
>
> On Thu, Oct 24, 2019 at 1:35 PM Junio C Hamano <gitster@pobox.com> wrote:
> > Git 2.24 Release Notes (draft)
> > ==============================
> >
> > Updates since v2.23
> > -------------------
> >
> > Backward compatibility note
> >
> >  * Although it is not officially deprecated, "filter-branch" is
> >    showing its age and alternatives are available.  From this release,
> >    we started to discourage its uses and hint people about
> >    filter-repo.
>
> What do you mean by deprecation, then?
>
> My understanding has always been that deprecation meant "supported but
> discouraged", which is exactly what we're doing.  We also run the risk
> of people seeing "not officially deprecated" in the release notes,
> then being very confused why the documentation and the program itself
> is discouraging its own use and wonder if they configured things wrong
> or got the wrong version of git ("The release notes says it isn't
> deprecated, but whatever version I'm running definitely does have it
> deprecated.  What'd I do wrong??").
>
> >  * The merge-recursive machiery is one of the most complex parts of
>
> I fixed this "machiery" typo in en/doc-typofix but as that hasn't even
> merged down to next yet, I'm wondering if you're planning to include
> that in the release.  Should I provide a subset of those fixes in a
> separate patch for inclusion in the 2.24 release?  Which of the types
> of doc typo fixes would you want to see at this point for including?

Made a guess at the answers to my questions in the form of patches:
https://public-inbox.org/git/pull.440.git.1572466878.gitgitgadget@gmail.com/

^ permalink raw reply	[relevance 0%]

* [ANNOUNCE] Git v2.24.0-rc2
@ 2019-10-30  7:14  2% Junio C Hamano
  0 siblings, 0 replies; 25+ results
From: Junio C Hamano @ 2019-10-30  7:14 UTC (permalink / raw)
  To: git; +Cc: Linux Kernel, git-packagers

A release candidate Git v2.24.0-rc2 is now available for testing
at the usual places.  It is comprised of 515 non-merge commits
since v2.23.0, contributed by 67 people, 18 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.24.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://github.com/gitster/git

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

  Alexandr Miloslavskiy, Ali Utku Selen, Ben Milman, Cameron
  Steffen, CB Bailey, Garima Singh, Hervé Beraud, Jakob Jarmar,
  Kunal Tyagi, Maxim Belsky, Max Rothman, Norman Rasmussen, Paul
  Wise, Pedro Sousa, Philip.McGraw, Pratyush Yadav, William Baker,
  and YanKe.

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

  Adam Roben, Ævar Arnfjörð Bjarmason, Alex Henrie, Andrey Mazo,
  Beat Bolli, Ben Wijen, Bert Wesarg, Birger Skogeng Pedersen,
  brian m. carlson, Carlo Marcelo Arenas Belón, Christian
  Couder, Clément Chigot, Corentin BOMPARD, David Turner,
  Denton Liu, Derrick Stolee, Elijah Newren, Emily Shaffer,
  Eric Wong, Gabriele Mazzotta, Jeff Hostetler, Jeff King,
  Johannes Schindelin, Johannes Sixt, Jonathan Tan, Jon Simons,
  Josh Steadmon, Junio C Hamano, Martin Ågren, Masaya Suzuki,
  Matheus Tavares, Matthew DeVore, Michael J Gruber, Mike Hommey,
  Mischa POSLAWSKY, Paul Mackerras, Phillip Wood, René Scharfe,
  Robert Luberda, Stephen Boyd, Stephen P. Smith, Sun Chao,
  SZEDER Gábor, Tanay Abhra, Taylor Blau, Thomas Gummerer,
  Tobias Klauser, Torsten Bögershausen, and Varun Naik.

----------------------------------------------------------------

Git 2.24 Release Notes (draft)
==============================

Updates since v2.23
-------------------

Backward compatibility note

 * Although it is not officially deprecated, "filter-branch" is
   showing its age and alternatives are available.  From this release,
   we started to discourage its uses and hint people about
   filter-repo.

UI, Workflows & Features

 * We now have an active interim maintainer for the Git-Gui part of
   the system.  Praise and thank Pratyush Yadav for volunteering.

 * The command line parser learned "--end-of-options" notation; the
   standard convention for scripters to have hardcoded set of options
   first on the command line, and force the command to treat end-user
   input as non-options, has been to use "--" as the delimiter, but
   that would not work for commands that use "--" as a delimiter
   between revs and pathspec.

 * A mechanism to affect the default setting for a (related) group of
   configuration variables is introduced.

 * "git fetch" learned "--set-upstream" option to help those who first
   clone from their private fork they intend to push to, add the true
   upstream via "git remote add" and then "git fetch" from it.

 * Device-tree files learned their own userdiff patterns.
   (merge 3c81760bc6 sb/userdiff-dts later to maint).

 * "git rebase --rebase-merges" learned to drive different merge
   strategies and pass strategy specific options to them.

 * A new "pre-merge-commit" hook has been introduced.

 * Command line completion updates for "git -c var.name=val" have been
   added.

 * The lazy clone machinery has been taught that there can be more
   than one promisor remote and consult them in order when downloading
   missing objects on demand.

 * The list-objects-filter API (used to create a sparse/lazy clone)
   learned to take a combined filter specification.

 * The documentation and tests for "git format-patch" have been
   cleaned up.

 * On Windows, the root level of UNC share is now allowed to be used
   just like any other directory.

 * The command line completion support (in contrib/) learned about the
   "--skip" option of "git revert" and "git cherry-pick".

 * "git rebase --keep-base <upstream>" tries to find the original base
   of the topic being rebased and rebase on top of that same base,
   which is useful when running the "git rebase -i" (and its limited
   variant "git rebase -x").

   The command also has learned to fast-forward in more cases where it
   can instead of replaying to recreate identical commits.

 * A configuration variable tells "git fetch" to write the commit
   graph after finishing.

 * "git add -i" has been taught to show the total number of hunks and
   the hunks that has been processed so far when showing prompts.

 * "git fetch --jobs=<n>" allowed <n> parallel jobs when fetching
   submodules, but this did not apply to "git fetch --multiple" that
   fetches from multiple remote repositories.  It now does.

 * The installation instruction for zsh completion script (in
   contrib/) has been a bit improved.


Performance, Internal Implementation, Development Support etc.

 * The code to write commit-graph over given commit object names has
   been made a bit more robust.

 * The first line of verbose output from each test piece now carries
   the test name and number to help scanning with eyeballs.

 * Further clean-up of the initialization code.

 * xmalloc() used to have a mechanism to ditch memory and address
   space resources as the last resort upon seeing an allocation
   failure from the underlying malloc(), which made the code complex
   and thread-unsafe with dubious benefit, as major memory resource
   users already do limit their uses with various other mechanisms.
   It has been simplified away.

 * Unnecessary full-tree diff in "git log -L" machinery has been
   optimized away.

 * The http transport lacked some optimization the native transports
   learned to avoid unnecessary ref advertisement, which has been
   corrected.

 * Preparation for SHA-256 upgrade continues in the test department.
   (merge 0c37c41d13 bc/hash-independent-tests-part-5 later to maint).

 * The memory ownership model of the "git fast-import" got
   straightened out.

 * Output from trace2 subsystem is formatted more prettily now.

 * The internal code originally invented for ".gitignore" processing
   got reshuffled and renamed to make it less tied to "excluding" and
   stress more that it is about "matching", as it has been reused for
   things like sparse checkout specification that want to check if a
   path is "included".

 * "git stash" learned to write refreshed index back to disk.

 * Coccinelle checks are done on more source files than before now.

 * The cache-tree code has been taught to be less aggressive in
   attempting to see if a tree object it computed already exists in
   the repository.

 * The code to parse and use the commit-graph file has been made more
   robust against corrupted input.

 * The hg-to-git script (in contrib/) has been updated to work with
   Python 3.

 * Update the way build artifacts in t/helper/ directory are ignored.

 * Preparation for SHA-256 upgrade continues.

 * "git log --graph" for an octopus merge is sometimes colored
   incorrectly, which is demonstrated and documented but not yet
   fixed.

 * The trace2 output, when sending them to files in a designated
   directory, can populate the directory with too many files; a
   mechanism is introduced to set the maximum number of files and
   discard further logs when the maximum is reached.

 * We have adopted a Code-of-conduct document.
   (merge 3f9ef874a7 jk/coc later to maint).


Fixes since v2.23
-----------------

 * "git grep --recurse-submodules" that looks at the working tree
   files looked at the contents in the index in submodules, instead of
   files in the working tree.
   (merge 6a289d45c0 mt/grep-submodules-working-tree later to maint).

 * Codepaths to walk tree objects have been audited for integer
   overflows and hardened.
   (merge 5aa02f9868 jk/tree-walk-overflow later to maint).

 * "git pack-refs" can lose refs that are created while running, which
   is getting corrected.
   (merge a613d4f817 sc/pack-refs-deletion-racefix later to maint).

 * "git checkout" and "git restore" to re-populate the index from a
   tree-ish (typically HEAD) did not work correctly for a path that
   was removed and then added again with the intent-to-add bit, when
   the corresponding working tree file was empty.  This has been
   corrected.

 * Compilation fix.
   (merge 70597e8386 rs/nedalloc-fixlets later to maint).

 * "git gui" learned to call the clean-up procedure before exiting.
   (merge 0d88f3d2c5 py/git-gui-do-quit later to maint).

 * We promoted the "indent heuristics" that decides where to split
   diff hunks from experimental to the default a few years ago, but
   some stale documentation still marked it as experimental, which has
   been corrected.
   (merge 64e5e1fba1 sg/diff-indent-heuristic-non-experimental later to maint).

 * Fix a mismerge that happened in 2.22 timeframe.
   (merge acb7da05ac en/checkout-mismerge-fix later to maint).

 * "git archive" recorded incorrect length in extended pax header in
   some corner cases, which has been corrected.
   (merge 71d41ff651 rs/pax-extended-header-length-fix later to maint).

 * On-demand object fetching in lazy clone incorrectly tried to fetch
   commits from submodule projects, while still working in the
   superproject, which has been corrected.
   (merge a63694f523 jt/diff-lazy-fetch-submodule-fix later to maint).

 * Prepare get_short_oid() codepath to be thread-safe.
   (merge 7cfcb16b0e rs/sort-oid-array-thread-safe later to maint).

 * "for-each-ref" and friends that show refs did not protect themselves
   against ancient tags that did not record tagger names when asked to
   show "%(taggername)", which have been corrected.
   (merge 8b3f33ef11 mp/for-each-ref-missing-name-or-email later to maint).

 * The "git am" based backend of "git rebase" ignored the result of
   updating ".gitattributes" done in one step when replaying
   subsequent steps.
   (merge 2c65d90f75 bc/reread-attributes-during-rebase later to maint).

 * Tell cURL library to use the same malloc() implementation, with the
   xmalloc() wrapper, as the rest of the system, for consistency.
   (merge 93b980e58f cb/curl-use-xmalloc later to maint).

 * Build fix to adjust .gitignore to unignore a path that we started to track.
   (merge aac6ff7b5b js/visual-studio later to maint).

 * A few implementation fixes in the notes API.
   (merge 60fe477a0b mh/notes-duplicate-entries later to maint).

 * Fix an earlier regression to "git push --all" which should have
   been forbidden when the target remote repository is set to be a
   mirror.
   (merge 8e4c8af058 tg/push-all-in-mirror-forbidden later to maint).

 * Fix an earlier regression in the test suite, which mistakenly
   stopped running HTTPD tests.
   (merge 3960290675 sg/git-test-boolean later to maint).

 * "git rebase --autostash <upstream> <branch>", when <branch> is
   different from the current branch, incorrectly moved the tip of the
   current branch, which has been corrected.
   (merge bf1e28e0ad bw/rebase-autostash-keep-current-branch later to maint).

 * Update support for Asciidoctor documentation toolchain.
   (merge 83b0b8953e ma/asciidoctor-refmiscinfo later to maint).

 * Start using DocBook 5 (instead of DocBook 4.5) as Asciidoctor 2.0
   no longer works with the older one.
   (merge f6461b82b9 bc/doc-use-docbook-5 later to maint).

 * The markup used in user-manual has been updated to work better with
   asciidoctor.
   (merge c4d2f6143a ma/user-manual-markup-update later to maint).

 * Make sure the grep machinery does not abort when seeing a payload
   that is not UTF-8 even when JIT is not in use with PCRE1.
   (merge ad7c543e3b cb/skip-utf8-check-with-pcre1 later to maint).

 * The name of the blob object that stores the filter specification
   for sparse cloning/fetching was interpreted in a wrong place in the
   code, causing Git to abort.

 * "git log --decorate-refs-exclude=<pattern>" was incorrectly
   overruled when the "--simplify-by-decoration" option is used, which
   has been corrected.
   (merge 0cc7380d88 rs/simplify-by-deco-with-deco-refs-exclude later to maint).

 * The "upload-pack" (the counterpart of "git fetch") needs to disable
   commit-graph when responding to a shallow clone/fetch request, but
   the way this was done made Git panic, which has been corrected.

 * The object traversal machinery has been optimized not to load tree
   objects when we are only interested in commit history.
   (merge 72ed80c784 jk/list-objects-optim-wo-trees later to maint).

 * The object name parser for "Nth parent" syntax has been made more
   robust against integer overflows.
   (merge 59fa5f5a25 rs/nth-parent-parse later to maint).

 * The code used in following tags in "git fetch" has been optimized.
   (merge b7e2d8bca5 ms/fetch-follow-tag-optim later to maint).

 * Regression fix for progress output.
   (merge 2bb74b53a4 sg/progress-fix later to maint).

 * A bug in merge-recursive code that triggers when a branch with a
   symbolic link is merged with a branch that replaces it with a
   directory has been fixed.
   (merge 83e3ad3b12 jt/merge-recursive-symlink-is-not-a-dir-in-way later to maint).

 * The rename detection logic sorts a list of rename source candidates
   by similarity to pick the best candidate, which means that a tie
   between sources with the same similarity is broken by the original
   location in the original candidate list (which is sorted by path).
   Force the sorting by similarity done with a stable sort, which is
   not promised by system supplied qsort(3), to ensure consistent
   results across platforms.
   (merge 2049b8dc65 js/diff-rename-force-stable-sort later to maint).

 * The code to skip "UTF" and "UTF-" prefix, when computing an advice
   message, did not work correctly when the prefix was "UTF", which
   has been fixed.
   (merge b181676ce9 rs/convert-fix-utf-without-dash later to maint).

 * The author names taken from SVN repositories may have extra leading
   or trailing whitespaces, which are now munged away.
   (merge 4ddd4bddb1 tk/git-svn-trim-author-name later to maint).

 * "git rebase -i" showed a wrong HEAD while "reword" open the editor.
   (merge b0a3186140 pw/rebase-i-show-HEAD-to-reword later to maint).

 * A few simplification and bugfixes to PCRE interface.
   (merge c581e4a749 ab/pcre-jit-fixes later to maint).

 * PCRE fixes.
   (merge ff61681b46 cb/pcre1-cleanup later to maint).

 * "git range-diff" segfaulted when diff.noprefix configuration was
   used, as it blindly expected the patch it internally generates to
   have the standard a/ and b/ prefixes.  The command now forces the
   internal patch to be built without any prefix, not to be affected
   by any end-user configuration.
   (merge 937b76ed49 js/range-diff-noprefix later to maint).

 * "git stash apply" in a subdirectory of a secondary worktree failed
   to access the worktree correctly, which has been corrected.
   (merge dfd557c978 js/stash-apply-in-secondary-worktree later to maint).

 * The merge-recursive machiery is one of the most complex parts of
   the system that accumulated cruft over time.  This large series
   cleans up the implementation quite a bit.
   (merge b657047719 en/merge-recursive-cleanup later to maint).

 * Pretty-printed command line formatter (used in e.g. reporting the
   command being run by the tracing API) had a bug that lost an
   argument that is an empty string, which has been corrected.
   (merge ce2d7ed2fd gs/sq-quote-buf-pretty later to maint).

 * "git range-diff" failed to handle mode-only change, which has been
   corrected.
   (merge 2b6a9b13ca tg/range-diff-output-update later to maint).

 * Dev support update.
   (merge 4f3c1dc5d6 dl/allow-running-cocci-verbosely later to maint).

 * "git format-patch -o <outdir>" did an equivalent of "mkdir <outdir>"
   not "mkdir -p <outdir>", which was corrected.

 * "git stash save" lost local changes to submodules, which has been
   corrected.
   (merge 556895d0c8 jj/stash-reset-only-toplevel later to maint).

 * The atomic push over smart HTTP transport did not work, which has
   been corrected.
   (merge 6f1194246a bc/smart-http-atomic-push later to maint).

 * Other code cleanup, docfix, build fix, etc.
   (merge d1387d3895 en/fast-import-merge-doc later to maint).
   (merge 1c24a54ea4 bm/repository-layout-typofix later to maint).
   (merge 415b770b88 ds/midx-expire-repack later to maint).
   (merge 19800bdc3f nd/diff-parseopt later to maint).
   (merge 58166c2e9d tg/t0021-racefix later to maint).
   (merge 7027f508c7 dl/compat-cleanup later to maint).
   (merge e770fbfeff jc/test-cleanup later to maint).
   (merge 1fd881d404 rs/trace2-dst-warning later to maint).
   (merge 7e92756751 mh/http-urlmatch-cleanup later to maint).
   (merge 9784f97321 mh/release-commit-memory-fix later to maint).
   (merge 60d198d022 tb/banned-vsprintf-namefix later to maint).
   (merge 80e3658647 rs/help-unknown-ref-does-not-return later to maint).
   (merge 0a8bc7068f dt/remote-helper-doc-re-lock-option later to maint).
   (merge 27fd1e4ea7 en/merge-options-ff-and-friends later to maint).
   (merge 502c386ff9 sg/clean-nested-repo-with-ignored later to maint).
   (merge 26e3d1cbea am/mailmap-andrey-mazo later to maint).
   (merge 47b27c96fa ss/get-time-cleanup later to maint).
   (merge dd2e50a84e jk/commit-graph-cleanup later to maint).
   (merge 4fd39c76e6 cs/pretty-formats-doc-typofix later to maint).
   (merge 40e747e89d dl/submodule-set-branch later to maint).
   (merge 689a146c91 rs/commit-graph-use-list-count later to maint).
   (merge 0eb7c37a8a js/doc-patch-text later to maint).
   (merge 4b3aa170d1 rs/nth-switch-code-simplification later to maint).
   (merge 0d4304c124 ah/doc-submodule-ignore-submodules later to maint).
   (merge af78249463 cc/svn-fe-py-shebang later to maint).
   (merge 7bd97d6dff rs/alias-use-copy-array later to maint).
   (merge c46ebc2496 sg/travis-help-debug later to maint).
   (merge 24c681794f ps/my-first-contribution-alphasort later to maint).
   (merge 75b2c15435 cb/do-not-use-test-cmp-with-a later to maint).
   (merge cda0d497e3 bw/submodule-helper-usage-fix later to maint).
   (merge fe0ed5d5e9 am/visual-studio-config-fix later to maint).
   (merge 2e09c01232 sg/name-rev-cutoff-underflow-fix later to maint).
   (merge ddb3c856f3 as/shallow-slab-use-fix later to maint).
   (merge 71f4960b91 js/mingw-spawn-with-spaces-in-path later to maint).
   (merge 53d687bf5f ah/cleanups later to maint).
   (merge f537485fa5 rs/test-remove-useless-debugging-cat later to maint).
   (merge 11a3d3aadd dl/rev-list-doc-cleanup later to maint).
   (merge d928a8388a am/t0028-utf16-tests later to maint).
   (merge b05b40930e dl/t0000-skip-test-test later to maint).
   (merge 03d3b1297c js/xdiffi-comment-updates later to maint).
   (merge 57d8f4b4c7 js/doc-stash-save later to maint).
   (merge 8c1cfd58e3 ta/t1308-typofix later to maint).
   (merge fa364ad790 bb/utf8-wcwidth-cleanup later to maint).
   (merge 68b69211b2 bb/compat-util-comment-fix later to maint).
   (merge 5cc6a4be11 rs/http-push-simplify later to maint).
   (merge a81e42d235 rs/column-use-utf8-strnwidth later to maint).
   (merge 062a309d36 rs/remote-curl-use-argv-array later to maint).
   (merge 3b3c79f6c9 nr/diff-highlight-indent-fix later to maint).
   (merge 3444ec2eb2 wb/fsmonitor-bitmap-fix later to maint).
   (merge 10da030ab7 cb/pcre2-chartables-leakfix later to maint).
   (merge 60e6569a12 js/mingw-needs-hiding-fix later to maint).
   (merge 52bd3e4657 rl/gitweb-blame-prev-fix later to maint).

----------------------------------------------------------------

Changes since v2.23.0 are as follows:

Adam Roben (1):
      mingw: fix launching of externals from Unicode paths

Alex Henrie (4):
      doc: fix reference to --ignore-submodules
      commit-graph: remove a duplicate assignment
      diffcore-break: use a goto instead of a redundant if statement
      wrapper: use a loop instead of repetitive statements

Alexandr Miloslavskiy (4):
      contrib/buildsystems: fix Visual Studio Debug configuration
      t0028: fix test for UTF-16-LE-BOM
      t0028: add more tests
      t0061: fix test for argv[0] with spaces (MINGW only)

Ali Utku Selen (1):
      shallow.c: don't free unallocated slabs

Andrey Mazo (1):
      .mailmap: update email address of Andrey Mazo

Beat Bolli (3):
      grep: under --debug, show whether PCRE JIT is enabled
      utf8: use ARRAY_SIZE() in git_wcwidth()
      git-compat-util: fix documentation syntax

Ben Milman (1):
      repository-layout.txt: correct pluralization of 'object'

Ben Wijen (2):
      builtin/rebase.c: make sure the active branch isn't moved when autostashing
      builtin/rebase.c: Remove pointless message

Bert Wesarg (5):
      git-gui: convert new/amend commit radiobutton to checkbutton
      git-gui: add horizontal scrollbar to commit buffer
      builtin/submodule--helper: fix usage string for 'update-clone'
      format-patch: create leading components of output directory
      t4014: make output-directory tests self-contained

Birger Skogeng Pedersen (2):
      git-gui: add hotkeys to set widget focus
      git-gui: add hotkey to toggle "Amend Last Commit"

CB Bailey (1):
      t4038: Remove non-portable '-a' option passed to test_cmp

Cameron Steffen (1):
      doc: minor formatting fix

Carlo Marcelo Arenas Belón (7):
      http: use xmalloc with cURL
      grep: make sure NO_LIBPCRE1_JIT disable JIT in PCRE1
      grep: refactor and simplify PCRE1 support
      grep: skip UTF8 checks explicitly
      grep: make PCRE1 aware of custom allocator
      grep: make PCRE2 aware of custom allocator
      grep: avoid leak of chartables in PCRE2

Christian Couder (15):
      t0410: remove pipes after git commands
      fetch-object: make functions return an error code
      Add initial support for many promisor remotes
      promisor-remote: implement promisor_remote_get_direct()
      promisor-remote: add promisor_remote_reinit()
      promisor-remote: use repository_format_partial_clone
      Use promisor_remote_get_direct() and has_promisor_remote()
      promisor-remote: parse remote.*.partialclonefilter
      builtin/fetch: remove unique promisor remote limitation
      t0410: test fetching from many promisor remotes
      partial-clone: add multiple remotes in the doc
      remote: add promisor and partial clone config to the doc
      Remove fetch-object.{c,h} in favor of promisor-remote.{c,h}
      Move repository_format_partial_clone to promisor-remote.c
      Move core_partial_clone_filter_default to promisor-remote.c

Clément Chigot (1):
      contrib/svn-fe: fix shebang for svnrdump_sim.py

Corentin BOMPARD (1):
      pull, fetch: add --set-upstream option

David Turner (1):
      clarify documentation for remote helpers

Denton Liu (50):
      packfile.h: drop extern from function declaration
      t4014: drop unnecessary blank lines from test cases
      t3431: add rebase --fork-point tests
      t3432: test rebase fast-forward behavior
      completion: merge options for cherry-pick and revert
      completion: add --skip for cherry-pick and revert
      status: mention --skip for revert and cherry-pick
      rebase: refactor can_fast_forward into goto tower
      rebase: fast-forward --onto in more cases
      rebase: fast-forward --fork-point in more cases
      rebase: teach rebase --keep-base
      mingw: apply array.cocci rule
      compat/*.[ch]: remove extern from function declarations using spatch
      t4014: s/expected/expect/
      t4014: move closing sq onto its own line
      t4014: use sq for test case names
      t4014: remove spaces after redirect operators
      t4014: use indentable here-docs
      t4014: drop redirections to /dev/null
      t4014: let sed open its own files
      t4014: use test_line_count() where possible
      t4014: remove confusing pipe in check_threading()
      t4014: stop losing return codes of git commands
      Doc: add more detail for git-format-patch
      config/format.txt: specify default value of format.coverLetter
      t: use common $SQ variable
      completion: teach rebase to use __gitcomp_builtin
      completion: teach archive to use __gitcomp_builtin
      git-submodule.txt: fix AsciiDoc formatting error
      Makefile: strip leading ./ in $(LIB_H)
      Makefile: define THIRD_PARTY_SOURCES
      Makefile: strip leading ./ in $(FIND_SOURCE_FILES)
      Makefile: run coccicheck on more source files
      gitk: rename zh_CN.po to zh_cn.po
      promisor-remote.h: drop extern from function declaration
      apply.h: include missing header
      promisor-remote.h: include missing header
      pack-bitmap.h: remove magic number
      Makefile: emulate compile in $(HCO) target better
      test-lib: let test_merge() perform octopus merges
      t4214: use test_merge
      t4214: generate expect in their own test cases
      t4214: explicitly list tags in log
      t4214: demonstrate octopus graph coloring failure
      git-rev-list.txt: prune options in synopsis
      t4014: treat rev-list output as the expected value
      t0000: cover GIT_SKIP_TESTS blindspots
      pthread.h: manually align parameter lists
      Makefile: respect $(V) in %.cocci.patch target
      t7419: change test_must_fail to ! for grep

Derrick Stolee (15):
      repo-settings: consolidate some config settings
      t6501: use 'git gc' in quiet mode
      commit-graph: turn on commit-graph by default
      repo-settings: parse core.untrackedCache
      repo-settings: create feature.manyFiles setting
      repo-settings: create feature.experimental setting
      merge-recursive: introduce an enum for detect_directory_renames values
      checkout: add simple check for 'git checkout -b'
      fetch: add fetch.writeCommitGraph config setting
      treewide: rename 'struct exclude' to 'struct path_pattern'
      treewide: rename 'struct exclude_list' to 'struct pattern_list'
      treewide: rename 'EXCL_FLAG_' to 'PATTERN_FLAG_'
      treewide: rename 'exclude' methods to 'pattern'
      unpack-trees: rename 'is_excluded_from_list()'
      repo-settings: read an int for index.version

Elijah Newren (53):
      git-fast-import.txt: clarify that multiple merge commits are allowed
      checkout: remove duplicate code
      merge-recursive: be consistent with assert
      checkout: provide better conflict hunk description with detached HEAD
      merge-recursive: enforce opt->ancestor != NULL when calling merge_trees()
      merge-recursive: provide a better label for diff3 common ancestor
      merge-recursive: future-proof update_file_flags() against memory leaks
      merge-recursive: remove another implicit dependency on the_repository
      Ensure index matches head before invoking merge machinery, round N
      merge-recursive: exit early if index != head
      merge-recursive: remove useless parameter in merge_trees()
      merge-recursive: don't force external callers to do our logging
      cache-tree: share code between functions writing an index as a tree
      merge-recursive: fix some overly long lines
      merge-recursive: use common name for ancestors/common/base_list
      merge-recursive: rename 'mrtree' to 'result_tree', for clarity
      merge-recursive: rename merge_options argument to opt in header
      merge-recursive: move some definitions around to clean up the header
      merge-recursive: consolidate unnecessary fields in merge_options
      merge-recursive: comment and reorder the merge_options fields
      merge-recursive: avoid losing output and leaking memory holding that output
      merge-recursive: split internal fields into a separate struct
      merge-recursive: rename MERGE_RECURSIVE_* to MERGE_VARIANT_*
      merge-recursive: add sanity checks for relevant merge_options
      merge-recursive: alphabetize include list
      merge-options.txt: clarify meaning of various ff-related options
      t3427: accelerate this test by using fast-export and fast-import
      t6006: simplify, fix, and optimize empty message test
      Recommend git-filter-repo instead of git-filter-branch
      t9902: use a non-deprecated command for testing
      t7300: add testcases showing failure to clean specified pathspecs
      dir: fix typo in comment
      dir: fix off-by-one error in match_pathspec_item
      dir: also check directories for matching pathspecs
      dir: make the DO_MATCH_SUBMODULE code reusable for a non-submodule case
      dir: if our pathspec might match files under a dir, recurse into it
      dir: add commentary explaining match_pathspec_item's return value
      git-clean.txt: do not claim we will delete files with -n/--dry-run
      clean: disambiguate the definition of -d
      clean: avoid removing untracked files in a nested git repository
      clean: rewrap overly long line
      clean: fix theoretical path corruption
      fast-export: fix exporting a tag and nothing else
      dir: special case check for the possibility that pathspec is NULL
      merge-recursive: fix the diff3 common ancestor label for virtual commits
      fast-import: fix handling of deleted tags
      fast-import: allow tags to be identified by mark labels
      fast-import: add support for new 'alias' command
      fast-export: add support for --import-marks-if-exists
      fast-export: allow user to request tags be marked with --mark-tags
      t9350: add tests for tags of things other than a commit
      fast-export: handle nested tags
      merge-recursive: fix the fix to the diff3 common ancestor label

Emily Shaffer (1):
      promisor-remote: skip move_to_tail when no-op

Eric Wong (20):
      diff: use hashmap_entry_init on moved_entry.ent
      coccicheck: detect hashmap_entry.hash assignment
      packfile: use hashmap_entry in delta_base_cache_entry
      hashmap_entry_init takes "struct hashmap_entry *"
      hashmap_get_next takes "const struct hashmap_entry *"
      hashmap_add takes "struct hashmap_entry *"
      hashmap_get takes "const struct hashmap_entry *"
      hashmap_remove takes "const struct hashmap_entry *"
      hashmap_put takes "struct hashmap_entry *"
      introduce container_of macro
      hashmap_get_next returns "struct hashmap_entry *"
      hashmap: use *_entry APIs to wrap container_of
      hashmap_get{,_from_hash} return "struct hashmap_entry *"
      hashmap_cmp_fn takes hashmap_entry params
      hashmap: use *_entry APIs for iteration
      hashmap: hashmap_{put,remove} return hashmap_entry *
      hashmap: introduce hashmap_free_entries
      OFFSETOF_VAR macro to simplify hashmap iterators
      hashmap: remove type arg from hashmap_{get,put,remove}_entry
      hashmap_entry: remove first member requirement from docs

Gabriele Mazzotta (1):
      gitk: Do not mistake unchanged lines for submodule changes

Garima Singh (3):
      commit-graph: add --[no-]progress to write and verify
      commit-graph: emit trace2 cmd_mode for each sub-command
      sq_quote_buf_pretty: don't drop empty arguments

Hervé Beraud (1):
      hg-to-git: make it compatible with both python3 and python2

Jakob Jarmar (1):
      stash: avoid recursive hard reset on submodules

Jeff Hostetler (7):
      trace2: cleanup column alignment in perf target format
      trace2: trim whitespace in region messages in perf target format
      trace2: remove dead code in maybe_add_string_va()
      trace2: trim trailing whitespace in normal format error message
      quote: add sq_append_quote_argv_pretty()
      trace2: cleanup whitespace in normal format
      trace2: cleanup whitespace in perf format

Jeff King (32):
      setup_traverse_info(): stop copying oid
      tree-walk: drop oid from traverse_info
      tree-walk: use size_t consistently
      tree-walk: accept a raw length for traverse_path_len()
      tree-walk: add a strbuf wrapper for make_traverse_path()
      tree-walk: harden make_traverse_path() length computations
      revision: allow --end-of-options to end option parsing
      parse-options: allow --end-of-options as a synonym for "--"
      gitcli: document --end-of-options
      t1309: use short branch name in includeIf.onbranch test
      common-main: delay trace2 initialization
      config: stop checking whether the_repository is NULL
      t/perf: rename duplicate-numbered test script
      packfile: drop release_pack_memory()
      notes: avoid potential use-after-free during insertion
      fast-import: duplicate parsed encoding string
      fast-import: duplicate into history rather than passing ownership
      git-am: handle missing "author" when parsing commit
      pack-objects: use object_id in packlist_alloc()
      bulk-checkin: zero-initialize hashfile_checkpoint
      diff-delta: set size out-parameter to 0 for NULL delta
      test-read-cache: drop namelen variable
      pack-objects: drop packlist index_pos optimization
      commit-graph: turn off save_commit_buffer
      list-objects: don't queue root trees unless revs->tree_objects is set
      commit-graph: bump DIE_ON_LOAD check to actual load-time
      upload-pack: disable commit graph more gently for shallow traversal
      list-objects-filter: delay parsing of sparse oid
      list-objects-filter: use empty string instead of NULL for sparse "base"
      git_mkstemps_mode(): replace magic numbers with computed value
      add a Code of Conduct document
      CODE_OF_CONDUCT: mention individual project-leader emails

Johannes Schindelin (45):
      Drop unused git-rebase--am.sh
      t3400: stop referring to the scripted rebase
      .gitignore: there is no longer a built-in `git-rebase--interactive`
      sequencer: the `am` and `rebase--interactive` scripts are gone
      rebase: fold git-rebase--common into the -p backend
      t3427: add a clarifying comment
      t3427: simplify the `setup` test case significantly
      t3427: move the `filter-branch` invocation into the `setup` case
      t3427: condense the unnecessarily repetitive test cases into three
      t3427: fix erroneous assumption
      t3427: accommodate for the `rebase --merge` backend having been replaced
      t3427: fix another incorrect assumption
      rebase -r: support merge strategies other than `recursive`
      t/lib-rebase: prepare for testing `git rebase --rebase-merges`
      t3418: test `rebase -r` with merge strategies
      rebase -r: do not (re-)generate root commits with `--root` *and* `--onto`
      setup_git_directory(): handle UNC paths correctly
      Fix .git/ discovery at the root of UNC shares
      setup_git_directory(): handle UNC root paths correctly
      .gitignore: stop ignoring `.manifest` files
      Move git_sort(), a stable sort, into into libgit.a
      diffcore_rename(): use a stable sort
      ci: run `hdr-check` as part of the `Static Analysis` job
      range-diff: internally force `diff.noprefix=true`
      push: do not pretend to return `int` from `die_push_simple()`
      fetch: let --jobs=<n> parallelize --multiple, too
      stash apply: report status correctly even in a worktree's subdirectory
      msvc: avoid using minus operator on unsigned types
      winansi: use FLEX_ARRAY to avoid compiler warning
      compat/win32/path-utils.h: add #include guards
      msvc: ignore some libraries when linking
      msvc: handle DEVELOPER=1
      msvc: work around a bug in GetEnvironmentVariable()
      vcxproj: only copy `git-remote-http.exe` once it was built
      vcxproj: include more generated files
      test-tool run-command: learn to run (parts of) the testsuite
      tests: let --immediate and --write-junit-xml play well together
      ci: really use shallow clones on Azure Pipelines
      ci: also build and test with MS Visual Studio on Azure Pipelines
      xdiffi: fix typos and touch up comments
      doc(stash): clarify the description of `save`
      ci(visual-studio): use strict compile flags, and optimization
      ci(visual-studio): actually run the tests in parallel
      ci(osx): use new location of the `perforce` cask
      mingw: avoid a buffer overrun in `needs_hiding()`

Johannes Sixt (2):
      diff, log doc: say "patch text" instead of "patches"
      diff, log doc: small grammer, format, and language fixes

Jon Simons (2):
      t5616: test cloning/fetching with sparse:oid=<oid> filter
      list-objects-filter: give a more specific error sparse parsing error

Jonathan Tan (6):
      diff: skip GITLINK when lazy fetching missing objs
      transport-helper: skip ls-refs if unnecessary
      transport: teach all vtables to allow fetch first
      cache-tree: do not lazy-fetch tentative tree
      merge-recursive: symlink's descendants not in way
      send-pack: never fetch when checking exclusions

Josh Steadmon (7):
      t7503: verify proper hook execution
      fetch: add trace2 instrumentation
      push: add trace2 instrumentation
      docs: mention trace2 target-dir mode in git-config
      docs: clarify trace2 version invariants
      trace2: discard new traces if target directory has too many files
      trace2: write discard message to sentinel files

Junio C Hamano (17):
      First batch after Git 2.23
      t: use LF variable defined in the test harness
      t3005: remove unused variable
      Second batch
      Third batch
      SubmittingPatches: git-gui has a new maintainer
      Fourth batch
      Fifth batch
      Sixth batch
      transport: push codepath can take arbitrary repository
      Seventh batch
      Eighth batch
      Ninth batch
      Git 2.24-rc0
      Eleventh batch
      Git 2.24-rc1
      Git 2.24-rc2

Kunal Tyagi (1):
      add -i: show progress counter in the prompt

Martin Ågren (14):
      Documentation: wrap blocks with "--"
      git-merge-base.txt: render indentations correctly under Asciidoctor
      Documentation: wrap config listings in "----"
      git-ls-remote.txt: wrap shell listing in "----"
      git-receive-pack.txt: wrap shell [script] listing in "----"
      git-merge-index.txt: wrap shell listing in "----"
      gitweb.conf.txt: switch pluses to backticks to help Asciidoctor
      Doc/Makefile: give mansource/-version/-manual attributes
      asciidoctor-extensions: provide `<refmiscinfo/>`
      doc-diff: replace --cut-header-footer with --cut-footer
      user-manual.txt: add missing section label
      user-manual.txt: change header notation
      asciidoctor-extensions.rb: handle "book" doctype in linkgit
      user-manual.txt: render ASCII art correctly under Asciidoctor

Masaya Suzuki (1):
      fetch: use oidset to keep the want OIDs for faster lookup

Matheus Tavares (1):
      grep: fix worktree case in submodules

Matthew DeVore (10):
      list-objects-filter: encapsulate filter components
      list-objects-filter: put omits set in filter struct
      list-objects-filter-options: always supply *errbuf
      list-objects-filter: implement composite filters
      list-objects-filter-options: move error check up
      list-objects-filter-options: make filter_spec a string_list
      strbuf: give URL-encoding API a char predicate fn
      list-objects-filter-options: allow mult. --filter
      list-objects-filter-options: clean up use of ALLOC_GROW
      list-objects-filter-options: make parser void

Max Rothman (1):
      completion: add missing completions for log, diff, show

Maxim Belsky (1):
      completion: clarify installation instruction for zsh

Michael J Gruber (3):
      merge: do no-verify like commit
      git-merge: honor pre-merge-commit hook
      merge: --no-verify to bypass pre-merge-commit hook

Mike Hommey (3):
      notes: avoid leaking duplicate entries
      commit: free the right buffer in release_commit_memory
      http: don't leak urlmatch_config.vars

Mischa POSLAWSKY (1):
      ref-filter: initialize empty name or email fields

Norman Rasmussen (1):
      diff-highlight: fix a whitespace nit

Paul Mackerras (1):
      gitk: Make web links clickable

Paul Wise (1):
      gitk: Use right colour for remote refs in the "Tags and heads" dialog

Pedro Sousa (1):
      doc: MyFirstContribution: fix cmd placement instructions

Philip.McGraw (1):
      git-p4: auto-delete named temporary file

Phillip Wood (3):
      rebase -i: always update HEAD before rewording
      rebase -i: check for updated todo after squash and reword
      sequencer: simplify root commit creation

Pratyush Yadav (6):
      git-gui: call do_quit before destroying the main window
      git-gui: allow reverting selected lines
      git-gui: allow reverting selected hunk
      git-gui: return early when patch fails to apply
      git-gui: allow undoing last revert
      Documentation: update the location of the git-gui repo

René Scharfe (28):
      nedmalloc: do assignments only after the declaration section
      nedmalloc: avoid compiler warning about unused value
      archive-tar: report wrong pax extended header length
      archive-tar: fix pax extended header length calculation
      archive-tar: use size_t in strbuf_append_ext_header()
      archive-tar: turn length miscalculation warning into BUG
      parseopt: move definition of enum parse_opt_result up
      sha1-name: make sort_ambiguous_oid_array() thread-safe
      log-tree: always use return value of strbuf_detach()
      grep: use return value of strbuf_detach()
      trace2: use warning() directly in tr2_dst_malformed_warning()
      help: make help_unknown_ref() NORETURN
      tree: simplify parse_tree_indirect()
      tag: factor out get_tagged_oid()
      use get_tagged_oid()
      log: test --decorate-refs-exclude with --simplify-by-decoration
      log-tree: call load_ref_decorations() in get_name_decoration()
      rev-parse: demonstrate overflow of N for "foo^N" and "foo~N"
      sha1-name: check for overflow of N in "foo^N" and "foo~N"
      commit-graph: use commit_list_count()
      sha1_name: simplify strbuf handling in interpret_nth_prior_checkout()
      git: use COPY_ARRAY and MOVE_ARRAY in handle_alias()
      treewide: remove duplicate #include directives
      convert: fix handling of dashless UTF prefix in validate_encoding()
      tests: remove "cat foo" before "test_i18ngrep bar foo"
      http-push: simplify deleting a list item
      column: use utf8_strnwidth() to strip out ANSI color escapes
      remote-curl: use argv_array in parse_push()

Robert Luberda (1):
      gitweb: correctly store previous rev in javascript-actions mode

SZEDER Gábor (35):
      t5510-fetch: fix negated 'test_i18ngrep' invocation
      t5510-fetch: run non-httpd-specific test before sourcing 'lib-httpd.sh'
      t5703: run all non-httpd-specific tests before sourcing 'lib-httpd.sh'
      t: warn against adding non-httpd-specific tests after sourcing 'lib-httpd'
      t5318-commit-graph: use 'test_expect_code'
      commit-graph: turn a group of write-related macro flags into an enum
      commit-graph: error out on invalid commit oids in 'write --stdin-commits'
      t0000-basic: use realistic test script names in the verbose tests
      tests: show the test name and number at the start of verbose output
      completion: fix a typo in a comment
      completion: complete more values of more 'color.*' configuration variables
      completion: add tests for 'git config' completion
      completion: deduplicate configuration sections
      completion: use 'sort -u' to deduplicate config variable names
      completion: simplify inner 'case' pattern in __gitcomp()
      completion: split _git_config()
      completion: complete configuration sections and variable names for 'git -c'
      completion: complete values of configuration variables after 'git -c var='
      completion: complete config variables names and values for 'git clone -c'
      completion: complete config variables and values for 'git clone --config='
      worktree remove: clarify error message on dirty worktree
      diff: 'diff.indentHeuristic' is no longer experimental
      line-log: extract pathspec parsing from line ranges into a helper function
      line-log: avoid unnecessary full tree diffs
      t7300-clean: demonstrate deleting nested repo with an ignored file breakage
      t/lib-git-svn.sh: check GIT_TEST_SVN_HTTPD when running SVN HTTP tests
      ci: restore running httpd tests
      commit-graph: don't show progress percentages while expanding reachable commits
      Revert "progress: use term_clear_line()"
      Test the progress display
      t/helper: ignore only executable files
      travis-ci: do not skip successfully tested trees in debug mode
      name-rev: avoid cutoff timestamp underflow
      test-progress: fix test failures on big-endian systems
      ci: fix GCC install in the Travis CI GCC OSX job

Stephen Boyd (2):
      userdiff: add a builtin pattern for dts files
      userdiff: fix some corner cases in dts regex

Stephen P. Smith (2):
      Quit passing 'now' to date code
      test_date.c: remove reference to GIT_TEST_DATE_NOW

Sun Chao (1):
      pack-refs: always refresh after taking the lock file

Tanay Abhra (1):
      t1308-config-set: fix a test that has a typo

Taylor Blau (4):
      banned.h: fix vsprintf()'s ban message
      t/t5318: introduce failing 'git commit-graph write' tests
      commit-graph.c: handle commit parsing errors
      commit-graph.c: handle corrupt/missing trees

Thomas Gummerer (6):
      t0021: make sure clean filter runs
      push: disallow --all and refspecs when remote.<name>.mirror is set
      factor out refresh_and_write_cache function
      merge: use refresh_and_write_cache
      stash: make sure to write refreshed cache
      range-diff: don't segfault with mode-only changes

Tobias Klauser (1):
      git-svn: trim leading and trailing whitespaces in author name

Torsten Bögershausen (1):
      mingw: support UNC in git clone file://server/share/repo

Varun Naik (2):
      checkout.c: unstage empty deleted ita files
      restore: add test for deleted ita files

William Baker (2):
      fsmonitor: don't fill bitmap with entries to be removed
      t7519-status-fsmonitor: improve comments

YanKe (1):
      gitk: Add Chinese (zh_CN) translation

brian m. carlson (44):
      builtin/replace: make hash size independent
      patch-id: convert to use the_hash_algo
      fetch-pack: use parse_oid_hex
      builtin/receive-pack: switch to use the_hash_algo
      builtin/blame: switch uses of GIT_SHA1_HEXSZ to the_hash_algo
      builtin/rev-parse: switch to use the_hash_algo
      blame: remove needless comparison with GIT_SHA1_HEXSZ
      show-index: switch hard-coded constants to the_hash_algo
      connected: switch GIT_SHA1_HEXSZ to the_hash_algo
      bundle: switch to use the_hash_algo
      combine-diff: replace GIT_SHA1_HEXSZ with the_hash_algo
      config: use the_hash_algo in abbrev comparison
      sha1-lookup: switch hard-coded constants to the_hash_algo
      bisect: switch to using the_hash_algo
      sequencer: convert to use the_hash_algo
      pack-write: use hash_to_hex when writing checksums
      builtin/repack: write object IDs of the proper length
      builtin/worktree: switch null_sha1 to null_oid
      cache: remove null_sha1
      wt-status: convert struct wt_status to object_id
      packfile: replace sha1_to_hex
      builtin/index-pack: replace sha1_to_hex
      builtin/receive-pack: replace sha1_to_hex
      rerere: replace sha1_to_hex
      builtin/show-index: replace sha1_to_hex
      midx: switch to using the_hash_algo
      t3201: abstract away SHA-1-specific constants
      t3206: abstract away hash size constants
      t3301: abstract away SHA-1-specific constants
      t3305: make hash size independent
      t3306: abstract away SHA-1-specific constants
      t3404: abstract away SHA-1-specific constants
      t3430: avoid hard-coded object IDs
      t3506: make hash independent
      t3600: make hash size independent
      t3800: make hash-size independent
      t3903: abstract away SHA-1-specific constants
      t4000: make hash size independent
      t4002: make hash independent
      t4009: make hash size independent
      path: add a function to check for path suffix
      am: reload .gitattributes after patching it
      Documentation: fix build with Asciidoctor 2
      remote-curl: pass on atomic capability to remote side

Ævar Arnfjörð Bjarmason (20):
      log tests: test regex backends in "--encode=<enc>" tests
      grep: don't use PCRE2?_UTF8 with "log --encoding=<non-utf8>"
      t4210: skip more command-line encoding tests on MinGW
      grep: inline the return value of a function call used only once
      grep tests: move "grep binary" alongside the rest
      grep tests: move binary pattern tests into their own file
      grep: make the behavior for NUL-byte in patterns sane
      grep: drop support for \0 in --fixed-strings <pattern>
      grep: remove the kwset optimization
      grep: use PCRE v2 for optimized fixed-string search
      grep: remove overly paranoid BUG(...) code
      grep: stop "using" a custom JIT stack with PCRE v2
      grep: stop using a custom JIT stack with PCRE v1
      grep: consistently use "p->fixed" in compile_regexp()
      grep: create a "is_fixed" member in "grep_pat"
      grep: stess test PCRE v2 on invalid UTF-8 data
      grep: do not enter PCRE2_UTF mode on fixed matching
      t3432: distinguish "noop-same" v.s. "work-same" in "same head" tests
      t3432: test for --no-ff's interaction with fast-forward
      rebase tests: test linear branch topology


^ permalink raw reply	[relevance 2%]

* Re: [ANNOUNCE] Git v2.24.0-rc1
  2019-10-24  6:00  2% [ANNOUNCE] Git v2.24.0-rc1 Junio C Hamano
@ 2019-10-30  6:56  0% ` Elijah Newren
  2019-10-30 20:52  0%   ` Elijah Newren
  2019-11-02  3:25  0%   ` Junio C Hamano
  0 siblings, 2 replies; 25+ results
From: Elijah Newren @ 2019-10-30  6:56 UTC (permalink / raw)
  To: Junio C Hamano; +Cc: Git Mailing List

Hi Junio,

A couple questions on the release notes...

On Thu, Oct 24, 2019 at 1:35 PM Junio C Hamano <gitster@pobox.com> wrote:
> Git 2.24 Release Notes (draft)
> ==============================
>
> Updates since v2.23
> -------------------
>
> Backward compatibility note
>
>  * Although it is not officially deprecated, "filter-branch" is
>    showing its age and alternatives are available.  From this release,
>    we started to discourage its uses and hint people about
>    filter-repo.

What do you mean by deprecation, then?

My understanding has always been that deprecation meant "supported but
discouraged", which is exactly what we're doing.  We also run the risk
of people seeing "not officially deprecated" in the release notes,
then being very confused why the documentation and the program itself
is discouraging its own use and wonder if they configured things wrong
or got the wrong version of git ("The release notes says it isn't
deprecated, but whatever version I'm running definitely does have it
deprecated.  What'd I do wrong??").

>  * The merge-recursive machiery is one of the most complex parts of

I fixed this "machiery" typo in en/doc-typofix but as that hasn't even
merged down to next yet, I'm wondering if you're planning to include
that in the release.  Should I provide a subset of those fixes in a
separate patch for inclusion in the 2.24 release?  Which of the types
of doc typo fixes would you want to see at this point for including?

^ permalink raw reply	[relevance 0%]

* [ANNOUNCE] Git v2.24.0-rc1
@ 2019-10-24  6:00  2% Junio C Hamano
  2019-10-30  6:56  0% ` Elijah Newren
  0 siblings, 1 reply; 25+ results
From: Junio C Hamano @ 2019-10-24  6:00 UTC (permalink / raw)
  To: git; +Cc: Linux Kernel, git-packagers

A release candidate Git v2.24.0-rc1 is now available for testing
at the usual places.  It is comprised of 511 non-merge commits
since v2.23.0, contributed by 66 people, 18 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.24.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.23.0 are as follows.
Welcome to the Git development community!

  Alexandr Miloslavskiy, Ali Utku Selen, Ben Milman, Cameron
  Steffen, CB Bailey, Garima Singh, Hervé Beraud, Jakob Jarmar,
  Kunal Tyagi, Maxim Belsky, Max Rothman, Norman Rasmussen, Paul
  Wise, Pedro Sousa, Philip.McGraw, Pratyush Yadav, William Baker,
  and YanKe.

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

  Adam Roben, Ævar Arnfjörð Bjarmason, Alex Henrie, Andrey Mazo,
  Beat Bolli, Ben Wijen, Bert Wesarg, Birger Skogeng Pedersen,
  brian m. carlson, Carlo Marcelo Arenas Belón, Christian
  Couder, Clément Chigot, Corentin BOMPARD, David Turner,
  Denton Liu, Derrick Stolee, Elijah Newren, Emily Shaffer,
  Eric Wong, Gabriele Mazzotta, Jeff Hostetler, Jeff King,
  Johannes Schindelin, Johannes Sixt, Jonathan Tan, Jon Simons,
  Josh Steadmon, Junio C Hamano, Martin Ågren, Masaya Suzuki,
  Matheus Tavares, Matthew DeVore, Michael J Gruber, Mike Hommey,
  Mischa POSLAWSKY, Paul Mackerras, Phillip Wood, René Scharfe,
  Stephen Boyd, Stephen P. Smith, Sun Chao, SZEDER Gábor,
  Tanay Abhra, Taylor Blau, Thomas Gummerer, Tobias Klauser,
  Torsten Bögershausen, and Varun Naik.

----------------------------------------------------------------

Git 2.24 Release Notes (draft)
==============================

Updates since v2.23
-------------------

Backward compatibility note

 * Although it is not officially deprecated, "filter-branch" is
   showing its age and alternatives are available.  From this release,
   we started to discourage its uses and hint people about
   filter-repo.

UI, Workflows & Features

 * We now have an active interim maintainer for the Git-Gui part of
   the system.  Praise and thank Pratyush Yadav for volunteering.

 * The command line parser learned "--end-of-options" notation; the
   standard convention for scripters to have hardcoded set of options
   first on the command line, and force the command to treat end-user
   input as non-options, has been to use "--" as the delimiter, but
   that would not work for commands that use "--" as a delimiter
   between revs and pathspec.

 * A mechanism to affect the default setting for a (related) group of
   configuration variables is introduced.

 * "git fetch" learned "--set-upstream" option to help those who first
   clone from their private fork they intend to push to, add the true
   upstream via "git remote add" and then "git fetch" from it.

 * Device-tree files learned their own userdiff patterns.
   (merge 3c81760bc6 sb/userdiff-dts later to maint).

 * "git rebase --rebase-merges" learned to drive different merge
   strategies and pass strategy specific options to them.

 * A new "pre-merge-commit" hook has been introduced.

 * Command line completion updates for "git -c var.name=val" have been
   added.

 * The lazy clone machinery has been taught that there can be more
   than one promisor remote and consult them in order when downloading
   missing objects on demand.

 * The list-objects-filter API (used to create a sparse/lazy clone)
   learned to take a combined filter specification.

 * The documentation and tests for "git format-patch" have been
   cleaned up.

 * On Windows, the root level of UNC share is now allowed to be used
   just like any other directory.

 * The command line completion support (in contrib/) learned about the
   "--skip" option of "git revert" and "git cherry-pick".

 * "git rebase --keep-base <upstream>" tries to find the original base
   of the topic being rebased and rebase on top of that same base,
   which is useful when running the "git rebase -i" (and its limited
   variant "git rebase -x").

   The command also has learned to fast-forward in more cases where it
   can instead of replaying to recreate identical commits.

 * A configuration variable tells "git fetch" to write the commit
   graph after finishing.

 * "git add -i" has been taught to show the total number of hunks and
   the hunks that has been processed so far when showing prompts.

 * "git fetch --jobs=<n>" allowed <n> parallel jobs when fetching
   submodules, but this did not apply to "git fetch --multiple" that
   fetches from multiple remote repositories.  It now does.

 * The installation instruction for zsh completion script (in
   contrib/) has been a bit improved.


Performance, Internal Implementation, Development Support etc.

 * The code to write commit-graph over given commit object names has
   been made a bit more robust.

 * The first line of verbose output from each test piece now carries
   the test name and number to help scanning with eyeballs.

 * Further clean-up of the initialization code.

 * xmalloc() used to have a mechanism to ditch memory and address
   space resources as the last resort upon seeing an allocation
   failure from the underlying malloc(), which made the code complex
   and thread-unsafe with dubious benefit, as major memory resource
   users already do limit their uses with various other mechanisms.
   It has been simplified away.

 * Unnecessary full-tree diff in "git log -L" machinery has been
   optimized away.

 * The http transport lacked some optimization the native transports
   learned to avoid unnecessary ref advertisement, which has been
   corrected.

 * Preparation for SHA-256 upgrade continues in the test department.
   (merge 0c37c41d13 bc/hash-independent-tests-part-5 later to maint).

 * The memory ownership model of the "git fast-import" got
   straightened out.

 * Output from trace2 subsystem is formatted more prettily now.

 * The internal code originally invented for ".gitignore" processing
   got reshuffled and renamed to make it less tied to "excluding" and
   stress more that it is about "matching", as it has been reused for
   things like sparse checkout specification that want to check if a
   path is "included".

 * "git stash" learned to write refreshed index back to disk.

 * Coccinelle checks are done on more source files than before now.

 * The cache-tree code has been taught to be less aggressive in
   attempting to see if a tree object it computed already exists in
   the repository.

 * The code to parse and use the commit-graph file has been made more
   robust against corrupted input.

 * The hg-to-git script (in contrib/) has been updated to work with
   Python 3.

 * Update the way build artifacts in t/helper/ directory are ignored.

 * Preparation for SHA-256 upgrade continues.

 * "git log --graph" for an octopus merge is sometimes colored
   incorrectly, which is demonstrated and documented but not yet
   fixed.

 * The trace2 output, when sending them to files in a designated
   directory, can populate the directory with too many files; a
   mechanism is introduced to set the maximum number of files and
   discard further logs when the maximum is reached.

 * We have adopted a Code-of-conduct document.
   (merge 3f9ef874a7 jk/coc later to maint).


Fixes since v2.23
-----------------

 * "git grep --recurse-submodules" that looks at the working tree
   files looked at the contents in the index in submodules, instead of
   files in the working tree.
   (merge 6a289d45c0 mt/grep-submodules-working-tree later to maint).

 * Codepaths to walk tree objects have been audited for integer
   overflows and hardened.
   (merge 5aa02f9868 jk/tree-walk-overflow later to maint).

 * "git pack-refs" can lose refs that are created while running, which
   is getting corrected.
   (merge a613d4f817 sc/pack-refs-deletion-racefix later to maint).

 * "git checkout" and "git restore" to re-populate the index from a
   tree-ish (typically HEAD) did not work correctly for a path that
   was removed and then added again with the intent-to-add bit, when
   the corresponding working tree file was empty.  This has been
   corrected.

 * Compilation fix.
   (merge 70597e8386 rs/nedalloc-fixlets later to maint).

 * "git gui" learned to call the clean-up procedure before exiting.
   (merge 0d88f3d2c5 py/git-gui-do-quit later to maint).

 * We promoted the "indent heuristics" that decides where to split
   diff hunks from experimental to the default a few years ago, but
   some stale documentation still marked it as experimental, which has
   been corrected.
   (merge 64e5e1fba1 sg/diff-indent-heuristic-non-experimental later to maint).

 * Fix a mismerge that happened in 2.22 timeframe.
   (merge acb7da05ac en/checkout-mismerge-fix later to maint).

 * "git archive" recorded incorrect length in extended pax header in
   some corner cases, which has been corrected.
   (merge 71d41ff651 rs/pax-extended-header-length-fix later to maint).

 * On-demand object fetching in lazy clone incorrectly tried to fetch
   commits from submodule projects, while still working in the
   superproject, which has been corrected.
   (merge a63694f523 jt/diff-lazy-fetch-submodule-fix later to maint).

 * Prepare get_short_oid() codepath to be thread-safe.
   (merge 7cfcb16b0e rs/sort-oid-array-thread-safe later to maint).

 * "for-each-ref" and friends that show refs did not protect themselves
   against ancient tags that did not record tagger names when asked to
   show "%(taggername)", which have been corrected.
   (merge 8b3f33ef11 mp/for-each-ref-missing-name-or-email later to maint).

 * The "git am" based backend of "git rebase" ignored the result of
   updating ".gitattributes" done in one step when replaying
   subsequent steps.
   (merge 2c65d90f75 bc/reread-attributes-during-rebase later to maint).

 * Tell cURL library to use the same malloc() implementation, with the
   xmalloc() wrapper, as the rest of the system, for consistency.
   (merge 93b980e58f cb/curl-use-xmalloc later to maint).

 * Build fix to adjust .gitignore to unignore a path that we started to track.
   (merge aac6ff7b5b js/visual-studio later to maint).

 * A few implementation fixes in the notes API.
   (merge 60fe477a0b mh/notes-duplicate-entries later to maint).

 * Fix an earlier regression to "git push --all" which should have
   been forbidden when the target remote repository is set to be a
   mirror.
   (merge 8e4c8af058 tg/push-all-in-mirror-forbidden later to maint).

 * Fix an earlier regression in the test suite, which mistakenly
   stopped running HTTPD tests.
   (merge 3960290675 sg/git-test-boolean later to maint).

 * "git rebase --autostash <upstream> <branch>", when <branch> is
   different from the current branch, incorrectly moved the tip of the
   current branch, which has been corrected.
   (merge bf1e28e0ad bw/rebase-autostash-keep-current-branch later to maint).

 * Update support for Asciidoctor documentation toolchain.
   (merge 83b0b8953e ma/asciidoctor-refmiscinfo later to maint).

 * Start using DocBook 5 (instead of DocBook 4.5) as Asciidoctor 2.0
   no longer works with the older one.
   (merge f6461b82b9 bc/doc-use-docbook-5 later to maint).

 * The markup used in user-manual has been updated to work better with
   asciidoctor.
   (merge c4d2f6143a ma/user-manual-markup-update later to maint).

 * Make sure the grep machinery does not abort when seeing a payload
   that is not UTF-8 even when JIT is not in use with PCRE1.
   (merge ad7c543e3b cb/skip-utf8-check-with-pcre1 later to maint).

 * The name of the blob object that stores the filter specification
   for sparse cloning/fetching was interpreted in a wrong place in the
   code, causing Git to abort.

 * "git log --decorate-refs-exclude=<pattern>" was incorrectly
   overruled when the "--simplify-by-decoration" option is used, which
   has been corrected.
   (merge 0cc7380d88 rs/simplify-by-deco-with-deco-refs-exclude later to maint).

 * The "upload-pack" (the counterpart of "git fetch") needs to disable
   commit-graph when responding to a shallow clone/fetch request, but
   the way this was done made Git panic, which has been corrected.

 * The object traversal machinery has been optimized not to load tree
   objects when we are only interested in commit history.
   (merge 72ed80c784 jk/list-objects-optim-wo-trees later to maint).

 * The object name parser for "Nth parent" syntax has been made more
   robust against integer overflows.
   (merge 59fa5f5a25 rs/nth-parent-parse later to maint).

 * The code used in following tags in "git fetch" has been optimized.
   (merge b7e2d8bca5 ms/fetch-follow-tag-optim later to maint).

 * Regression fix for progress output.
   (merge 2bb74b53a4 sg/progress-fix later to maint).

 * A bug in merge-recursive code that triggers when a branch with a
   symbolic link is merged with a branch that replaces it with a
   directory has been fixed.
   (merge 83e3ad3b12 jt/merge-recursive-symlink-is-not-a-dir-in-way later to maint).

 * The rename detection logic sorts a list of rename source candidates
   by similarity to pick the best candidate, which means that a tie
   between sources with the same similarity is broken by the original
   location in the original candidate list (which is sorted by path).
   Force the sorting by similarity done with a stable sort, which is
   not promised by system supplied qsort(3), to ensure consistent
   results across platforms.
   (merge 2049b8dc65 js/diff-rename-force-stable-sort later to maint).

 * The code to skip "UTF" and "UTF-" prefix, when computing an advice
   message, did not work correctly when the prefix was "UTF", which
   has been fixed.
   (merge b181676ce9 rs/convert-fix-utf-without-dash later to maint).

 * The author names taken from SVN repositories may have extra leading
   or trailing whitespaces, which are now munged away.
   (merge 4ddd4bddb1 tk/git-svn-trim-author-name later to maint).

 * "git rebase -i" showed a wrong HEAD while "reword" open the editor.
   (merge b0a3186140 pw/rebase-i-show-HEAD-to-reword later to maint).

 * A few simplification and bugfixes to PCRE interface.
   (merge c581e4a749 ab/pcre-jit-fixes later to maint).

 * PCRE fixes.
   (merge ff61681b46 cb/pcre1-cleanup later to maint).

 * "git range-diff" segfaulted when diff.noprefix configuration was
   used, as it blindly expected the patch it internally generates to
   have the standard a/ and b/ prefixes.  The command now forces the
   internal patch to be built without any prefix, not to be affected
   by any end-user configuration.
   (merge 937b76ed49 js/range-diff-noprefix later to maint).

 * "git stash apply" in a subdirectory of a secondary worktree failed
   to access the worktree correctly, which has been corrected.
   (merge dfd557c978 js/stash-apply-in-secondary-worktree later to maint).

 * The merge-recursive machiery is one of the most complex parts of
   the system that accumulated cruft over time.  This large series
   cleans up the implementation quite a bit.
   (merge b657047719 en/merge-recursive-cleanup later to maint).

 * Pretty-printed command line formatter (used in e.g. reporting the
   command being run by the tracing API) had a bug that lost an
   argument that is an empty string, which has been corrected.
   (merge ce2d7ed2fd gs/sq-quote-buf-pretty later to maint).

 * "git range-diff" failed to handle mode-only change, which has been
   corrected.
   (merge 2b6a9b13ca tg/range-diff-output-update later to maint).

 * Dev support update.
   (merge 4f3c1dc5d6 dl/allow-running-cocci-verbosely later to maint).

 * "git format-patch -o <outdir>" did an equivalent of "mkdir <outdir>"
   not "mkdir -p <outdir>", which was corrected.

 * "git stash save" lost local changes to submodules, which has been
   corrected.
   (merge 556895d0c8 jj/stash-reset-only-toplevel later to maint).

 * The atomic push over smart HTTP transport did not work, which has
   been corrected.
   (merge 6f1194246a bc/smart-http-atomic-push later to maint).

 * Other code cleanup, docfix, build fix, etc.
   (merge d1387d3895 en/fast-import-merge-doc later to maint).
   (merge 1c24a54ea4 bm/repository-layout-typofix later to maint).
   (merge 415b770b88 ds/midx-expire-repack later to maint).
   (merge 19800bdc3f nd/diff-parseopt later to maint).
   (merge 58166c2e9d tg/t0021-racefix later to maint).
   (merge 7027f508c7 dl/compat-cleanup later to maint).
   (merge e770fbfeff jc/test-cleanup later to maint).
   (merge 1fd881d404 rs/trace2-dst-warning later to maint).
   (merge 7e92756751 mh/http-urlmatch-cleanup later to maint).
   (merge 9784f97321 mh/release-commit-memory-fix later to maint).
   (merge 60d198d022 tb/banned-vsprintf-namefix later to maint).
   (merge 80e3658647 rs/help-unknown-ref-does-not-return later to maint).
   (merge 0a8bc7068f dt/remote-helper-doc-re-lock-option later to maint).
   (merge 27fd1e4ea7 en/merge-options-ff-and-friends later to maint).
   (merge 502c386ff9 sg/clean-nested-repo-with-ignored later to maint).
   (merge 26e3d1cbea am/mailmap-andrey-mazo later to maint).
   (merge 47b27c96fa ss/get-time-cleanup later to maint).
   (merge dd2e50a84e jk/commit-graph-cleanup later to maint).
   (merge 4fd39c76e6 cs/pretty-formats-doc-typofix later to maint).
   (merge 40e747e89d dl/submodule-set-branch later to maint).
   (merge 689a146c91 rs/commit-graph-use-list-count later to maint).
   (merge 0eb7c37a8a js/doc-patch-text later to maint).
   (merge 4b3aa170d1 rs/nth-switch-code-simplification later to maint).
   (merge 0d4304c124 ah/doc-submodule-ignore-submodules later to maint).
   (merge af78249463 cc/svn-fe-py-shebang later to maint).
   (merge 7bd97d6dff rs/alias-use-copy-array later to maint).
   (merge c46ebc2496 sg/travis-help-debug later to maint).
   (merge 24c681794f ps/my-first-contribution-alphasort later to maint).
   (merge 75b2c15435 cb/do-not-use-test-cmp-with-a later to maint).
   (merge cda0d497e3 bw/submodule-helper-usage-fix later to maint).
   (merge fe0ed5d5e9 am/visual-studio-config-fix later to maint).
   (merge 2e09c01232 sg/name-rev-cutoff-underflow-fix later to maint).
   (merge ddb3c856f3 as/shallow-slab-use-fix later to maint).
   (merge 71f4960b91 js/mingw-spawn-with-spaces-in-path later to maint).
   (merge 53d687bf5f ah/cleanups later to maint).
   (merge f537485fa5 rs/test-remove-useless-debugging-cat later to maint).
   (merge 11a3d3aadd dl/rev-list-doc-cleanup later to maint).
   (merge d928a8388a am/t0028-utf16-tests later to maint).
   (merge b05b40930e dl/t0000-skip-test-test later to maint).
   (merge 03d3b1297c js/xdiffi-comment-updates later to maint).
   (merge 57d8f4b4c7 js/doc-stash-save later to maint).
   (merge 8c1cfd58e3 ta/t1308-typofix later to maint).
   (merge fa364ad790 bb/utf8-wcwidth-cleanup later to maint).
   (merge 68b69211b2 bb/compat-util-comment-fix later to maint).
   (merge 5cc6a4be11 rs/http-push-simplify later to maint).
   (merge a81e42d235 rs/column-use-utf8-strnwidth later to maint).
   (merge 062a309d36 rs/remote-curl-use-argv-array later to maint).
   (merge 3b3c79f6c9 nr/diff-highlight-indent-fix later to maint).
   (merge 3444ec2eb2 wb/fsmonitor-bitmap-fix later to maint).
   (merge 10da030ab7 cb/pcre2-chartables-leakfix later to maint).

----------------------------------------------------------------

Changes since v2.23.0 are as follows:

Adam Roben (1):
      mingw: fix launching of externals from Unicode paths

Alex Henrie (4):
      doc: fix reference to --ignore-submodules
      commit-graph: remove a duplicate assignment
      diffcore-break: use a goto instead of a redundant if statement
      wrapper: use a loop instead of repetitive statements

Alexandr Miloslavskiy (4):
      contrib/buildsystems: fix Visual Studio Debug configuration
      t0028: fix test for UTF-16-LE-BOM
      t0028: add more tests
      t0061: fix test for argv[0] with spaces (MINGW only)

Ali Utku Selen (1):
      shallow.c: don't free unallocated slabs

Andrey Mazo (1):
      .mailmap: update email address of Andrey Mazo

Beat Bolli (3):
      grep: under --debug, show whether PCRE JIT is enabled
      utf8: use ARRAY_SIZE() in git_wcwidth()
      git-compat-util: fix documentation syntax

Ben Milman (1):
      repository-layout.txt: correct pluralization of 'object'

Ben Wijen (2):
      builtin/rebase.c: make sure the active branch isn't moved when autostashing
      builtin/rebase.c: Remove pointless message

Bert Wesarg (5):
      git-gui: convert new/amend commit radiobutton to checkbutton
      git-gui: add horizontal scrollbar to commit buffer
      builtin/submodule--helper: fix usage string for 'update-clone'
      format-patch: create leading components of output directory
      t4014: make output-directory tests self-contained

Birger Skogeng Pedersen (2):
      git-gui: add hotkeys to set widget focus
      git-gui: add hotkey to toggle "Amend Last Commit"

CB Bailey (1):
      t4038: Remove non-portable '-a' option passed to test_cmp

Cameron Steffen (1):
      doc: minor formatting fix

Carlo Marcelo Arenas Belón (7):
      http: use xmalloc with cURL
      grep: make sure NO_LIBPCRE1_JIT disable JIT in PCRE1
      grep: refactor and simplify PCRE1 support
      grep: skip UTF8 checks explicitly
      grep: make PCRE1 aware of custom allocator
      grep: make PCRE2 aware of custom allocator
      grep: avoid leak of chartables in PCRE2

Christian Couder (15):
      t0410: remove pipes after git commands
      fetch-object: make functions return an error code
      Add initial support for many promisor remotes
      promisor-remote: implement promisor_remote_get_direct()
      promisor-remote: add promisor_remote_reinit()
      promisor-remote: use repository_format_partial_clone
      Use promisor_remote_get_direct() and has_promisor_remote()
      promisor-remote: parse remote.*.partialclonefilter
      builtin/fetch: remove unique promisor remote limitation
      t0410: test fetching from many promisor remotes
      partial-clone: add multiple remotes in the doc
      remote: add promisor and partial clone config to the doc
      Remove fetch-object.{c,h} in favor of promisor-remote.{c,h}
      Move repository_format_partial_clone to promisor-remote.c
      Move core_partial_clone_filter_default to promisor-remote.c

Clément Chigot (1):
      contrib/svn-fe: fix shebang for svnrdump_sim.py

Corentin BOMPARD (1):
      pull, fetch: add --set-upstream option

David Turner (1):
      clarify documentation for remote helpers

Denton Liu (50):
      packfile.h: drop extern from function declaration
      t4014: drop unnecessary blank lines from test cases
      t3431: add rebase --fork-point tests
      t3432: test rebase fast-forward behavior
      completion: merge options for cherry-pick and revert
      completion: add --skip for cherry-pick and revert
      status: mention --skip for revert and cherry-pick
      rebase: refactor can_fast_forward into goto tower
      rebase: fast-forward --onto in more cases
      rebase: fast-forward --fork-point in more cases
      rebase: teach rebase --keep-base
      mingw: apply array.cocci rule
      compat/*.[ch]: remove extern from function declarations using spatch
      t4014: s/expected/expect/
      t4014: move closing sq onto its own line
      t4014: use sq for test case names
      t4014: remove spaces after redirect operators
      t4014: use indentable here-docs
      t4014: drop redirections to /dev/null
      t4014: let sed open its own files
      t4014: use test_line_count() where possible
      t4014: remove confusing pipe in check_threading()
      t4014: stop losing return codes of git commands
      Doc: add more detail for git-format-patch
      config/format.txt: specify default value of format.coverLetter
      t: use common $SQ variable
      completion: teach rebase to use __gitcomp_builtin
      completion: teach archive to use __gitcomp_builtin
      git-submodule.txt: fix AsciiDoc formatting error
      Makefile: strip leading ./ in $(LIB_H)
      Makefile: define THIRD_PARTY_SOURCES
      Makefile: strip leading ./ in $(FIND_SOURCE_FILES)
      Makefile: run coccicheck on more source files
      gitk: rename zh_CN.po to zh_cn.po
      promisor-remote.h: drop extern from function declaration
      apply.h: include missing header
      promisor-remote.h: include missing header
      pack-bitmap.h: remove magic number
      Makefile: emulate compile in $(HCO) target better
      test-lib: let test_merge() perform octopus merges
      t4214: use test_merge
      t4214: generate expect in their own test cases
      t4214: explicitly list tags in log
      t4214: demonstrate octopus graph coloring failure
      git-rev-list.txt: prune options in synopsis
      t4014: treat rev-list output as the expected value
      t0000: cover GIT_SKIP_TESTS blindspots
      pthread.h: manually align parameter lists
      Makefile: respect $(V) in %.cocci.patch target
      t7419: change test_must_fail to ! for grep

Derrick Stolee (15):
      repo-settings: consolidate some config settings
      t6501: use 'git gc' in quiet mode
      commit-graph: turn on commit-graph by default
      repo-settings: parse core.untrackedCache
      repo-settings: create feature.manyFiles setting
      repo-settings: create feature.experimental setting
      merge-recursive: introduce an enum for detect_directory_renames values
      checkout: add simple check for 'git checkout -b'
      fetch: add fetch.writeCommitGraph config setting
      treewide: rename 'struct exclude' to 'struct path_pattern'
      treewide: rename 'struct exclude_list' to 'struct pattern_list'
      treewide: rename 'EXCL_FLAG_' to 'PATTERN_FLAG_'
      treewide: rename 'exclude' methods to 'pattern'
      unpack-trees: rename 'is_excluded_from_list()'
      repo-settings: read an int for index.version

Elijah Newren (53):
      git-fast-import.txt: clarify that multiple merge commits are allowed
      checkout: remove duplicate code
      merge-recursive: be consistent with assert
      checkout: provide better conflict hunk description with detached HEAD
      merge-recursive: enforce opt->ancestor != NULL when calling merge_trees()
      merge-recursive: provide a better label for diff3 common ancestor
      merge-recursive: future-proof update_file_flags() against memory leaks
      merge-recursive: remove another implicit dependency on the_repository
      Ensure index matches head before invoking merge machinery, round N
      merge-recursive: exit early if index != head
      merge-recursive: remove useless parameter in merge_trees()
      merge-recursive: don't force external callers to do our logging
      cache-tree: share code between functions writing an index as a tree
      merge-recursive: fix some overly long lines
      merge-recursive: use common name for ancestors/common/base_list
      merge-recursive: rename 'mrtree' to 'result_tree', for clarity
      merge-recursive: rename merge_options argument to opt in header
      merge-recursive: move some definitions around to clean up the header
      merge-recursive: consolidate unnecessary fields in merge_options
      merge-recursive: comment and reorder the merge_options fields
      merge-recursive: avoid losing output and leaking memory holding that output
      merge-recursive: split internal fields into a separate struct
      merge-recursive: rename MERGE_RECURSIVE_* to MERGE_VARIANT_*
      merge-recursive: add sanity checks for relevant merge_options
      merge-recursive: alphabetize include list
      merge-options.txt: clarify meaning of various ff-related options
      t3427: accelerate this test by using fast-export and fast-import
      t6006: simplify, fix, and optimize empty message test
      Recommend git-filter-repo instead of git-filter-branch
      t9902: use a non-deprecated command for testing
      t7300: add testcases showing failure to clean specified pathspecs
      dir: fix typo in comment
      dir: fix off-by-one error in match_pathspec_item
      dir: also check directories for matching pathspecs
      dir: make the DO_MATCH_SUBMODULE code reusable for a non-submodule case
      dir: if our pathspec might match files under a dir, recurse into it
      dir: add commentary explaining match_pathspec_item's return value
      git-clean.txt: do not claim we will delete files with -n/--dry-run
      clean: disambiguate the definition of -d
      clean: avoid removing untracked files in a nested git repository
      clean: rewrap overly long line
      clean: fix theoretical path corruption
      fast-export: fix exporting a tag and nothing else
      dir: special case check for the possibility that pathspec is NULL
      merge-recursive: fix the diff3 common ancestor label for virtual commits
      fast-import: fix handling of deleted tags
      fast-import: allow tags to be identified by mark labels
      fast-import: add support for new 'alias' command
      fast-export: add support for --import-marks-if-exists
      fast-export: allow user to request tags be marked with --mark-tags
      t9350: add tests for tags of things other than a commit
      fast-export: handle nested tags
      merge-recursive: fix the fix to the diff3 common ancestor label

Emily Shaffer (1):
      promisor-remote: skip move_to_tail when no-op

Eric Wong (20):
      diff: use hashmap_entry_init on moved_entry.ent
      coccicheck: detect hashmap_entry.hash assignment
      packfile: use hashmap_entry in delta_base_cache_entry
      hashmap_entry_init takes "struct hashmap_entry *"
      hashmap_get_next takes "const struct hashmap_entry *"
      hashmap_add takes "struct hashmap_entry *"
      hashmap_get takes "const struct hashmap_entry *"
      hashmap_remove takes "const struct hashmap_entry *"
      hashmap_put takes "struct hashmap_entry *"
      introduce container_of macro
      hashmap_get_next returns "struct hashmap_entry *"
      hashmap: use *_entry APIs to wrap container_of
      hashmap_get{,_from_hash} return "struct hashmap_entry *"
      hashmap_cmp_fn takes hashmap_entry params
      hashmap: use *_entry APIs for iteration
      hashmap: hashmap_{put,remove} return hashmap_entry *
      hashmap: introduce hashmap_free_entries
      OFFSETOF_VAR macro to simplify hashmap iterators
      hashmap: remove type arg from hashmap_{get,put,remove}_entry
      hashmap_entry: remove first member requirement from docs

Gabriele Mazzotta (1):
      gitk: Do not mistake unchanged lines for submodule changes

Garima Singh (3):
      commit-graph: add --[no-]progress to write and verify
      commit-graph: emit trace2 cmd_mode for each sub-command
      sq_quote_buf_pretty: don't drop empty arguments

Hervé Beraud (1):
      hg-to-git: make it compatible with both python3 and python2

Jakob Jarmar (1):
      stash: avoid recursive hard reset on submodules

Jeff Hostetler (7):
      trace2: cleanup column alignment in perf target format
      trace2: trim whitespace in region messages in perf target format
      trace2: remove dead code in maybe_add_string_va()
      trace2: trim trailing whitespace in normal format error message
      quote: add sq_append_quote_argv_pretty()
      trace2: cleanup whitespace in normal format
      trace2: cleanup whitespace in perf format

Jeff King (32):
      setup_traverse_info(): stop copying oid
      tree-walk: drop oid from traverse_info
      tree-walk: use size_t consistently
      tree-walk: accept a raw length for traverse_path_len()
      tree-walk: add a strbuf wrapper for make_traverse_path()
      tree-walk: harden make_traverse_path() length computations
      revision: allow --end-of-options to end option parsing
      parse-options: allow --end-of-options as a synonym for "--"
      gitcli: document --end-of-options
      t1309: use short branch name in includeIf.onbranch test
      common-main: delay trace2 initialization
      config: stop checking whether the_repository is NULL
      t/perf: rename duplicate-numbered test script
      packfile: drop release_pack_memory()
      notes: avoid potential use-after-free during insertion
      fast-import: duplicate parsed encoding string
      fast-import: duplicate into history rather than passing ownership
      git-am: handle missing "author" when parsing commit
      pack-objects: use object_id in packlist_alloc()
      bulk-checkin: zero-initialize hashfile_checkpoint
      diff-delta: set size out-parameter to 0 for NULL delta
      test-read-cache: drop namelen variable
      pack-objects: drop packlist index_pos optimization
      commit-graph: turn off save_commit_buffer
      list-objects: don't queue root trees unless revs->tree_objects is set
      commit-graph: bump DIE_ON_LOAD check to actual load-time
      upload-pack: disable commit graph more gently for shallow traversal
      list-objects-filter: delay parsing of sparse oid
      list-objects-filter: use empty string instead of NULL for sparse "base"
      git_mkstemps_mode(): replace magic numbers with computed value
      add a Code of Conduct document
      CODE_OF_CONDUCT: mention individual project-leader emails

Johannes Schindelin (44):
      Drop unused git-rebase--am.sh
      t3400: stop referring to the scripted rebase
      .gitignore: there is no longer a built-in `git-rebase--interactive`
      sequencer: the `am` and `rebase--interactive` scripts are gone
      rebase: fold git-rebase--common into the -p backend
      t3427: add a clarifying comment
      t3427: simplify the `setup` test case significantly
      t3427: move the `filter-branch` invocation into the `setup` case
      t3427: condense the unnecessarily repetitive test cases into three
      t3427: fix erroneous assumption
      t3427: accommodate for the `rebase --merge` backend having been replaced
      t3427: fix another incorrect assumption
      rebase -r: support merge strategies other than `recursive`
      t/lib-rebase: prepare for testing `git rebase --rebase-merges`
      t3418: test `rebase -r` with merge strategies
      rebase -r: do not (re-)generate root commits with `--root` *and* `--onto`
      setup_git_directory(): handle UNC paths correctly
      Fix .git/ discovery at the root of UNC shares
      setup_git_directory(): handle UNC root paths correctly
      .gitignore: stop ignoring `.manifest` files
      Move git_sort(), a stable sort, into into libgit.a
      diffcore_rename(): use a stable sort
      ci: run `hdr-check` as part of the `Static Analysis` job
      range-diff: internally force `diff.noprefix=true`
      push: do not pretend to return `int` from `die_push_simple()`
      fetch: let --jobs=<n> parallelize --multiple, too
      stash apply: report status correctly even in a worktree's subdirectory
      msvc: avoid using minus operator on unsigned types
      winansi: use FLEX_ARRAY to avoid compiler warning
      compat/win32/path-utils.h: add #include guards
      msvc: ignore some libraries when linking
      msvc: handle DEVELOPER=1
      msvc: work around a bug in GetEnvironmentVariable()
      vcxproj: only copy `git-remote-http.exe` once it was built
      vcxproj: include more generated files
      test-tool run-command: learn to run (parts of) the testsuite
      tests: let --immediate and --write-junit-xml play well together
      ci: really use shallow clones on Azure Pipelines
      ci: also build and test with MS Visual Studio on Azure Pipelines
      xdiffi: fix typos and touch up comments
      doc(stash): clarify the description of `save`
      ci(visual-studio): use strict compile flags, and optimization
      ci(visual-studio): actually run the tests in parallel
      ci(osx): use new location of the `perforce` cask

Johannes Sixt (2):
      diff, log doc: say "patch text" instead of "patches"
      diff, log doc: small grammer, format, and language fixes

Jon Simons (2):
      t5616: test cloning/fetching with sparse:oid=<oid> filter
      list-objects-filter: give a more specific error sparse parsing error

Jonathan Tan (6):
      diff: skip GITLINK when lazy fetching missing objs
      transport-helper: skip ls-refs if unnecessary
      transport: teach all vtables to allow fetch first
      cache-tree: do not lazy-fetch tentative tree
      merge-recursive: symlink's descendants not in way
      send-pack: never fetch when checking exclusions

Josh Steadmon (7):
      t7503: verify proper hook execution
      fetch: add trace2 instrumentation
      push: add trace2 instrumentation
      docs: mention trace2 target-dir mode in git-config
      docs: clarify trace2 version invariants
      trace2: discard new traces if target directory has too many files
      trace2: write discard message to sentinel files

Junio C Hamano (16):
      First batch after Git 2.23
      t: use LF variable defined in the test harness
      t3005: remove unused variable
      Second batch
      Third batch
      SubmittingPatches: git-gui has a new maintainer
      Fourth batch
      Fifth batch
      Sixth batch
      transport: push codepath can take arbitrary repository
      Seventh batch
      Eighth batch
      Ninth batch
      Git 2.24-rc0
      Eleventh batch
      Git 2.24-rc1

Kunal Tyagi (1):
      add -i: show progress counter in the prompt

Martin Ågren (14):
      Documentation: wrap blocks with "--"
      git-merge-base.txt: render indentations correctly under Asciidoctor
      Documentation: wrap config listings in "----"
      git-ls-remote.txt: wrap shell listing in "----"
      git-receive-pack.txt: wrap shell [script] listing in "----"
      git-merge-index.txt: wrap shell listing in "----"
      gitweb.conf.txt: switch pluses to backticks to help Asciidoctor
      Doc/Makefile: give mansource/-version/-manual attributes
      asciidoctor-extensions: provide `<refmiscinfo/>`
      doc-diff: replace --cut-header-footer with --cut-footer
      user-manual.txt: add missing section label
      user-manual.txt: change header notation
      asciidoctor-extensions.rb: handle "book" doctype in linkgit
      user-manual.txt: render ASCII art correctly under Asciidoctor

Masaya Suzuki (1):
      fetch: use oidset to keep the want OIDs for faster lookup

Matheus Tavares (1):
      grep: fix worktree case in submodules

Matthew DeVore (10):
      list-objects-filter: encapsulate filter components
      list-objects-filter: put omits set in filter struct
      list-objects-filter-options: always supply *errbuf
      list-objects-filter: implement composite filters
      list-objects-filter-options: move error check up
      list-objects-filter-options: make filter_spec a string_list
      strbuf: give URL-encoding API a char predicate fn
      list-objects-filter-options: allow mult. --filter
      list-objects-filter-options: clean up use of ALLOC_GROW
      list-objects-filter-options: make parser void

Max Rothman (1):
      completion: add missing completions for log, diff, show

Maxim Belsky (1):
      completion: clarify installation instruction for zsh

Michael J Gruber (3):
      merge: do no-verify like commit
      git-merge: honor pre-merge-commit hook
      merge: --no-verify to bypass pre-merge-commit hook

Mike Hommey (3):
      notes: avoid leaking duplicate entries
      commit: free the right buffer in release_commit_memory
      http: don't leak urlmatch_config.vars

Mischa POSLAWSKY (1):
      ref-filter: initialize empty name or email fields

Norman Rasmussen (1):
      diff-highlight: fix a whitespace nit

Paul Mackerras (1):
      gitk: Make web links clickable

Paul Wise (1):
      gitk: Use right colour for remote refs in the "Tags and heads" dialog

Pedro Sousa (1):
      doc: MyFirstContribution: fix cmd placement instructions

Philip.McGraw (1):
      git-p4: auto-delete named temporary file

Phillip Wood (3):
      rebase -i: always update HEAD before rewording
      rebase -i: check for updated todo after squash and reword
      sequencer: simplify root commit creation

Pratyush Yadav (6):
      git-gui: call do_quit before destroying the main window
      git-gui: allow reverting selected lines
      git-gui: allow reverting selected hunk
      git-gui: return early when patch fails to apply
      git-gui: allow undoing last revert
      Documentation: update the location of the git-gui repo

René Scharfe (28):
      nedmalloc: do assignments only after the declaration section
      nedmalloc: avoid compiler warning about unused value
      archive-tar: report wrong pax extended header length
      archive-tar: fix pax extended header length calculation
      archive-tar: use size_t in strbuf_append_ext_header()
      archive-tar: turn length miscalculation warning into BUG
      parseopt: move definition of enum parse_opt_result up
      sha1-name: make sort_ambiguous_oid_array() thread-safe
      log-tree: always use return value of strbuf_detach()
      grep: use return value of strbuf_detach()
      trace2: use warning() directly in tr2_dst_malformed_warning()
      help: make help_unknown_ref() NORETURN
      tree: simplify parse_tree_indirect()
      tag: factor out get_tagged_oid()
      use get_tagged_oid()
      log: test --decorate-refs-exclude with --simplify-by-decoration
      log-tree: call load_ref_decorations() in get_name_decoration()
      rev-parse: demonstrate overflow of N for "foo^N" and "foo~N"
      sha1-name: check for overflow of N in "foo^N" and "foo~N"
      commit-graph: use commit_list_count()
      sha1_name: simplify strbuf handling in interpret_nth_prior_checkout()
      git: use COPY_ARRAY and MOVE_ARRAY in handle_alias()
      treewide: remove duplicate #include directives
      convert: fix handling of dashless UTF prefix in validate_encoding()
      tests: remove "cat foo" before "test_i18ngrep bar foo"
      http-push: simplify deleting a list item
      column: use utf8_strnwidth() to strip out ANSI color escapes
      remote-curl: use argv_array in parse_push()

SZEDER Gábor (35):
      t5510-fetch: fix negated 'test_i18ngrep' invocation
      t5510-fetch: run non-httpd-specific test before sourcing 'lib-httpd.sh'
      t5703: run all non-httpd-specific tests before sourcing 'lib-httpd.sh'
      t: warn against adding non-httpd-specific tests after sourcing 'lib-httpd'
      t5318-commit-graph: use 'test_expect_code'
      commit-graph: turn a group of write-related macro flags into an enum
      commit-graph: error out on invalid commit oids in 'write --stdin-commits'
      t0000-basic: use realistic test script names in the verbose tests
      tests: show the test name and number at the start of verbose output
      completion: fix a typo in a comment
      completion: complete more values of more 'color.*' configuration variables
      completion: add tests for 'git config' completion
      completion: deduplicate configuration sections
      completion: use 'sort -u' to deduplicate config variable names
      completion: simplify inner 'case' pattern in __gitcomp()
      completion: split _git_config()
      completion: complete configuration sections and variable names for 'git -c'
      completion: complete values of configuration variables after 'git -c var='
      completion: complete config variables names and values for 'git clone -c'
      completion: complete config variables and values for 'git clone --config='
      worktree remove: clarify error message on dirty worktree
      diff: 'diff.indentHeuristic' is no longer experimental
      line-log: extract pathspec parsing from line ranges into a helper function
      line-log: avoid unnecessary full tree diffs
      t7300-clean: demonstrate deleting nested repo with an ignored file breakage
      t/lib-git-svn.sh: check GIT_TEST_SVN_HTTPD when running SVN HTTP tests
      ci: restore running httpd tests
      commit-graph: don't show progress percentages while expanding reachable commits
      Revert "progress: use term_clear_line()"
      Test the progress display
      t/helper: ignore only executable files
      travis-ci: do not skip successfully tested trees in debug mode
      name-rev: avoid cutoff timestamp underflow
      test-progress: fix test failures on big-endian systems
      ci: fix GCC install in the Travis CI GCC OSX job

Stephen Boyd (2):
      userdiff: add a builtin pattern for dts files
      userdiff: fix some corner cases in dts regex

Stephen P. Smith (2):
      Quit passing 'now' to date code
      test_date.c: remove reference to GIT_TEST_DATE_NOW

Sun Chao (1):
      pack-refs: always refresh after taking the lock file

Tanay Abhra (1):
      t1308-config-set: fix a test that has a typo

Taylor Blau (4):
      banned.h: fix vsprintf()'s ban message
      t/t5318: introduce failing 'git commit-graph write' tests
      commit-graph.c: handle commit parsing errors
      commit-graph.c: handle corrupt/missing trees

Thomas Gummerer (6):
      t0021: make sure clean filter runs
      push: disallow --all and refspecs when remote.<name>.mirror is set
      factor out refresh_and_write_cache function
      merge: use refresh_and_write_cache
      stash: make sure to write refreshed cache
      range-diff: don't segfault with mode-only changes

Tobias Klauser (1):
      git-svn: trim leading and trailing whitespaces in author name

Torsten Bögershausen (1):
      mingw: support UNC in git clone file://server/share/repo

Varun Naik (2):
      checkout.c: unstage empty deleted ita files
      restore: add test for deleted ita files

William Baker (1):
      fsmonitor: don't fill bitmap with entries to be removed

YanKe (1):
      gitk: Add Chinese (zh_CN) translation

brian m. carlson (44):
      builtin/replace: make hash size independent
      patch-id: convert to use the_hash_algo
      fetch-pack: use parse_oid_hex
      builtin/receive-pack: switch to use the_hash_algo
      builtin/blame: switch uses of GIT_SHA1_HEXSZ to the_hash_algo
      builtin/rev-parse: switch to use the_hash_algo
      blame: remove needless comparison with GIT_SHA1_HEXSZ
      show-index: switch hard-coded constants to the_hash_algo
      connected: switch GIT_SHA1_HEXSZ to the_hash_algo
      bundle: switch to use the_hash_algo
      combine-diff: replace GIT_SHA1_HEXSZ with the_hash_algo
      config: use the_hash_algo in abbrev comparison
      sha1-lookup: switch hard-coded constants to the_hash_algo
      bisect: switch to using the_hash_algo
      sequencer: convert to use the_hash_algo
      pack-write: use hash_to_hex when writing checksums
      builtin/repack: write object IDs of the proper length
      builtin/worktree: switch null_sha1 to null_oid
      cache: remove null_sha1
      wt-status: convert struct wt_status to object_id
      packfile: replace sha1_to_hex
      builtin/index-pack: replace sha1_to_hex
      builtin/receive-pack: replace sha1_to_hex
      rerere: replace sha1_to_hex
      builtin/show-index: replace sha1_to_hex
      midx: switch to using the_hash_algo
      t3201: abstract away SHA-1-specific constants
      t3206: abstract away hash size constants
      t3301: abstract away SHA-1-specific constants
      t3305: make hash size independent
      t3306: abstract away SHA-1-specific constants
      t3404: abstract away SHA-1-specific constants
      t3430: avoid hard-coded object IDs
      t3506: make hash independent
      t3600: make hash size independent
      t3800: make hash-size independent
      t3903: abstract away SHA-1-specific constants
      t4000: make hash size independent
      t4002: make hash independent
      t4009: make hash size independent
      path: add a function to check for path suffix
      am: reload .gitattributes after patching it
      Documentation: fix build with Asciidoctor 2
      remote-curl: pass on atomic capability to remote side

Ævar Arnfjörð Bjarmason (20):
      log tests: test regex backends in "--encode=<enc>" tests
      grep: don't use PCRE2?_UTF8 with "log --encoding=<non-utf8>"
      t4210: skip more command-line encoding tests on MinGW
      grep: inline the return value of a function call used only once
      grep tests: move "grep binary" alongside the rest
      grep tests: move binary pattern tests into their own file
      grep: make the behavior for NUL-byte in patterns sane
      grep: drop support for \0 in --fixed-strings <pattern>
      grep: remove the kwset optimization
      grep: use PCRE v2 for optimized fixed-string search
      grep: remove overly paranoid BUG(...) code
      grep: stop "using" a custom JIT stack with PCRE v2
      grep: stop using a custom JIT stack with PCRE v1
      grep: consistently use "p->fixed" in compile_regexp()
      grep: create a "is_fixed" member in "grep_pat"
      grep: stess test PCRE v2 on invalid UTF-8 data
      grep: do not enter PCRE2_UTF mode on fixed matching
      t3432: distinguish "noop-same" v.s. "work-same" in "same head" tests
      t3432: test for --no-ff's interaction with fast-forward
      rebase tests: test linear branch topology


^ permalink raw reply	[relevance 2%]

* [ANNOUNCE] Git v2.24.0-rc0
@ 2019-10-18  6:29  1% Junio C Hamano
  0 siblings, 0 replies; 25+ results
From: Junio C Hamano @ 2019-10-18  6:29 UTC (permalink / raw)
  To: git; +Cc: Linux Kernel, git-packagers

An early preview release Git v2.24.0-rc0 is now available for
testing at the usual places.  It is comprised of 493 non-merge
commits since v2.23.0, contributed by 63 people, 15 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.24.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://github.com/gitster/git

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

  Alexandr Miloslavskiy, Ali Utku Selen, Ben Milman, Cameron
  Steffen, CB Bailey, Garima Singh, Hervé Beraud, Jakob Jarmar,
  Kunal Tyagi, Max Rothman, Paul Wise, Pedro Sousa, Philip.McGraw,
  Pratyush Yadav, and YanKe.

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

  Adam Roben, Ævar Arnfjörð Bjarmason, Alex Henrie, Andrey Mazo,
  Beat Bolli, Ben Wijen, Bert Wesarg, Birger Skogeng Pedersen,
  brian m. carlson, Carlo Marcelo Arenas Belón, Christian
  Couder, Clément Chigot, Corentin BOMPARD, David Turner,
  Denton Liu, Derrick Stolee, Elijah Newren, Emily Shaffer,
  Eric Wong, Gabriele Mazzotta, Jeff Hostetler, Jeff King,
  Johannes Schindelin, Johannes Sixt, Jonathan Tan, Jon Simons,
  Josh Steadmon, Junio C Hamano, Martin Ågren, Masaya Suzuki,
  Matheus Tavares, Matthew DeVore, Michael J Gruber, Mike Hommey,
  Mischa POSLAWSKY, Paul Mackerras, Phillip Wood, René Scharfe,
  Stephen Boyd, Stephen P. Smith, Sun Chao, SZEDER Gábor,
  Tanay Abhra, Taylor Blau, Thomas Gummerer, Tobias Klauser,
  Torsten Bögershausen, and Varun Naik.

----------------------------------------------------------------

Git 2.24 Release Notes (draft)
==============================

Updates since v2.23
-------------------

Backward compatibility note

 * Although it is not officially deprecated, "filter-branch" is
   showing its age and alternatives are available.  From this release,
   we started to discourage its uses and hint people about
   filter-repo.

UI, Workflows & Features

 * We now have an active interim maintainer for the Git-Gui part of
   the system.  Praise and thank Pratyush Yadav for volunteering.

 * The command line parser learned "--end-of-options" notation; the
   standard convention for scripters to have hardcoded set of options
   first on the command line, and force the command to treat end-user
   input as non-options, has been to use "--" as the delimiter, but
   that would not work for commands that use "--" as a delimiter
   between revs and pathspec.

 * A mechanism to affect the default setting for a (related) group of
   configuration variables is introduced.

 * "git fetch" learned "--set-upstream" option to help those who first
   clone from their private fork they intend to push to, add the true
   upstream via "git remote add" and then "git fetch" from it.

 * Device-tree files learned their own userdiff patterns.
   (merge 3c81760bc6 sb/userdiff-dts later to maint).

 * "git rebase --rebase-merges" learned to drive different merge
   strategies and pass strategy specific options to them.

 * A new "pre-merge-commit" hook has been introduced.

 * Command line completion updates for "git -c var.name=val" have been
   added.

 * The lazy clone machinery has been taught that there can be more
   than one promisor remote and consult them in order when downloading
   missing objects on demand.

 * The list-objects-filter API (used to create a sparse/lazy clone)
   learned to take a combined filter specification.

 * The documentation and tests for "git format-patch" have been
   cleaned up.

 * On Windows, the root level of UNC share is now allowed to be used
   just like any other directory.

 * The command line completion support (in contrib/) learned about the
   "--skip" option of "git revert" and "git cherry-pick".

 * "git rebase --keep-base <upstream>" tries to find the original base
   of the topic being rebased and rebase on top of that same base,
   which is useful when running the "git rebase -i" (and its limited
   variant "git rebase -x").

   The command also has learned to fast-forward in more cases where it
   can instead of replaying to recreate identical commits.

 * A configuration variable tells "git fetch" to write the commit
   graph after finishing.

 * "git add -i" has been taught to show the total number of hunks and
   the hunks that has been processed so far when showing prompts.

 * "git fetch --jobs=<n>" allowed <n> parallel jobs when fetching
   submodules, but this did not apply to "git fetch --multiple" that
   fetches from multiple remote repositories.  It now does.


Performance, Internal Implementation, Development Support etc.

 * The code to write commit-graph over given commit object names has
   been made a bit more robust.

 * The first line of verbose output from each test piece now carries
   the test name and number to help scanning with eyeballs.

 * Further clean-up of the initialization code.

 * xmalloc() used to have a mechanism to ditch memory and address
   space resources as the last resort upon seeing an allocation
   failure from the underlying malloc(), which made the code complex
   and thread-unsafe with dubious benefit, as major memory resource
   users already do limit their uses with various other mechanisms.
   It has been simplified away.

 * Unnecessary full-tree diff in "git log -L" machinery has been
   optimized away.

 * The http transport lacked some optimization the native transports
   learned to avoid unnecessary ref advertisement, which has been
   corrected.

 * Preparation for SHA-256 upgrade continues in the test department.
   (merge 0c37c41d13 bc/hash-independent-tests-part-5 later to maint).

 * The memory ownership model of the "git fast-import" got
   straightened out.

 * Output from trace2 subsystem is formatted more prettily now.

 * The internal code originally invented for ".gitignore" processing
   got reshuffled and renamed to make it less tied to "excluding" and
   stress more that it is about "matching", as it has been reused for
   things like sparse checkout specification that want to check if a
   path is "included".

 * "git stash" learned to write refreshed index back to disk.

 * Coccinelle checks are done on more source files than before now.

 * The cache-tree code has been taught to be less aggressive in
   attempting to see if a tree object it computed already exists in
   the repository.

 * The code to parse and use the commit-graph file has been made more
   robust against corrupted input.

 * The hg-to-git script (in contrib/) has been updated to work with
   Python 3.

 * Update the way build artifacts in t/helper/ directory are ignored.

 * Preparation for SHA-256 upgrade continues.

 * "git log --graph" for an octopus merge is sometimes colored
   incorrectly, which is demonstrated and documented but not yet
   fixed.

 * The trace2 output, when sending them to files in a designated
   directory, can populate the directory with too many files; a
   mechanism is introduced to set the maximum number of files and
   discard further logs when the maximum is reached.

 * We have adopted a Code-of-conduct document.
   (merge 3f9ef874a7 jk/coc later to maint).


Fixes since v2.23
-----------------

 * "git grep --recurse-submodules" that looks at the working tree
   files looked at the contents in the index in submodules, instead of
   files in the working tree.
   (merge 6a289d45c0 mt/grep-submodules-working-tree later to maint).

 * Codepaths to walk tree objects have been audited for integer
   overflows and hardened.
   (merge 5aa02f9868 jk/tree-walk-overflow later to maint).

 * "git pack-refs" can lose refs that are created while running, which
   is getting corrected.
   (merge a613d4f817 sc/pack-refs-deletion-racefix later to maint).

 * "git checkout" and "git restore" to re-populate the index from a
   tree-ish (typically HEAD) did not work correctly for a path that
   was removed and then added again with the intent-to-add bit, when
   the corresponding working tree file was empty.  This has been
   corrected.

 * Compilation fix.
   (merge 70597e8386 rs/nedalloc-fixlets later to maint).

 * "git gui" learned to call the clean-up procedure before exiting.
   (merge 0d88f3d2c5 py/git-gui-do-quit later to maint).

 * We promoted the "indent heuristics" that decides where to split
   diff hunks from experimental to the default a few years ago, but
   some stale documentation still marked it as experimental, which has
   been corrected.
   (merge 64e5e1fba1 sg/diff-indent-heuristic-non-experimental later to maint).

 * Fix a mismerge that happened in 2.22 timeframe.
   (merge acb7da05ac en/checkout-mismerge-fix later to maint).

 * "git archive" recorded incorrect length in extended pax header in
   some corner cases, which has been corrected.
   (merge 71d41ff651 rs/pax-extended-header-length-fix later to maint).

 * On-demand object fetching in lazy clone incorrectly tried to fetch
   commits from submodule projects, while still working in the
   superproject, which has been corrected.
   (merge a63694f523 jt/diff-lazy-fetch-submodule-fix later to maint).

 * Prepare get_short_oid() codepath to be thread-safe.
   (merge 7cfcb16b0e rs/sort-oid-array-thread-safe later to maint).

 * "for-each-ref" and friends that show refs did not protect themselves
   against ancient tags that did not record tagger names when asked to
   show "%(taggername)", which have been corrected.
   (merge 8b3f33ef11 mp/for-each-ref-missing-name-or-email later to maint).

 * The "git am" based backend of "git rebase" ignored the result of
   updating ".gitattributes" done in one step when replaying
   subsequent steps.
   (merge 2c65d90f75 bc/reread-attributes-during-rebase later to maint).

 * Tell cURL library to use the same malloc() implementation, with the
   xmalloc() wrapper, as the rest of the system, for consistency.
   (merge 93b980e58f cb/curl-use-xmalloc later to maint).

 * Build fix to adjust .gitignore to unignore a path that we started to track.
   (merge aac6ff7b5b js/visual-studio later to maint).

 * A few implementation fixes in the notes API.
   (merge 60fe477a0b mh/notes-duplicate-entries later to maint).

 * Fix an earlier regression to "git push --all" which should have
   been forbidden when the target remote repository is set to be a
   mirror.
   (merge 8e4c8af058 tg/push-all-in-mirror-forbidden later to maint).

 * Fix an earlier regression in the test suite, which mistakenly
   stopped running HTTPD tests.
   (merge 3960290675 sg/git-test-boolean later to maint).

 * "git rebase --autostash <upstream> <branch>", when <branch> is
   different from the current branch, incorrectly moved the tip of the
   current branch, which has been corrected.
   (merge bf1e28e0ad bw/rebase-autostash-keep-current-branch later to maint).

 * Update support for Asciidoctor documentation toolchain.
   (merge 83b0b8953e ma/asciidoctor-refmiscinfo later to maint).

 * Start using DocBook 5 (instead of DocBook 4.5) as Asciidoctor 2.0
   no longer works with the older one.
   (merge f6461b82b9 bc/doc-use-docbook-5 later to maint).

 * The markup used in user-manual has been updated to work better with
   asciidoctor.
   (merge c4d2f6143a ma/user-manual-markup-update later to maint).

 * Make sure the grep machinery does not abort when seeing a payload
   that is not UTF-8 even when JIT is not in use with PCRE1.
   (merge ad7c543e3b cb/skip-utf8-check-with-pcre1 later to maint).

 * The name of the blob object that stores the filter specification
   for sparse cloning/fetching was interpreted in a wrong place in the
   code, causing Git to abort.

 * "git log --decorate-refs-exclude=<pattern>" was incorrectly
   overruled when the "--simplify-by-decoration" option is used, which
   has been corrected.
   (merge 0cc7380d88 rs/simplify-by-deco-with-deco-refs-exclude later to maint).

 * The "upload-pack" (the counterpart of "git fetch") needs to disable
   commit-graph when responding to a shallow clone/fetch request, but
   the way this was done made Git panic, which has been corrected.

 * The object traversal machinery has been optimized not to load tree
   objects when we are only interested in commit history.
   (merge 72ed80c784 jk/list-objects-optim-wo-trees later to maint).

 * The object name parser for "Nth parent" syntax has been made more
   robust against integer overflows.
   (merge 59fa5f5a25 rs/nth-parent-parse later to maint).

 * The code used in following tags in "git fetch" has been optimized.
   (merge b7e2d8bca5 ms/fetch-follow-tag-optim later to maint).

 * Regression fix for progress output.
   (merge 2bb74b53a4 sg/progress-fix later to maint).

 * A bug in merge-recursive code that triggers when a branch with a
   symbolic link is merged with a branch that replaces it with a
   directory has been fixed.
   (merge 83e3ad3b12 jt/merge-recursive-symlink-is-not-a-dir-in-way later to maint).

 * The rename detection logic sorts a list of rename source candidates
   by similarity to pick the best candidate, which means that a tie
   between sources with the same similarity is broken by the original
   location in the original candidate list (which is sorted by path).
   Force the sorting by similarity done with a stable sort, which is
   not promised by system supplied qsort(3), to ensure consistent
   results across platforms.
   (merge 2049b8dc65 js/diff-rename-force-stable-sort later to maint).

 * The code to skip "UTF" and "UTF-" prefix, when computing an advice
   message, did not work correctly when the prefix was "UTF", which
   has been fixed.
   (merge b181676ce9 rs/convert-fix-utf-without-dash later to maint).

 * The author names taken from SVN repositories may have extra leading
   or trailing whitespaces, which are now munged away.
   (merge 4ddd4bddb1 tk/git-svn-trim-author-name later to maint).

 * "git rebase -i" showed a wrong HEAD while "reword" open the editor.
   (merge b0a3186140 pw/rebase-i-show-HEAD-to-reword later to maint).

 * A few simplification and bugfixes to PCRE interface.
   (merge c581e4a749 ab/pcre-jit-fixes later to maint).

 * PCRE fixes.
   (merge ff61681b46 cb/pcre1-cleanup later to maint).

 * "git range-diff" segfaulted when diff.noprefix configuration was
   used, as it blindly expected the patch it internally generates to
   have the standard a/ and b/ prefixes.  The command now forces the
   internal patch to be built without any prefix, not to be affected
   by any end-user configuration.
   (merge 937b76ed49 js/range-diff-noprefix later to maint).

 * "git stash apply" in a subdirectory of a secondary worktree failed
   to access the worktree correctly, which has been corrected.
   (merge dfd557c978 js/stash-apply-in-secondary-worktree later to maint).

 * The merge-recursive machiery is one of the most complex parts of
   the system that accumulated cruft over time.  This large series
   cleans up the implementation quite a bit.
   (merge b657047719 en/merge-recursive-cleanup later to maint).

 * Pretty-printed command line formatter (used in e.g. reporting the
   command being run by the tracing API) had a bug that lost an
   argument that is an empty string, which has been corrected.
   (merge ce2d7ed2fd gs/sq-quote-buf-pretty later to maint).

 * "git range-diff" failed to handle mode-only change, which has been
   corrected.
   (merge 2b6a9b13ca tg/range-diff-output-update later to maint).

 * Dev support update.
   (merge 4f3c1dc5d6 dl/allow-running-cocci-verbosely later to maint).

 * "git format-patch -o <outdir>" did an equivalent of "mkdir <outdir>"
   not "mkdir -p <outdir>", which was corrected.

 * "git stash save" lost local changes to submodules, which has been
   corrected.
   (merge 556895d0c8 jj/stash-reset-only-toplevel later to maint).

 * Other code cleanup, docfix, build fix, etc.
   (merge d1387d3895 en/fast-import-merge-doc later to maint).
   (merge 1c24a54ea4 bm/repository-layout-typofix later to maint).
   (merge 415b770b88 ds/midx-expire-repack later to maint).
   (merge 19800bdc3f nd/diff-parseopt later to maint).
   (merge 58166c2e9d tg/t0021-racefix later to maint).
   (merge 7027f508c7 dl/compat-cleanup later to maint).
   (merge e770fbfeff jc/test-cleanup later to maint).
   (merge 1fd881d404 rs/trace2-dst-warning later to maint).
   (merge 7e92756751 mh/http-urlmatch-cleanup later to maint).
   (merge 9784f97321 mh/release-commit-memory-fix later to maint).
   (merge 60d198d022 tb/banned-vsprintf-namefix later to maint).
   (merge 80e3658647 rs/help-unknown-ref-does-not-return later to maint).
   (merge 0a8bc7068f dt/remote-helper-doc-re-lock-option later to maint).
   (merge 27fd1e4ea7 en/merge-options-ff-and-friends later to maint).
   (merge 502c386ff9 sg/clean-nested-repo-with-ignored later to maint).
   (merge 26e3d1cbea am/mailmap-andrey-mazo later to maint).
   (merge 47b27c96fa ss/get-time-cleanup later to maint).
   (merge dd2e50a84e jk/commit-graph-cleanup later to maint).
   (merge 4fd39c76e6 cs/pretty-formats-doc-typofix later to maint).
   (merge 40e747e89d dl/submodule-set-branch later to maint).
   (merge 689a146c91 rs/commit-graph-use-list-count later to maint).
   (merge 0eb7c37a8a js/doc-patch-text later to maint).
   (merge 4b3aa170d1 rs/nth-switch-code-simplification later to maint).
   (merge 0d4304c124 ah/doc-submodule-ignore-submodules later to maint).
   (merge af78249463 cc/svn-fe-py-shebang later to maint).
   (merge 7bd97d6dff rs/alias-use-copy-array later to maint).
   (merge c46ebc2496 sg/travis-help-debug later to maint).
   (merge 24c681794f ps/my-first-contribution-alphasort later to maint).
   (merge 75b2c15435 cb/do-not-use-test-cmp-with-a later to maint).
   (merge cda0d497e3 bw/submodule-helper-usage-fix later to maint).
   (merge fe0ed5d5e9 am/visual-studio-config-fix later to maint).
   (merge 2e09c01232 sg/name-rev-cutoff-underflow-fix later to maint).
   (merge ddb3c856f3 as/shallow-slab-use-fix later to maint).
   (merge 71f4960b91 js/mingw-spawn-with-spaces-in-path later to maint).
   (merge 53d687bf5f ah/cleanups later to maint).
   (merge f537485fa5 rs/test-remove-useless-debugging-cat later to maint).
   (merge 11a3d3aadd dl/rev-list-doc-cleanup later to maint).
   (merge d928a8388a am/t0028-utf16-tests later to maint).
   (merge b05b40930e dl/t0000-skip-test-test later to maint).
   (merge 03d3b1297c js/xdiffi-comment-updates later to maint).
   (merge 57d8f4b4c7 js/doc-stash-save later to maint).
   (merge 8c1cfd58e3 ta/t1308-typofix later to maint).
   (merge fa364ad790 bb/utf8-wcwidth-cleanup later to maint).
   (merge 68b69211b2 bb/compat-util-comment-fix later to maint).
   (merge 5cc6a4be11 rs/http-push-simplify later to maint).
   (merge a81e42d235 rs/column-use-utf8-strnwidth later to maint).
   (merge 062a309d36 rs/remote-curl-use-argv-array later to maint).

----------------------------------------------------------------

Changes since v2.23.0 are as follows:

Adam Roben (1):
      mingw: fix launching of externals from Unicode paths

Alex Henrie (4):
      doc: fix reference to --ignore-submodules
      commit-graph: remove a duplicate assignment
      diffcore-break: use a goto instead of a redundant if statement
      wrapper: use a loop instead of repetitive statements

Alexandr Miloslavskiy (4):
      contrib/buildsystems: fix Visual Studio Debug configuration
      t0028: fix test for UTF-16-LE-BOM
      t0028: add more tests
      t0061: fix test for argv[0] with spaces (MINGW only)

Ali Utku Selen (1):
      shallow.c: don't free unallocated slabs

Andrey Mazo (1):
      .mailmap: update email address of Andrey Mazo

Beat Bolli (3):
      grep: under --debug, show whether PCRE JIT is enabled
      utf8: use ARRAY_SIZE() in git_wcwidth()
      git-compat-util: fix documentation syntax

Ben Milman (1):
      repository-layout.txt: correct pluralization of 'object'

Ben Wijen (2):
      builtin/rebase.c: make sure the active branch isn't moved when autostashing
      builtin/rebase.c: Remove pointless message

Bert Wesarg (4):
      git-gui: convert new/amend commit radiobutton to checkbutton
      git-gui: add horizontal scrollbar to commit buffer
      builtin/submodule--helper: fix usage string for 'update-clone'
      format-patch: create leading components of output directory

Birger Skogeng Pedersen (2):
      git-gui: add hotkeys to set widget focus
      git-gui: add hotkey to toggle "Amend Last Commit"

CB Bailey (1):
      t4038: Remove non-portable '-a' option passed to test_cmp

Cameron Steffen (1):
      doc: minor formatting fix

Carlo Marcelo Arenas Belón (4):
      http: use xmalloc with cURL
      grep: make sure NO_LIBPCRE1_JIT disable JIT in PCRE1
      grep: refactor and simplify PCRE1 support
      grep: skip UTF8 checks explicitly

Christian Couder (15):
      t0410: remove pipes after git commands
      fetch-object: make functions return an error code
      Add initial support for many promisor remotes
      promisor-remote: implement promisor_remote_get_direct()
      promisor-remote: add promisor_remote_reinit()
      promisor-remote: use repository_format_partial_clone
      Use promisor_remote_get_direct() and has_promisor_remote()
      promisor-remote: parse remote.*.partialclonefilter
      builtin/fetch: remove unique promisor remote limitation
      t0410: test fetching from many promisor remotes
      partial-clone: add multiple remotes in the doc
      remote: add promisor and partial clone config to the doc
      Remove fetch-object.{c,h} in favor of promisor-remote.{c,h}
      Move repository_format_partial_clone to promisor-remote.c
      Move core_partial_clone_filter_default to promisor-remote.c

Clément Chigot (1):
      contrib/svn-fe: fix shebang for svnrdump_sim.py

Corentin BOMPARD (1):
      pull, fetch: add --set-upstream option

David Turner (1):
      clarify documentation for remote helpers

Denton Liu (49):
      packfile.h: drop extern from function declaration
      t4014: drop unnecessary blank lines from test cases
      t3431: add rebase --fork-point tests
      t3432: test rebase fast-forward behavior
      completion: merge options for cherry-pick and revert
      completion: add --skip for cherry-pick and revert
      status: mention --skip for revert and cherry-pick
      rebase: refactor can_fast_forward into goto tower
      rebase: fast-forward --onto in more cases
      rebase: fast-forward --fork-point in more cases
      rebase: teach rebase --keep-base
      mingw: apply array.cocci rule
      compat/*.[ch]: remove extern from function declarations using spatch
      t4014: s/expected/expect/
      t4014: move closing sq onto its own line
      t4014: use sq for test case names
      t4014: remove spaces after redirect operators
      t4014: use indentable here-docs
      t4014: drop redirections to /dev/null
      t4014: let sed open its own files
      t4014: use test_line_count() where possible
      t4014: remove confusing pipe in check_threading()
      t4014: stop losing return codes of git commands
      Doc: add more detail for git-format-patch
      config/format.txt: specify default value of format.coverLetter
      t: use common $SQ variable
      completion: teach rebase to use __gitcomp_builtin
      completion: teach archive to use __gitcomp_builtin
      git-submodule.txt: fix AsciiDoc formatting error
      Makefile: strip leading ./ in $(LIB_H)
      Makefile: define THIRD_PARTY_SOURCES
      Makefile: strip leading ./ in $(FIND_SOURCE_FILES)
      Makefile: run coccicheck on more source files
      gitk: rename zh_CN.po to zh_cn.po
      promisor-remote.h: drop extern from function declaration
      apply.h: include missing header
      promisor-remote.h: include missing header
      pack-bitmap.h: remove magic number
      Makefile: emulate compile in $(HCO) target better
      test-lib: let test_merge() perform octopus merges
      t4214: use test_merge
      t4214: generate expect in their own test cases
      t4214: explicitly list tags in log
      t4214: demonstrate octopus graph coloring failure
      git-rev-list.txt: prune options in synopsis
      t4014: treat rev-list output as the expected value
      t0000: cover GIT_SKIP_TESTS blindspots
      pthread.h: manually align parameter lists
      Makefile: respect $(V) in %.cocci.patch target

Derrick Stolee (14):
      repo-settings: consolidate some config settings
      t6501: use 'git gc' in quiet mode
      commit-graph: turn on commit-graph by default
      repo-settings: parse core.untrackedCache
      repo-settings: create feature.manyFiles setting
      repo-settings: create feature.experimental setting
      merge-recursive: introduce an enum for detect_directory_renames values
      checkout: add simple check for 'git checkout -b'
      fetch: add fetch.writeCommitGraph config setting
      treewide: rename 'struct exclude' to 'struct path_pattern'
      treewide: rename 'struct exclude_list' to 'struct pattern_list'
      treewide: rename 'EXCL_FLAG_' to 'PATTERN_FLAG_'
      treewide: rename 'exclude' methods to 'pattern'
      unpack-trees: rename 'is_excluded_from_list()'

Elijah Newren (53):
      git-fast-import.txt: clarify that multiple merge commits are allowed
      checkout: remove duplicate code
      merge-recursive: be consistent with assert
      checkout: provide better conflict hunk description with detached HEAD
      merge-recursive: enforce opt->ancestor != NULL when calling merge_trees()
      merge-recursive: provide a better label for diff3 common ancestor
      merge-recursive: future-proof update_file_flags() against memory leaks
      merge-recursive: remove another implicit dependency on the_repository
      Ensure index matches head before invoking merge machinery, round N
      merge-recursive: exit early if index != head
      merge-recursive: remove useless parameter in merge_trees()
      merge-recursive: don't force external callers to do our logging
      cache-tree: share code between functions writing an index as a tree
      merge-recursive: fix some overly long lines
      merge-recursive: use common name for ancestors/common/base_list
      merge-recursive: rename 'mrtree' to 'result_tree', for clarity
      merge-recursive: rename merge_options argument to opt in header
      merge-recursive: move some definitions around to clean up the header
      merge-recursive: consolidate unnecessary fields in merge_options
      merge-recursive: comment and reorder the merge_options fields
      merge-recursive: avoid losing output and leaking memory holding that output
      merge-recursive: split internal fields into a separate struct
      merge-recursive: rename MERGE_RECURSIVE_* to MERGE_VARIANT_*
      merge-recursive: add sanity checks for relevant merge_options
      merge-recursive: alphabetize include list
      merge-options.txt: clarify meaning of various ff-related options
      t3427: accelerate this test by using fast-export and fast-import
      t6006: simplify, fix, and optimize empty message test
      Recommend git-filter-repo instead of git-filter-branch
      t9902: use a non-deprecated command for testing
      t7300: add testcases showing failure to clean specified pathspecs
      dir: fix typo in comment
      dir: fix off-by-one error in match_pathspec_item
      dir: also check directories for matching pathspecs
      dir: make the DO_MATCH_SUBMODULE code reusable for a non-submodule case
      dir: if our pathspec might match files under a dir, recurse into it
      dir: add commentary explaining match_pathspec_item's return value
      git-clean.txt: do not claim we will delete files with -n/--dry-run
      clean: disambiguate the definition of -d
      clean: avoid removing untracked files in a nested git repository
      clean: rewrap overly long line
      clean: fix theoretical path corruption
      fast-export: fix exporting a tag and nothing else
      dir: special case check for the possibility that pathspec is NULL
      merge-recursive: fix the diff3 common ancestor label for virtual commits
      fast-import: fix handling of deleted tags
      fast-import: allow tags to be identified by mark labels
      fast-import: add support for new 'alias' command
      fast-export: add support for --import-marks-if-exists
      fast-export: allow user to request tags be marked with --mark-tags
      t9350: add tests for tags of things other than a commit
      fast-export: handle nested tags
      merge-recursive: fix the fix to the diff3 common ancestor label

Emily Shaffer (1):
      promisor-remote: skip move_to_tail when no-op

Eric Wong (20):
      diff: use hashmap_entry_init on moved_entry.ent
      coccicheck: detect hashmap_entry.hash assignment
      packfile: use hashmap_entry in delta_base_cache_entry
      hashmap_entry_init takes "struct hashmap_entry *"
      hashmap_get_next takes "const struct hashmap_entry *"
      hashmap_add takes "struct hashmap_entry *"
      hashmap_get takes "const struct hashmap_entry *"
      hashmap_remove takes "const struct hashmap_entry *"
      hashmap_put takes "struct hashmap_entry *"
      introduce container_of macro
      hashmap_get_next returns "struct hashmap_entry *"
      hashmap: use *_entry APIs to wrap container_of
      hashmap_get{,_from_hash} return "struct hashmap_entry *"
      hashmap_cmp_fn takes hashmap_entry params
      hashmap: use *_entry APIs for iteration
      hashmap: hashmap_{put,remove} return hashmap_entry *
      hashmap: introduce hashmap_free_entries
      OFFSETOF_VAR macro to simplify hashmap iterators
      hashmap: remove type arg from hashmap_{get,put,remove}_entry
      hashmap_entry: remove first member requirement from docs

Gabriele Mazzotta (1):
      gitk: Do not mistake unchanged lines for submodule changes

Garima Singh (3):
      commit-graph: add --[no-]progress to write and verify
      commit-graph: emit trace2 cmd_mode for each sub-command
      sq_quote_buf_pretty: don't drop empty arguments

Hervé Beraud (1):
      hg-to-git: make it compatible with both python3 and python2

Jakob Jarmar (1):
      stash: avoid recursive hard reset on submodules

Jeff Hostetler (7):
      trace2: cleanup column alignment in perf target format
      trace2: trim whitespace in region messages in perf target format
      trace2: remove dead code in maybe_add_string_va()
      trace2: trim trailing whitespace in normal format error message
      quote: add sq_append_quote_argv_pretty()
      trace2: cleanup whitespace in normal format
      trace2: cleanup whitespace in perf format

Jeff King (32):
      setup_traverse_info(): stop copying oid
      tree-walk: drop oid from traverse_info
      tree-walk: use size_t consistently
      tree-walk: accept a raw length for traverse_path_len()
      tree-walk: add a strbuf wrapper for make_traverse_path()
      tree-walk: harden make_traverse_path() length computations
      revision: allow --end-of-options to end option parsing
      parse-options: allow --end-of-options as a synonym for "--"
      gitcli: document --end-of-options
      t1309: use short branch name in includeIf.onbranch test
      common-main: delay trace2 initialization
      config: stop checking whether the_repository is NULL
      t/perf: rename duplicate-numbered test script
      packfile: drop release_pack_memory()
      notes: avoid potential use-after-free during insertion
      fast-import: duplicate parsed encoding string
      fast-import: duplicate into history rather than passing ownership
      git-am: handle missing "author" when parsing commit
      pack-objects: use object_id in packlist_alloc()
      bulk-checkin: zero-initialize hashfile_checkpoint
      diff-delta: set size out-parameter to 0 for NULL delta
      test-read-cache: drop namelen variable
      pack-objects: drop packlist index_pos optimization
      commit-graph: turn off save_commit_buffer
      list-objects: don't queue root trees unless revs->tree_objects is set
      commit-graph: bump DIE_ON_LOAD check to actual load-time
      upload-pack: disable commit graph more gently for shallow traversal
      list-objects-filter: delay parsing of sparse oid
      list-objects-filter: use empty string instead of NULL for sparse "base"
      git_mkstemps_mode(): replace magic numbers with computed value
      add a Code of Conduct document
      CODE_OF_CONDUCT: mention individual project-leader emails

Johannes Schindelin (41):
      Drop unused git-rebase--am.sh
      t3400: stop referring to the scripted rebase
      .gitignore: there is no longer a built-in `git-rebase--interactive`
      sequencer: the `am` and `rebase--interactive` scripts are gone
      rebase: fold git-rebase--common into the -p backend
      t3427: add a clarifying comment
      t3427: simplify the `setup` test case significantly
      t3427: move the `filter-branch` invocation into the `setup` case
      t3427: condense the unnecessarily repetitive test cases into three
      t3427: fix erroneous assumption
      t3427: accommodate for the `rebase --merge` backend having been replaced
      t3427: fix another incorrect assumption
      rebase -r: support merge strategies other than `recursive`
      t/lib-rebase: prepare for testing `git rebase --rebase-merges`
      t3418: test `rebase -r` with merge strategies
      rebase -r: do not (re-)generate root commits with `--root` *and* `--onto`
      setup_git_directory(): handle UNC paths correctly
      Fix .git/ discovery at the root of UNC shares
      setup_git_directory(): handle UNC root paths correctly
      .gitignore: stop ignoring `.manifest` files
      Move git_sort(), a stable sort, into into libgit.a
      diffcore_rename(): use a stable sort
      ci: run `hdr-check` as part of the `Static Analysis` job
      range-diff: internally force `diff.noprefix=true`
      push: do not pretend to return `int` from `die_push_simple()`
      fetch: let --jobs=<n> parallelize --multiple, too
      stash apply: report status correctly even in a worktree's subdirectory
      msvc: avoid using minus operator on unsigned types
      winansi: use FLEX_ARRAY to avoid compiler warning
      compat/win32/path-utils.h: add #include guards
      msvc: ignore some libraries when linking
      msvc: handle DEVELOPER=1
      msvc: work around a bug in GetEnvironmentVariable()
      vcxproj: only copy `git-remote-http.exe` once it was built
      vcxproj: include more generated files
      test-tool run-command: learn to run (parts of) the testsuite
      tests: let --immediate and --write-junit-xml play well together
      ci: really use shallow clones on Azure Pipelines
      ci: also build and test with MS Visual Studio on Azure Pipelines
      xdiffi: fix typos and touch up comments
      doc(stash): clarify the description of `save`

Johannes Sixt (2):
      diff, log doc: say "patch text" instead of "patches"
      diff, log doc: small grammer, format, and language fixes

Jon Simons (2):
      t5616: test cloning/fetching with sparse:oid=<oid> filter
      list-objects-filter: give a more specific error sparse parsing error

Jonathan Tan (6):
      diff: skip GITLINK when lazy fetching missing objs
      transport-helper: skip ls-refs if unnecessary
      transport: teach all vtables to allow fetch first
      cache-tree: do not lazy-fetch tentative tree
      merge-recursive: symlink's descendants not in way
      send-pack: never fetch when checking exclusions

Josh Steadmon (7):
      t7503: verify proper hook execution
      fetch: add trace2 instrumentation
      push: add trace2 instrumentation
      docs: mention trace2 target-dir mode in git-config
      docs: clarify trace2 version invariants
      trace2: discard new traces if target directory has too many files
      trace2: write discard message to sentinel files

Junio C Hamano (14):
      First batch after Git 2.23
      t: use LF variable defined in the test harness
      t3005: remove unused variable
      Second batch
      Third batch
      SubmittingPatches: git-gui has a new maintainer
      Fourth batch
      Fifth batch
      Sixth batch
      transport: push codepath can take arbitrary repository
      Seventh batch
      Eighth batch
      Ninth batch
      Git 2.24-rc0

Kunal Tyagi (1):
      add -i: show progress counter in the prompt

Martin Ågren (14):
      Documentation: wrap blocks with "--"
      git-merge-base.txt: render indentations correctly under Asciidoctor
      Documentation: wrap config listings in "----"
      git-ls-remote.txt: wrap shell listing in "----"
      git-receive-pack.txt: wrap shell [script] listing in "----"
      git-merge-index.txt: wrap shell listing in "----"
      gitweb.conf.txt: switch pluses to backticks to help Asciidoctor
      Doc/Makefile: give mansource/-version/-manual attributes
      asciidoctor-extensions: provide `<refmiscinfo/>`
      doc-diff: replace --cut-header-footer with --cut-footer
      user-manual.txt: add missing section label
      user-manual.txt: change header notation
      asciidoctor-extensions.rb: handle "book" doctype in linkgit
      user-manual.txt: render ASCII art correctly under Asciidoctor

Masaya Suzuki (1):
      fetch: use oidset to keep the want OIDs for faster lookup

Matheus Tavares (1):
      grep: fix worktree case in submodules

Matthew DeVore (10):
      list-objects-filter: encapsulate filter components
      list-objects-filter: put omits set in filter struct
      list-objects-filter-options: always supply *errbuf
      list-objects-filter: implement composite filters
      list-objects-filter-options: move error check up
      list-objects-filter-options: make filter_spec a string_list
      strbuf: give URL-encoding API a char predicate fn
      list-objects-filter-options: allow mult. --filter
      list-objects-filter-options: clean up use of ALLOC_GROW
      list-objects-filter-options: make parser void

Max Rothman (1):
      completion: add missing completions for log, diff, show

Michael J Gruber (3):
      merge: do no-verify like commit
      git-merge: honor pre-merge-commit hook
      merge: --no-verify to bypass pre-merge-commit hook

Mike Hommey (3):
      notes: avoid leaking duplicate entries
      commit: free the right buffer in release_commit_memory
      http: don't leak urlmatch_config.vars

Mischa POSLAWSKY (1):
      ref-filter: initialize empty name or email fields

Paul Mackerras (1):
      gitk: Make web links clickable

Paul Wise (1):
      gitk: Use right colour for remote refs in the "Tags and heads" dialog

Pedro Sousa (1):
      doc: MyFirstContribution: fix cmd placement instructions

Philip.McGraw (1):
      git-p4: auto-delete named temporary file

Phillip Wood (3):
      rebase -i: always update HEAD before rewording
      rebase -i: check for updated todo after squash and reword
      sequencer: simplify root commit creation

Pratyush Yadav (6):
      git-gui: call do_quit before destroying the main window
      git-gui: allow reverting selected lines
      git-gui: allow reverting selected hunk
      git-gui: return early when patch fails to apply
      git-gui: allow undoing last revert
      Documentation: update the location of the git-gui repo

René Scharfe (28):
      nedmalloc: do assignments only after the declaration section
      nedmalloc: avoid compiler warning about unused value
      archive-tar: report wrong pax extended header length
      archive-tar: fix pax extended header length calculation
      archive-tar: use size_t in strbuf_append_ext_header()
      archive-tar: turn length miscalculation warning into BUG
      parseopt: move definition of enum parse_opt_result up
      sha1-name: make sort_ambiguous_oid_array() thread-safe
      log-tree: always use return value of strbuf_detach()
      grep: use return value of strbuf_detach()
      trace2: use warning() directly in tr2_dst_malformed_warning()
      help: make help_unknown_ref() NORETURN
      tree: simplify parse_tree_indirect()
      tag: factor out get_tagged_oid()
      use get_tagged_oid()
      log: test --decorate-refs-exclude with --simplify-by-decoration
      log-tree: call load_ref_decorations() in get_name_decoration()
      rev-parse: demonstrate overflow of N for "foo^N" and "foo~N"
      sha1-name: check for overflow of N in "foo^N" and "foo~N"
      commit-graph: use commit_list_count()
      sha1_name: simplify strbuf handling in interpret_nth_prior_checkout()
      git: use COPY_ARRAY and MOVE_ARRAY in handle_alias()
      treewide: remove duplicate #include directives
      convert: fix handling of dashless UTF prefix in validate_encoding()
      tests: remove "cat foo" before "test_i18ngrep bar foo"
      http-push: simplify deleting a list item
      column: use utf8_strnwidth() to strip out ANSI color escapes
      remote-curl: use argv_array in parse_push()

SZEDER Gábor (33):
      t5510-fetch: fix negated 'test_i18ngrep' invocation
      t5510-fetch: run non-httpd-specific test before sourcing 'lib-httpd.sh'
      t5703: run all non-httpd-specific tests before sourcing 'lib-httpd.sh'
      t: warn against adding non-httpd-specific tests after sourcing 'lib-httpd'
      t5318-commit-graph: use 'test_expect_code'
      commit-graph: turn a group of write-related macro flags into an enum
      commit-graph: error out on invalid commit oids in 'write --stdin-commits'
      t0000-basic: use realistic test script names in the verbose tests
      tests: show the test name and number at the start of verbose output
      completion: fix a typo in a comment
      completion: complete more values of more 'color.*' configuration variables
      completion: add tests for 'git config' completion
      completion: deduplicate configuration sections
      completion: use 'sort -u' to deduplicate config variable names
      completion: simplify inner 'case' pattern in __gitcomp()
      completion: split _git_config()
      completion: complete configuration sections and variable names for 'git -c'
      completion: complete values of configuration variables after 'git -c var='
      completion: complete config variables names and values for 'git clone -c'
      completion: complete config variables and values for 'git clone --config='
      worktree remove: clarify error message on dirty worktree
      diff: 'diff.indentHeuristic' is no longer experimental
      line-log: extract pathspec parsing from line ranges into a helper function
      line-log: avoid unnecessary full tree diffs
      t7300-clean: demonstrate deleting nested repo with an ignored file breakage
      t/lib-git-svn.sh: check GIT_TEST_SVN_HTTPD when running SVN HTTP tests
      ci: restore running httpd tests
      commit-graph: don't show progress percentages while expanding reachable commits
      Revert "progress: use term_clear_line()"
      Test the progress display
      t/helper: ignore only executable files
      travis-ci: do not skip successfully tested trees in debug mode
      name-rev: avoid cutoff timestamp underflow

Stephen Boyd (1):
      userdiff: add a builtin pattern for dts files

Stephen P. Smith (2):
      Quit passing 'now' to date code
      test_date.c: remove reference to GIT_TEST_DATE_NOW

Sun Chao (1):
      pack-refs: always refresh after taking the lock file

Tanay Abhra (1):
      t1308-config-set: fix a test that has a typo

Taylor Blau (4):
      banned.h: fix vsprintf()'s ban message
      t/t5318: introduce failing 'git commit-graph write' tests
      commit-graph.c: handle commit parsing errors
      commit-graph.c: handle corrupt/missing trees

Thomas Gummerer (6):
      t0021: make sure clean filter runs
      push: disallow --all and refspecs when remote.<name>.mirror is set
      factor out refresh_and_write_cache function
      merge: use refresh_and_write_cache
      stash: make sure to write refreshed cache
      range-diff: don't segfault with mode-only changes

Tobias Klauser (1):
      git-svn: trim leading and trailing whitespaces in author name

Torsten Bögershausen (1):
      mingw: support UNC in git clone file://server/share/repo

Varun Naik (2):
      checkout.c: unstage empty deleted ita files
      restore: add test for deleted ita files

YanKe (1):
      gitk: Add Chinese (zh_CN) translation

brian m. carlson (43):
      builtin/replace: make hash size independent
      patch-id: convert to use the_hash_algo
      fetch-pack: use parse_oid_hex
      builtin/receive-pack: switch to use the_hash_algo
      builtin/blame: switch uses of GIT_SHA1_HEXSZ to the_hash_algo
      builtin/rev-parse: switch to use the_hash_algo
      blame: remove needless comparison with GIT_SHA1_HEXSZ
      show-index: switch hard-coded constants to the_hash_algo
      connected: switch GIT_SHA1_HEXSZ to the_hash_algo
      bundle: switch to use the_hash_algo
      combine-diff: replace GIT_SHA1_HEXSZ with the_hash_algo
      config: use the_hash_algo in abbrev comparison
      sha1-lookup: switch hard-coded constants to the_hash_algo
      bisect: switch to using the_hash_algo
      sequencer: convert to use the_hash_algo
      pack-write: use hash_to_hex when writing checksums
      builtin/repack: write object IDs of the proper length
      builtin/worktree: switch null_sha1 to null_oid
      cache: remove null_sha1
      wt-status: convert struct wt_status to object_id
      packfile: replace sha1_to_hex
      builtin/index-pack: replace sha1_to_hex
      builtin/receive-pack: replace sha1_to_hex
      rerere: replace sha1_to_hex
      builtin/show-index: replace sha1_to_hex
      midx: switch to using the_hash_algo
      t3201: abstract away SHA-1-specific constants
      t3206: abstract away hash size constants
      t3301: abstract away SHA-1-specific constants
      t3305: make hash size independent
      t3306: abstract away SHA-1-specific constants
      t3404: abstract away SHA-1-specific constants
      t3430: avoid hard-coded object IDs
      t3506: make hash independent
      t3600: make hash size independent
      t3800: make hash-size independent
      t3903: abstract away SHA-1-specific constants
      t4000: make hash size independent
      t4002: make hash independent
      t4009: make hash size independent
      path: add a function to check for path suffix
      am: reload .gitattributes after patching it
      Documentation: fix build with Asciidoctor 2

Ævar Arnfjörð Bjarmason (20):
      log tests: test regex backends in "--encode=<enc>" tests
      grep: don't use PCRE2?_UTF8 with "log --encoding=<non-utf8>"
      t4210: skip more command-line encoding tests on MinGW
      grep: inline the return value of a function call used only once
      grep tests: move "grep binary" alongside the rest
      grep tests: move binary pattern tests into their own file
      grep: make the behavior for NUL-byte in patterns sane
      grep: drop support for \0 in --fixed-strings <pattern>
      grep: remove the kwset optimization
      grep: use PCRE v2 for optimized fixed-string search
      grep: remove overly paranoid BUG(...) code
      grep: stop "using" a custom JIT stack with PCRE v2
      grep: stop using a custom JIT stack with PCRE v1
      grep: consistently use "p->fixed" in compile_regexp()
      grep: create a "is_fixed" member in "grep_pat"
      grep: stess test PCRE v2 on invalid UTF-8 data
      grep: do not enter PCRE2_UTF mode on fixed matching
      t3432: distinguish "noop-same" v.s. "work-same" in "same head" tests
      t3432: test for --no-ff's interaction with fast-forward
      rebase tests: test linear branch topology


^ permalink raw reply	[relevance 1%]

Results 1-25 of 25 | reverse | options above
-- pct% links below jump to the message on this page, permalinks otherwise --
2019-07-17 14:39     [RFC PATCH 0/9] rebase -i: extend rebase.missingCommitsCheck to `--edit-todo' and co Alban Gruin
2019-11-04  9:54  3% ` [RFC PATCH v2 0/2] rebase -i: extend rebase.missingCommitsCheck to `--edit-todo' Alban Gruin
2019-10-18  6:29  1% [ANNOUNCE] Git v2.24.0-rc0 Junio C Hamano
2019-10-24  6:00  2% [ANNOUNCE] Git v2.24.0-rc1 Junio C Hamano
2019-10-30  6:56  0% ` Elijah Newren
2019-10-30 20:52  0%   ` Elijah Newren
2019-11-02  3:25  0%   ` Junio C Hamano
2019-10-30  7:14  2% [ANNOUNCE] Git v2.24.0-rc2 Junio C Hamano
2019-11-02 13:35  5% [GIT PULL] l10n updates for 2.24.0 round 2 Jiang Xin
2019-11-04  5:36  3% [ANNOUNCE] Git v2.24.0 Junio C Hamano
2019-11-04  5:37  1% What's cooking in git.git (Nov 2019, #01; Mon, 4) Junio C Hamano
2019-11-05  1:20  0% ` Elijah Newren
2019-11-08  8:40  1% What's cooking in git.git (Nov 2019, #02; Fri, 8) Junio C Hamano
2019-11-22 23:10 11% git 2.24: git revert <commit1> <commit2> requires extra '--continue'? Brian Norris
2019-11-23  0:34  6% ` SZEDER Gábor
2019-11-23  9:53  8%   ` Phillip Wood
2019-12-04 20:04     [BUG?] ls-files -o now traverses nested repo when given multiple pathspecs Kyle Meyer
2019-12-08  5:31     ` Kyle Meyer
2019-12-08  5:42  5%   ` Elijah Newren
2019-12-08  7:46  0%     ` Elijah Newren
2019-12-13 19:20  5% Parallel fetch and commit graph writing results in locking failure (even on linux) Thomas Braun
2019-12-13 19:35  0% ` Derrick Stolee
2020-01-23 23:12 14% Misrendering of git 2.24 log --graph Jan Engelhardt
2020-01-24 14:05  7% ` Derrick Stolee
2020-01-24 14:06  8%   ` Derrick Stolee
2020-01-24 16:08  8%   ` Jan Engelhardt
2020-03-12 12:23     [Question] Is extensions.partialClone defunct? Derrick Stolee
2020-03-12 17:07     ` Jonathan Tan
2020-03-12 17:51       ` Jonathan Nieder
2020-03-12 21:54         ` Christian Couder
2020-03-12 23:09           ` Jonathan Nieder
2020-03-14  6:43             ` Christian Couder
2021-06-05 13:01  5%           ` Tao Klerks
2023-04-01 15:50  5% macOS git grep change in required character classes Matt Gardner

Code repositories for project(s) associated with this public inbox

	https://80x24.org/mirrors/git.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).