* Re: Bugreport: Prefix - is ignored when sorting (on committerdate)
2023-01-10 13:33 7% ` Fredrik Öberg
@ 2023-01-10 13:47 0% ` Jeff King
0 siblings, 0 replies; 42+ results
From: Jeff King @ 2023-01-10 13:47 UTC (permalink / raw)
To: Fredrik Öberg; +Cc: Martin Ågren, git
On Tue, Jan 10, 2023 at 02:33:14PM +0100, Fredrik Öberg wrote:
> I am trying to understand what I did wrong. I guess you are saying
> that I tried to use the field committerdate, which is not available on
> the tags?
Right. The committerdate of a tag is a blank string, so sorting on it
was not doing anything.
> And that the handling of this situation has changed since
> git/2.23? Hence I got different results?
Sort of. Your committerdate sort was always doing nothing, but due to
the buggy way that the sort handled ties in 2.23 and older, it happened
to do a reverse refname sort instead of a forward refname sort. Now it
does a forward refname sort to break ties.
But the most important change for you is to actually do a real date
sort, so the tie-breaking should not be important either way.
-Peff
^ permalink raw reply [relevance 0%]
* Re: Bugreport: Prefix - is ignored when sorting (on committerdate)
@ 2023-01-10 13:33 7% ` Fredrik Öberg
2023-01-10 13:47 0% ` Jeff King
0 siblings, 1 reply; 42+ results
From: Fredrik Öberg @ 2023-01-10 13:33 UTC (permalink / raw)
To: Martin Ågren; +Cc: Jeff King, git
Thanks for the quick response! I've been playing with creatordate and
it seems to work with with both older and newer versions of git.
I am trying to understand what I did wrong. I guess you are saying
that I tried to use the field committerdate, which is not available on
the tags? And that the handling of this situation has changed since
git/2.23? Hence I got different results?
/Fredrik
Den tis 10 jan. 2023 kl 14:05 skrev Martin Ågren <martin.agren@gmail.com>:
>
> On Tue, 10 Jan 2023 at 13:18, Jeff King <peff@peff.net> wrote:
> >
> > On Tue, Jan 10, 2023 at 11:54:16AM +0100, Martin Ågren wrote:
> >
> > > I suppose it could be argued that the '-' should be applied to the
> > > fallback as well, e.g., to uphold some sort of "using '-' should give
> > > the same result as piping the whole thing through tac" (i.e., respecting
> > > `s->reverse` in `compare_refs()`, if you're following along in
> > > 7c5045fc18). With multiple sort keys, some with '-' and some
> > > without, we'd grab the '-' from the first key. It seems like that could
> > > make sense, actually.
> >
> > I dunno. Just because you are reverse-sorting on one field doesn't
> > necessarily imply that you want the tie-breaker to reverse-sort, too. I
> [...]
>
> > I could see it depending on exactly what you're trying to do. Which
> > leads me to think the rule should be as simple as possible. You can
> > always do:
> >
> > git for-each-ref --sort=-refname --sort=-committerdate
> >
> > to specify exactly what you want.
>
> Indeed. So probably best to leave it as-is, then.
>
> Martin
^ permalink raw reply [relevance 7%]
* Re: Partial Clone, and a strange slow rev-list call on fetch
2021-06-02 4:56 6% Partial Clone, and a strange slow rev-list call on fetch Tao Klerks
@ 2021-06-02 11:18 0% ` Derrick Stolee
0 siblings, 0 replies; 42+ results
From: Derrick Stolee @ 2021-06-02 11:18 UTC (permalink / raw)
To: Tao Klerks, git
On 6/2/21 12:56 AM, Tao Klerks wrote:
> Hi folks,
>
> I'm learning to use Partial Clone, and finding a behavior that I don't
> know how to interpret or investigate:
>
> Under some circumstances, doing a plain "git fetch <remote>" on a
> filtered repo results in a very long (6-30 min?) wait, during which I
> can see the following command being executed in the background:
>
> /usr/libexec/git-core/git rev-list --objects --stdin
> --exclude-promisor-objects --not --all --quiet --alternate-refs
>
> So far, I have noted this happening under two distinct circumstances:
> * Anytime I try to fetch on a filtered repo with a git 2.23 client -
> shorter pause
> * When I try to fetch with a recent (2.31) client in a repo where one
> large packfile has no *.promisor file (but the others do, and the
> remote I am fetching from has promisor=true) - looong pause
This makes me think that there was a bug fix for this situation
but the fix requires doing extra work. To help track this down,
could you re-run the scenario with GIT_TRACE2_PERF=1 which will
give the full Git process stack as we reach that rev-list call.
> Can anyone explain what this rev-list call intends, and/or any hints
> as to how I could see what the stdin content being fed to it from the
> parent process actually is?
>
> For background, I ended up in the "missing promisor file" situation by
> trying to be (too?) clever about the blobs present in my clone: I
> cloned unfiltered shallow to a certain depth with certain refspecs,
> then added the promisor and filter config, and finally fetched with
> "--unshallow". This produced exactly the blob-population state I
> intended, but meant the original first packfile had no ".promisor"
> file.
This is the critical point: you first cloned without a filter,
and then converted the remote to a promisor remote without
marking the pack-files you received from that remote as promisor
pack-files. That means that Git needs to do some work to discover
which objects are reachable from promisor packs or not, and that
extra work is slowing you down.
Partial clone is designed to work where every remote is a
promisor remote, and always has been so. Any deviation from that
norm is venturing into uncharted territory and will have friction
like this. Another similar issue comes when you have multiple
remotes and one of them is a promisor remote and another is not.
The general advice right now is to use partial clone only if you
will use it for all remotes across the entire existence of the
repo.
Part of the difficulty here is that once you download that first
pack-file from the remote, Git has no way of knowing that the
pack came from that source or was created in another way. We
have no way to be sure that we can "upgrade" the remote in an
automated process.
This does make me wonder what happens when Git repacks objects
created locally and then starts fetching from a promisor remote.
There are some challenges here, for sure. Most likely also some
potential gains, but it is unlikely to create a seamless
experience for what you are trying to do.
Thanks,
-Stolee
^ permalink raw reply [relevance 0%]
* Partial Clone, and a strange slow rev-list call on fetch
@ 2021-06-02 4:56 6% Tao Klerks
2021-06-02 11:18 0% ` Derrick Stolee
0 siblings, 1 reply; 42+ results
From: Tao Klerks @ 2021-06-02 4:56 UTC (permalink / raw)
To: git
Hi folks,
I'm learning to use Partial Clone, and finding a behavior that I don't
know how to interpret or investigate:
Under some circumstances, doing a plain "git fetch <remote>" on a
filtered repo results in a very long (6-30 min?) wait, during which I
can see the following command being executed in the background:
/usr/libexec/git-core/git rev-list --objects --stdin
--exclude-promisor-objects --not --all --quiet --alternate-refs
So far, I have noted this happening under two distinct circumstances:
* Anytime I try to fetch on a filtered repo with a git 2.23 client -
shorter pause
* When I try to fetch with a recent (2.31) client in a repo where one
large packfile has no *.promisor file (but the others do, and the
remote I am fetching from has promisor=true) - looong pause
Can anyone explain what this rev-list call intends, and/or any hints
as to how I could see what the stdin content being fed to it from the
parent process actually is?
For background, I ended up in the "missing promisor file" situation by
trying to be (too?) clever about the blobs present in my clone: I
cloned unfiltered shallow to a certain depth with certain refspecs,
then added the promisor and filter config, and finally fetched with
"--unshallow". This produced exactly the blob-population state I
intended, but meant the original first packfile had no ".promisor"
file.
Creating an empty promisor file for that packfile *appears* to fix the
issue, and hasn't produced any weird side-effects that I've noted, and
from the "removing partial clone filtering" description from gitlab at
https://docs.gitlab.com/ee/topics/git/partial_clone.html#remove-partial-clone-filtering,
appears to be a reasonable thing to do (the implication there is that
a promisor packfile with no missing objects hs exactly the same
structure as a non-promisor packfile), but of course I would welcome
any validation or correction to that assumption.
Thanks for any info,
Tao Klerks
^ permalink raw reply [relevance 6%]
* Re: Why won't git checkout a branch?
@ 2020-07-01 15:13 7% ` Chris Torek
0 siblings, 0 replies; 42+ results
From: Chris Torek @ 2020-07-01 15:13 UTC (permalink / raw)
To: noloader; +Cc: Andreas Schwab, Git List
On Wed, Jul 1, 2020 at 3:10 AM Jeffrey Walton <noloader@gmail.com> wrote:
> This does not look normal, either. I don't want to create a new
> branch. I want to work on the existing branch.
Technically, you *have to* create a new branch here: you do
not have an `m4` branch (yet). Your local repository's branches
are independent of the branches in the repository you cloned.
(You could work in detached HEAD state to avoid the technical
requirement here but that's not practical for normal humans. :-) )
The suffix-`--` trick works in old versions of Git, creating the `m4`
branch from the `origin/m4` name. If you upgrade to Git 2.23 or
later and use `git switch`, I think you will find that it's generally
more user friendly.
Chris
^ permalink raw reply [relevance 7%]
* Re: [BUG?] ls-files -o now traverses nested repo when given multiple pathspecs
2019-12-08 5:42 6% ` Elijah Newren
@ 2019-12-08 7:46 0% ` Elijah Newren
0 siblings, 0 replies; 42+ 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 6% ` Elijah Newren
2019-12-08 7:46 0% ` Elijah Newren
0 siblings, 1 reply; 42+ 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 6%]
* Re: git-rebase produces incorrect output
2019-11-29 8:21 6% git-rebase produces incorrect output Pavel Roskin
2019-11-29 13:31 0% ` Philip Oakley
@ 2019-11-30 4:22 0% ` Elijah Newren
1 sibling, 0 replies; 42+ results
From: Elijah Newren @ 2019-11-30 4:22 UTC (permalink / raw)
To: Pavel Roskin; +Cc: Git Mailing List
On Fri, Nov 29, 2019 at 12:24 AM Pavel Roskin <plroskin@gmail.com> wrote:
>
> Hi!
>
> I've discovered an issue with "git rebase" producing a subtly
> incorrect file. In fact, that files even compiled but failed in unit
> tests! That's so scary that I'm going to stop using "git rebase" for
> now. Fortunately, "git rebase --merge" is working correctly, so I'll
> use it. Too bad there is no option to use "--merge" by default.
Indeed. We really should fix that, if not just make it the default
for everyone.
> The issue was observed in git 2.23 and reproduced in today's next
> branch (2.24.0.449.g4c06f74957) on up-to-date Fedora 31 x86_64.
>
> I've created a repository that demonstrates the issue:
> https://github.com/proski/git-rebase-demo
>
> The branch names should be self-explanatory. "master" is the base,
> "branch1" and "branch2" contain one change each. If "branch1" is
> rebased on top of "branch2", the result is incorrect, saved in the
> "rebase-bad" branch. If "git rebase -m" is used, the result is
> correct, saved in the "merge-good" branch.
>
> The files in "rebase-bad" and "merge-good" have exactly the same lines
> but in a different order. Yet the changes on branch1 and branch2
> affect non-overlapping parts of the file. There should be no doubt how
> the merged code should look like.
>
> I believe the change on branch2 shifts the lines, so that the first
> change from branch1 is applies to a place below the intended location,
> and then git goes back to an earlier line to apply the next hunk. I
> can imagine that it would do the right thing in case of swapped blocks
> of code. Yet I have a real life example where it does a very wrong
> thing.
>
> Indeed, "git diff origin/branch2 origin/rebase-bad" and "git diff
> origin/branch2 origin/merge-good" both produce diffs of 9957 bytes
> long, different only in the order of the hunks.
>
> Another interesting data point - "git rebase --interactive" is working
> correctly.
Thanks for the detailed report and simple testcase. Turns out the
--interactive isn't so interesting, because a few cycles back we
re-implemented the --merge behavior on top of the interactive
machinery so the two use the exact same engine. Anyway, I can
duplicate the problem and noticed a few interesting things. Since the
am-backend for rebase (the default) basically just uses diff and
apply, I tried duplicating with just those after looking at things and
noticing that it appeared to be applying patch hunks on the wrong
lines:
$ git switch branch2
$ git reset --hard origin/branch2
HEAD is now at 1331204 Change on branch 2
$ git diff -U3 origin/master origin/branch1 >diff.patch
$ git apply diff.patch
$ git diff --shortstat origin/merge-good
1 file changed, 43 insertions(+), 43 deletions(-)
$ git diff --shortstat origin/rebase-bad
So, this reproduces your bad results. Let's repeat with -U4:
$ git reset --hard origin/branch2
HEAD is now at 1331204 Change on branch 2
$ git diff -U4 origin/master origin/branch1 >diff.patch
$ git apply diff.patch
$ git diff --shortstat origin/merge-good
1 file changed, 10 insertions(+), 10 deletions(-)
$ git diff --shortstat origin/rebase-bad
1 file changed, 37 insertions(+), 37 deletions(-)
That gives us a result that matches neither merge-good nor rebase-bad,
but is closer to the good side. Let's try again with -U5:
$ git reset --hard origin/branch2
HEAD is now at 1331204 Change on branch 2
$ git diff -U5 origin/master origin/branch1 >diff.patch
$ git apply diff.patch
$ git diff --shortstat origin/merge-good
$ git diff --shortstat origin/rebase-bad
1 file changed, 43 insertions(+), 43 deletions(-)
Ahah! With five lines of context, git diff & git apply can produce
the correct result.
Sadly, I tried to force this with git rebase, but -C5 only affected
the apply side and there's no option to pass to rebase to pass through
-U5 to the diff logic. Also, although there is a diff.context config
option, git-am ignores it (Note that git_am_config() does not directly
check that value and it calls git_default_config(), not
git_diff_ui_config() or even git_diff_basic_config()). So, it's not
possible to force the am-based rebase to get the right answer
currently even if you figure out what the problem is.
The merge-based rebase, by contrast, essentially benfits from having
the entire files of each version accessible so it automatically gets
it right.
So, to summarize here:
* you have a case where the default 3 lines of context mess stuff
up; but rebase --merge works great
* am doesn't have a -U option, and ignores the diff.context setting,
making it impossible to force the am backend to work on your case
and also:
* rebase doesn't have an option to use the merge/interactive backend
by default (nor an --am option to override it)
Also,
* The performance of the merge/interactive backend is slightly
better than the am-backend
(https://public-inbox.org/git/CABPp-BF=ev03WgODk6TMQmuNoatg2kiEe5DR__gJ0OTVqHSnfQ@mail.gmail.com/)
and will be getting better
* The merge/interactive backend supports many more options than the
am-backend, though the am one still has a few the merge backend
doesn't. Once the ra/rebase-i-more-options topic merges, --whitespace
will be the only consequential option that the am-backend supports
that the merge/interactive-backend doesn't. (There's also -C, but as
noted above, the merge/interactive backend already have access to the
full file).
Maybe we should just switch the default, for everyone? (And provide
an --am option to override it and a config setting to get the old
default?)
^ permalink raw reply [relevance 0%]
* Re: git-rebase produces incorrect output
2019-11-29 8:21 6% git-rebase produces incorrect output Pavel Roskin
@ 2019-11-29 13:31 0% ` Philip Oakley
2019-11-30 4:22 0% ` Elijah Newren
1 sibling, 0 replies; 42+ results
From: Philip Oakley @ 2019-11-29 13:31 UTC (permalink / raw)
To: Pavel Roskin, git
On 29/11/2019 08:21, Pavel Roskin wrote:
> Hi!
>
> I've discovered an issue with "git rebase" producing a subtly
> incorrect file. In fact, that files even compiled but failed in unit
> tests! That's so scary that I'm going to stop using "git rebase" for
> now. Fortunately, "git rebase --merge" is working correctly, so I'll
> use it. Too bad there is no option to use "--merge" by default.
>
> The issue was observed in git 2.23 and reproduced in today's next
> branch (2.24.0.449.g4c06f74957) on up-to-date Fedora 31 x86_64.
>
> I've created a repository that demonstrates the issue:
> https://github.com/proski/git-rebase-demo
>
> The branch names should be self-explanatory. "master" is the base,
> "branch1" and "branch2" contain one change each. If "branch1" is
> rebased on top of "branch2", the result is incorrect, saved in the
> "rebase-bad" branch. If "git rebase -m" is used, the result is
> correct, saved in the "merge-good" branch.
>
> The files in "rebase-bad" and "merge-good" have exactly the same lines
> but in a different order. Yet the changes on branch1 and branch2
> affect non-overlapping parts of the file. There should be no doubt how
> the merged code should look like.
>
> I believe the change on branch2 shifts the lines, so that the first
> change from branch1 is applies to a place below the intended location,
> and then git goes back to an earlier line to apply the next hunk. I
> can imagine that it would do the right thing in case of swapped blocks
> of code. Yet I have a real life example where it does a very wrong
> thing.
>
> Indeed, "git diff origin/branch2 origin/rebase-bad" and "git diff
> origin/branch2 origin/merge-good" both produce diffs of 9957 bytes
> long, different only in the order of the hunks.
>
> Another interesting data point - "git rebase --interactive" is working
> correctly.
>
Which specific lines is this on?
Using the Github compare facility [1], I see multiple changes, some of
which are probably just noise from the example.
https://github.com/proski/git-rebase-demo/compare/merge-good...rebase-bad
Philip
[1]
https://help.github.com/en/github/committing-changes-to-your-project/comparing-commits-across-time
^ permalink raw reply [relevance 0%]
* git-rebase produces incorrect output
@ 2019-11-29 8:21 6% Pavel Roskin
2019-11-29 13:31 0% ` Philip Oakley
2019-11-30 4:22 0% ` Elijah Newren
0 siblings, 2 replies; 42+ results
From: Pavel Roskin @ 2019-11-29 8:21 UTC (permalink / raw)
To: git
Hi!
I've discovered an issue with "git rebase" producing a subtly
incorrect file. In fact, that files even compiled but failed in unit
tests! That's so scary that I'm going to stop using "git rebase" for
now. Fortunately, "git rebase --merge" is working correctly, so I'll
use it. Too bad there is no option to use "--merge" by default.
The issue was observed in git 2.23 and reproduced in today's next
branch (2.24.0.449.g4c06f74957) on up-to-date Fedora 31 x86_64.
I've created a repository that demonstrates the issue:
https://github.com/proski/git-rebase-demo
The branch names should be self-explanatory. "master" is the base,
"branch1" and "branch2" contain one change each. If "branch1" is
rebased on top of "branch2", the result is incorrect, saved in the
"rebase-bad" branch. If "git rebase -m" is used, the result is
correct, saved in the "merge-good" branch.
The files in "rebase-bad" and "merge-good" have exactly the same lines
but in a different order. Yet the changes on branch1 and branch2
affect non-overlapping parts of the file. There should be no doubt how
the merged code should look like.
I believe the change on branch2 shifts the lines, so that the first
change from branch1 is applies to a place below the intended location,
and then git goes back to an earlier line to apply the next hunk. I
can imagine that it would do the right thing in case of swapped blocks
of code. Yet I have a real life example where it does a very wrong
thing.
Indeed, "git diff origin/branch2 origin/rebase-bad" and "git diff
origin/branch2 origin/merge-good" both produce diffs of 9957 bytes
long, different only in the order of the hunks.
Another interesting data point - "git rebase --interactive" is working
correctly.
--
Regards,
Pavel Roskin
^ permalink raw reply [relevance 6%]
* difftool fails with dangling symlinks, writes to targets outside of the repository
@ 2019-11-22 12:37 7% Philippe
0 siblings, 0 replies; 42+ results
From: Philippe @ 2019-11-22 12:37 UTC (permalink / raw)
To: Git mailing list
Hi all,
I'm using a git repository for configuration management which contains
several dangling symlinks (which only make sense on the to be deployed
system, fwiw). Now, using git 2.23, I ran into a problem regarding the
difftool, which fails when such a symlink is involved in a changeset.
The best way to describe that problem is probably to provide an example.
> #!/bin/bash
> tmp=$(mktemp -d)
> trap "rm -rf ${tmp}" 0 1 2 15
>
> set -x
>
> cd ${tmp}
> git init
> ln -s ../doesnot/exist myfile
> git add myfile ; git commit -m "initial checkin" myfile
>
> git checkout -b mybranch
> rm -f myfile ; echo "foo" > myfile
> git commit -am "typechange"
>
> git difftool -d master..mybranch
The last call fails with:
> fatal: could not open '/tmp/git-difftool.2wHaR9/left/myfile' for writing: No such file or directory
Neither specifying "--symlinks" nor "--no-symlinks" resolves that.
Playing around with this issue lead me to another strange behaviour.
Difftool might overwrite symlink targets that are not part of the
repository. Please take a look at the following script:
> #!/bin/bash
> tmp=$(mktemp -d)
> trap "rm -rf ${tmp}" 0 1 2 15
>
> set -x
>
> echo "hello world" > /tmp/testfile
> cat /tmp/testfile
>
> cd ${tmp}
> git init
> ln -s /tmp/testfile myfile
> git add myfile ; git commit -m "initial checkin" myfile
>
> git checkout -b mybranch
> rm -f myfile ; echo "foo" > myfile
> git commit -am "typechange"
>
> git difftool -d master..mybranch
>
> cat /tmp/testfile
Here, difftool overwrites the /tmp/testfile's content "hello world" with
"/tmp/testfile".
Did I run into a bug or is it a layer 8 problem?
Regards,
Philippe
^ permalink raw reply [relevance 7%]
* [ANNOUNCE] Git v2.24.0
@ 2019-11-04 5:36 1% Junio C Hamano
0 siblings, 0 replies; 42+ 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 1%]
* [ANNOUNCE] Git v2.24.0-rc2
@ 2019-10-30 7:14 1% Junio C Hamano
0 siblings, 0 replies; 42+ 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 1%]
* [ANNOUNCE] Git v2.24.0-rc1
@ 2019-10-24 6:00 1% Junio C Hamano
0 siblings, 0 replies; 42+ 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 1%]
* [ANNOUNCE] Git v2.24.0-rc0
@ 2019-10-18 6:29 1% Junio C Hamano
0 siblings, 0 replies; 42+ 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%]
* Re: [PATCH v3 00/20] hashmap bug/safety/ease-of-use fixes
2019-10-06 23:30 2% [PATCH v3 00/20] hashmap bug/safety/ease-of-use fixes Eric Wong
@ 2019-10-08 8:58 0% ` Johannes Schindelin
0 siblings, 0 replies; 42+ results
From: Johannes Schindelin @ 2019-10-08 8:58 UTC (permalink / raw)
To: Eric Wong; +Cc: Junio C Hamano, git, Derrick Stolee, Phillip Wood
Hi Eric & Junio,
On Sun, 6 Oct 2019, Eric Wong wrote:
> v3 changes:
> - use __typeof__ to avoid invalid clang warning on uninitialized var
> - formatting fixes recommended by Stolee
> - add Reviewed-by for Stolee
> - add patch 20 to update docs to drop first member requirement
This has quite a bit of fallout, even more than previous rounds, it
seems. I need at least these fixup???s to fix the build of `pu`:
https://github.com/git-for-windows/git/commit/f74259754971b427a14e6290681e18950824b99d
https://github.com/git-for-windows/git/commit/124c8bc08e974e76ca7d956dc07eb288e71d639e
https://github.com/git-for-windows/git/commit/45948433d1b48ff513fbd37f134c0f1491c78192
Junio, feel free to fetch and squash those into the appropriate merge
commit(s) (I feel that 4432e8b5f36 (Merge branch 'ds/sparse-cone' into
pu, 2019-10-08) may be the right spot).
Thanks,
Dscho
>
> v2 here:
> https://public-inbox.org/git/20190924010324.22619-1-e@80x24.org/
>
> The following changes since commit 745f6812895b31c02b29bdfe4ae8e5498f776c26:
>
> First batch after Git 2.23 (2019-08-22 12:41:04 -0700)
>
> are available in the Git repository at:
>
> https://80x24.org/git-svn.git hashmap-wip-v3
>
> for you to fetch changes up to 4ec5200646d6b9363e64e2002eb374aa888a6c88:
>
> hashmap_entry: remove first member requirement from docs (2019-10-06 23:05:22 +0000)
>
> ----------------------------------------------------------------
> 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
>
> attr.c | 24 ++---
> blame.c | 25 ++---
> builtin/describe.c | 21 +++--
> builtin/difftool.c | 56 +++++++-----
> builtin/fast-export.c | 15 ++-
> builtin/fetch.c | 32 ++++---
> config.c | 24 ++---
> contrib/coccinelle/hashmap.cocci | 16 ++++
> diff.c | 31 ++++---
> diffcore-rename.c | 15 ++-
> git-compat-util.h | 38 ++++++++
> hashmap.c | 58 +++++++-----
> hashmap.h | 176 +++++++++++++++++++++++++++++-------
> merge-recursive.c | 87 ++++++++++--------
> merge-recursive.h | 4 +-
> name-hash.c | 57 ++++++------
> oidmap.c | 20 ++--
> oidmap.h | 6 +-
> packfile.c | 22 +++--
> patch-ids.c | 18 ++--
> range-diff.c | 10 +-
> ref-filter.c | 33 ++++---
> refs.c | 25 +++--
> remote.c | 21 +++--
> remote.h | 2 +-
> revision.c | 28 +++---
> sequencer.c | 44 ++++++---
> sub-process.c | 20 ++--
> sub-process.h | 6 +-
> submodule-config.c | 52 ++++++-----
> t/helper/test-hashmap.c | 50 +++++-----
> t/helper/test-lazy-init-name-hash.c | 12 +--
> 32 files changed, 667 insertions(+), 381 deletions(-)
> create mode 100644 contrib/coccinelle/hashmap.cocci
>
> Range-diff against v2:
> 1: 51ba91d2f9 ! 1: 0f530552de diff: use hashmap_entry_init on moved_entry.ent
> @@ -10,6 +10,7 @@
> hashmap_add callers to take "struct hashmap_entry *".
>
> Signed-off-by: Eric Wong <e@80x24.org>
> + Reviewed-by: Derrick Stolee <stolee@gmail.com>
>
> diff --git a/diff.c b/diff.c
> --- a/diff.c
> 2: be4071d33d ! 2: d12ddb4327 coccicheck: detect hashmap_entry.hash assignment
> @@ -8,6 +8,7 @@
> hashmap_entry_init, instead.
>
> Signed-off-by: Eric Wong <e@80x24.org>
> + Reviewed-by: Derrick Stolee <stolee@gmail.com>
>
> diff --git a/contrib/coccinelle/hashmap.cocci b/contrib/coccinelle/hashmap.cocci
> new file mode 100644
> 3: ff40a39bad ! 3: 624b89fbb4 packfile: use hashmap_entry in delta_base_cache_entry
> @@ -15,6 +15,7 @@
> systems.
>
> Signed-off-by: Eric Wong <e@80x24.org>
> + Reviewed-by: Derrick Stolee <stolee@gmail.com>
>
> diff --git a/packfile.c b/packfile.c
> --- a/packfile.c
> 4: d1db0f6472 ! 4: 7512f2f2f7 hashmap_entry_init takes "struct hashmap_entry *"
> @@ -8,6 +8,7 @@
> safety and readability.
>
> Signed-off-by: Eric Wong <e@80x24.org>
> + Reviewed-by: Derrick Stolee <stolee@gmail.com>
>
> diff --git a/attr.c b/attr.c
> --- a/attr.c
> @@ -212,8 +213,8 @@
> * and if it is on stack, you can just let it go out of scope).
> */
> -static inline void hashmap_entry_init(void *entry, unsigned int hash)
> -+static inline void
> -+hashmap_entry_init(struct hashmap_entry *e, unsigned int hash)
> ++static inline void hashmap_entry_init(struct hashmap_entry *e,
> ++ unsigned int hash)
> {
> - struct hashmap_entry *e = entry;
> e->hash = hash;
> 5: a293445e97 ! 5: dd167a1113 hashmap_get_next takes "const struct hashmap_entry *"
> @@ -6,6 +6,7 @@
> now detects invalid types being passed.
>
> Signed-off-by: Eric Wong <e@80x24.org>
> + Reviewed-by: Derrick Stolee <stolee@gmail.com>
>
> diff --git a/diff.c b/diff.c
> --- a/diff.c
> 6: beabdab6fe ! 6: 53f429ef6f hashmap_add takes "struct hashmap_entry *"
> @@ -6,6 +6,7 @@
> detects invalid types being passed.
>
> Signed-off-by: Eric Wong <e@80x24.org>
> + Reviewed-by: Derrick Stolee <stolee@gmail.com>
>
> diff --git a/attr.c b/attr.c
> --- a/attr.c
> 7: 99970934c7 ! 7: 87739268dc hashmap_get takes "const struct hashmap_entry *"
> @@ -6,6 +6,7 @@
> now detects invalid types being passed.
>
> Signed-off-by: Eric Wong <e@80x24.org>
> + Reviewed-by: Derrick Stolee <stolee@gmail.com>
>
> diff --git a/attr.c b/attr.c
> --- a/attr.c
> 8: 8148ed70eb ! 8: 22226b3bb4 hashmap_remove takes "const struct hashmap_entry *"
> @@ -6,6 +6,7 @@
> now detects invalid types being passed.
>
> Signed-off-by: Eric Wong <e@80x24.org>
> + Reviewed-by: Derrick Stolee <stolee@gmail.com>
>
> diff --git a/blame.c b/blame.c
> --- a/blame.c
> 9: 3756dcc34e ! 9: 0b64282a1f hashmap_put takes "struct hashmap_entry *"
> @@ -6,6 +6,7 @@
> detects invalid types being passed.
>
> Signed-off-by: Eric Wong <e@80x24.org>
> + Reviewed-by: Derrick Stolee <stolee@gmail.com>
>
> diff --git a/builtin/fast-export.c b/builtin/fast-export.c
> --- a/builtin/fast-export.c
> 10: ff586aa43c ! 10: c2e9201838 introduce container_of macro
> @@ -7,15 +7,16 @@
> and chained hash tables while allowing the compiler to do
> type checking.
>
> - I intend to use this to remove the limitation of "hashmap_entry"
> - being location-dependent and to allow more compile-time type
> - checking.
> + Later patches will use container_of() to remove the limitation
> + of "hashmap_entry" being location-dependent. This will complete
> + the transition to compile-time type checking for the hashmap API.
>
> This macro already exists in our source as "list_entry" in
> list.h and making "list_entry" an alias to "container_of"
> as the Linux kernel has done is a possibility.
>
> Signed-off-by: Eric Wong <e@80x24.org>
> + Reviewed-by: Derrick Stolee <stolee@gmail.com>
>
> diff --git a/git-compat-util.h b/git-compat-util.h
> --- a/git-compat-util.h
> 11: 931356f061 ! 11: c709e607b1 hashmap_get_next returns "struct hashmap_entry *"
> @@ -6,6 +6,7 @@
> hashmap_entry being the first field of a struct.
>
> Signed-off-by: Eric Wong <e@80x24.org>
> + Reviewed-by: Derrick Stolee <stolee@gmail.com>
>
> diff --git a/diff.c b/diff.c
> --- a/diff.c
> @@ -14,10 +15,10 @@
> {
> int i;
> char *got_match = xcalloc(1, pmb_nr);
> -+ struct hashmap_entry *ent = &match->ent;
> ++ struct hashmap_entry *ent;
>
> - for (; match; match = hashmap_get_next(hm, &match->ent)) {
> -+ for (; ent; ent = hashmap_get_next(hm, ent)) {
> ++ for (ent = &match->ent; ent; ent = hashmap_get_next(hm, ent)) {
> + match = container_of(ent, struct moved_entry, ent);
> for (i = 0; i < pmb_nr; i++) {
> struct moved_entry *prev = pmb[i].match;
> 12: a748b9b0c4 ! 12: 27ba68a7b8 hashmap: use *_entry APIs to wrap container_of
> @@ -11,6 +11,7 @@
> extra parameter to specify the type.
>
> Signed-off-by: Eric Wong <e@80x24.org>
> + Reviewed-by: Derrick Stolee <stolee@gmail.com>
>
> diff --git a/diff.c b/diff.c
> --- a/diff.c
> @@ -19,9 +20,9 @@
> {
> int i;
> char *got_match = xcalloc(1, pmb_nr);
> -- struct hashmap_entry *ent = &match->ent;
> +- struct hashmap_entry *ent;
>
> -- for (; ent; ent = hashmap_get_next(hm, ent)) {
> +- for (ent = &match->ent; ent; ent = hashmap_get_next(hm, ent)) {
> - match = container_of(ent, struct moved_entry, ent);
> + hashmap_for_each_entry_from(hm, match, struct moved_entry, ent) {
> for (i = 0; i < pmb_nr; i++) {
> @@ -125,7 +126,6 @@
> #define container_of(ptr, type, member) \
> ((type *) ((char *)(ptr) - offsetof(type, member)))
>
> -+
> +/*
> + * helper function for `container_of_or_null' to avoid multiple
> + * evaluation of @ptr
> 13: e8faa5e12e ! 13: 222b1f07f3 hashmap_get{,_from_hash} return "struct hashmap_entry *"
> @@ -9,6 +9,7 @@
> hashmap_entry being the first field in a struct.
>
> Signed-off-by: Eric Wong <e@80x24.org>
> + Reviewed-by: Derrick Stolee <stolee@gmail.com>
>
> diff --git a/attr.c b/attr.c
> --- a/attr.c
> @@ -152,11 +153,13 @@
> }
>
> -void *hashmap_get(const struct hashmap *map, const struct hashmap_entry *key,
> -+struct hashmap_entry *
> -+hashmap_get(const struct hashmap *map, const struct hashmap_entry *key,
> - const void *keydata)
> +- const void *keydata)
> ++struct hashmap_entry *hashmap_get(const struct hashmap *map,
> ++ const struct hashmap_entry *key,
> ++ const void *keydata)
> {
> return *find_entry_ptr(map, key, keydata);
> + }
> @@
> /* lookup interned string in pool */
> hashmap_entry_init(&key.ent, memhash(data, len));
> @@ -175,21 +178,27 @@
> * to `hashmap_cmp_fn` to decide whether the entry matches the key.
> */
> -void *hashmap_get(const struct hashmap *map, const struct hashmap_entry *key,
> -+struct hashmap_entry *
> -+hashmap_get(const struct hashmap *map, const struct hashmap_entry *key,
> - const void *keydata);
> +- const void *keydata);
> ++struct hashmap_entry *hashmap_get(const struct hashmap *map,
> ++ const struct hashmap_entry *key,
> ++ const void *keydata);
>
> /*
> + * Returns the hashmap entry for the specified hash code and key data,
> @@
> * `entry_or_key` parameter of `hashmap_cmp_fn` points to a hashmap_entry
> * structure that should not be used in the comparison.
> */
> -static inline void *hashmap_get_from_hash(const struct hashmap *map,
> -+static inline struct hashmap_entry *
> -+hashmap_get_from_hash(const struct hashmap *map,
> - unsigned int hash,
> - const void *keydata)
> +- unsigned int hash,
> +- const void *keydata)
> ++static inline struct hashmap_entry *hashmap_get_from_hash(
> ++ const struct hashmap *map,
> ++ unsigned int hash,
> ++ const void *keydata)
> {
> + struct hashmap_entry key;
> + hashmap_entry_init(&key, hash);
>
> diff --git a/merge-recursive.c b/merge-recursive.c
> --- a/merge-recursive.c
> 14: f84bd96b8e ! 14: c789f98c81 hashmap_cmp_fn takes hashmap_entry params
> @@ -6,6 +6,7 @@
> being the first member of a struct.
>
> Signed-off-by: Eric Wong <e@80x24.org>
> + Reviewed-by: Derrick Stolee <stolee@gmail.com>
>
> diff --git a/attr.c b/attr.c
> --- a/attr.c
> 15: 23fbd888d9 ! 15: 57ae5b5142 hashmap: use *_entry APIs for iteration
> @@ -7,6 +7,7 @@
> by compilers lacking __typeof__ support.
>
> Signed-off-by: Eric Wong <e@80x24.org>
> + Reviewed-by: Derrick Stolee <stolee@gmail.com>
>
> diff --git a/attr.c b/attr.c
> --- a/attr.c
> 16: 6908364381 ! 16: f1e35ba094 hashmap: hashmap_{put,remove} return hashmap_entry *
> @@ -6,6 +6,7 @@
> to simplify most callers.
>
> Signed-off-by: Eric Wong <e@80x24.org>
> + Reviewed-by: Derrick Stolee <stolee@gmail.com>
>
> diff --git a/hashmap.c b/hashmap.c
> --- a/hashmap.c
> @@ -15,18 +16,20 @@
> }
>
> -void *hashmap_remove(struct hashmap *map, const struct hashmap_entry *key,
> -+struct hashmap_entry *
> -+hashmap_remove(struct hashmap *map, const struct hashmap_entry *key,
> - const void *keydata)
> +- const void *keydata)
> ++struct hashmap_entry *hashmap_remove(struct hashmap *map,
> ++ const struct hashmap_entry *key,
> ++ const void *keydata)
> {
> struct hashmap_entry *old;
> + struct hashmap_entry **e = find_entry_ptr(map, key, keydata);
> @@
> return old;
> }
>
> -void *hashmap_put(struct hashmap *map, struct hashmap_entry *entry)
> -+struct hashmap_entry *
> -+hashmap_put(struct hashmap *map, struct hashmap_entry *entry)
> ++struct hashmap_entry *hashmap_put(struct hashmap *map,
> ++ struct hashmap_entry *entry)
> {
> struct hashmap_entry *old = hashmap_remove(map, entry, NULL);
> hashmap_add(map, entry);
> @@ -39,8 +42,8 @@
> * Returns the replaced entry, or NULL if not found (i.e. the entry was added).
> */
> -void *hashmap_put(struct hashmap *map, struct hashmap_entry *entry);
> -+struct hashmap_entry *
> -+hashmap_put(struct hashmap *map, struct hashmap_entry *entry);
> ++struct hashmap_entry *hashmap_put(struct hashmap *map,
> ++ struct hashmap_entry *entry);
> +
> +#define hashmap_put_entry(map, keyvar, type, member) \
> + container_of_or_null(hashmap_put(map, &(keyvar)->member), type, member)
> @@ -52,17 +55,17 @@
> * Argument explanation is the same as in `hashmap_get`.
> */
> -void *hashmap_remove(struct hashmap *map, const struct hashmap_entry *key,
> -+struct hashmap_entry *
> -+hashmap_remove(struct hashmap *map, const struct hashmap_entry *key,
> - const void *keydata);
> -
> +- const void *keydata);
> ++struct hashmap_entry *hashmap_remove(struct hashmap *map,
> ++ const struct hashmap_entry *key,
> ++ const void *keydata);
> ++
> +#define hashmap_remove_entry(map, keyvar, keydata, type, member) \
> + container_of_or_null(hashmap_remove(map, &(keyvar)->member, keydata), \
> + type, member)
> -+
> +
> /*
> * Returns the `bucket` an entry is stored in.
> - * Useful for multithreaded read access.
>
> diff --git a/range-diff.c b/range-diff.c
> --- a/range-diff.c
> 17: 150944128b ! 17: adc7cb5516 hashmap: introduce hashmap_free_entries
> @@ -12,6 +12,7 @@
> the hashmap itself.
>
> Signed-off-by: Eric Wong <e@80x24.org>
> + Reviewed-by: Derrick Stolee <stolee@gmail.com>
>
> diff --git a/blame.c b/blame.c
> --- a/blame.c
> 18: de212aa6d6 ! 18: 1a68e1645d OFFSETOF_VAR macro to simplify hashmap iterators
> @@ -5,7 +5,7 @@
> While we cannot rely on a `__typeof__' operator being portable
> to use with `offsetof'; we can calculate the pointer offset
> using an existing pointer and the address of a member using
> - pointer arithmetic.
> + pointer arithmetic for compilers without `__typeof__'.
>
> This allows us to simplify usage of hashmap iterator macros
> by not having to specify a type when a pointer of that type
> @@ -16,7 +16,10 @@
> trouble of using container_of/list_entry macros and without
> relying on non-portable `__typeof__'.
>
> + v3: use `__typeof__' to avoid clang warnings
> +
> Signed-off-by: Eric Wong <e@80x24.org>
> + Reviewed-by: Derrick Stolee <stolee@gmail.com>
>
> diff --git a/attr.c b/attr.c
> --- a/attr.c
> @@ -141,11 +144,17 @@
> (type *)container_of_or_null_offset(ptr, offsetof(type, member))
>
> +/*
> -+ * like offsetof(), but takes a pointer to type instead of the type
> -+ * @ptr is subject to multiple evaluation since we can't rely on TYPEOF()
> ++ * like offsetof(), but takes a pointer to a a variable of type which
> ++ * contains @member, instead of a specified type.
> ++ * @ptr is subject to multiple evaluation since we can't rely on __typeof__
> ++ * everywhere.
> + */
> ++#if defined(__GNUC__) /* clang sets this, too */
> ++#define OFFSETOF_VAR(ptr, member) offsetof(__typeof__(*ptr), member)
> ++#else /* !__GNUC__ */
> +#define OFFSETOF_VAR(ptr, member) \
> + ((uintptr_t)&(ptr)->member - (uintptr_t)(ptr))
> ++#endif /* !__GNUC__ */
> +
> #endif
>
> 19: 212a596edd ! 19: fe02b9f839 hashmap: remove type arg from hashmap_{get,put,remove}_entry
> @@ -10,6 +10,7 @@
> sequential as they are used as: `keyvar->member'
>
> Signed-off-by: Eric Wong <e@80x24.org>
> + Reviewed-by: Derrick Stolee <stolee@gmail.com>
>
> diff --git a/attr.c b/attr.c
> --- a/attr.c
> @@ -147,8 +148,8 @@
> * printf("first: %ld %s\n", e->key, e->value);
> * while ((e = hashmap_get_next_entry(&map, e,
> @@
> - struct hashmap_entry *
> - hashmap_put(struct hashmap *map, struct hashmap_entry *entry);
> + struct hashmap_entry *hashmap_put(struct hashmap *map,
> + struct hashmap_entry *entry);
>
> -#define hashmap_put_entry(map, keyvar, type, member) \
> - container_of_or_null(hashmap_put(map, &(keyvar)->member), type, member)
> @@ -167,8 +168,8 @@
> /*
> * Removes a hashmap entry matching the specified key. If the hashmap contains
> @@
> - hashmap_remove(struct hashmap *map, const struct hashmap_entry *key,
> - const void *keydata);
> + const struct hashmap_entry *key,
> + const void *keydata);
>
> -#define hashmap_remove_entry(map, keyvar, keydata, type, member) \
> - container_of_or_null(hashmap_remove(map, &(keyvar)->member, keydata), \
> -: ---------- > 20: 4ec5200646 hashmap_entry: remove first member requirement from docs
>
>
^ permalink raw reply [relevance 0%]
* [PATCH v3 00/20] hashmap bug/safety/ease-of-use fixes
@ 2019-10-06 23:30 2% Eric Wong
2019-10-08 8:58 0% ` Johannes Schindelin
0 siblings, 1 reply; 42+ results
From: Eric Wong @ 2019-10-06 23:30 UTC (permalink / raw)
To: Junio C Hamano; +Cc: git, Derrick Stolee, Johannes Schindelin, Phillip Wood
v3 changes:
- use __typeof__ to avoid invalid clang warning on uninitialized var
- formatting fixes recommended by Stolee
- add Reviewed-by for Stolee
- add patch 20 to update docs to drop first member requirement
v2 here:
https://public-inbox.org/git/20190924010324.22619-1-e@80x24.org/
The following changes since commit 745f6812895b31c02b29bdfe4ae8e5498f776c26:
First batch after Git 2.23 (2019-08-22 12:41:04 -0700)
are available in the Git repository at:
https://80x24.org/git-svn.git hashmap-wip-v3
for you to fetch changes up to 4ec5200646d6b9363e64e2002eb374aa888a6c88:
hashmap_entry: remove first member requirement from docs (2019-10-06 23:05:22 +0000)
----------------------------------------------------------------
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
attr.c | 24 ++---
blame.c | 25 ++---
builtin/describe.c | 21 +++--
builtin/difftool.c | 56 +++++++-----
builtin/fast-export.c | 15 ++-
builtin/fetch.c | 32 ++++---
config.c | 24 ++---
contrib/coccinelle/hashmap.cocci | 16 ++++
diff.c | 31 ++++---
diffcore-rename.c | 15 ++-
git-compat-util.h | 38 ++++++++
hashmap.c | 58 +++++++-----
hashmap.h | 176 +++++++++++++++++++++++++++++-------
merge-recursive.c | 87 ++++++++++--------
merge-recursive.h | 4 +-
name-hash.c | 57 ++++++------
oidmap.c | 20 ++--
oidmap.h | 6 +-
packfile.c | 22 +++--
patch-ids.c | 18 ++--
range-diff.c | 10 +-
ref-filter.c | 33 ++++---
refs.c | 25 +++--
remote.c | 21 +++--
remote.h | 2 +-
revision.c | 28 +++---
sequencer.c | 44 ++++++---
sub-process.c | 20 ++--
sub-process.h | 6 +-
submodule-config.c | 52 ++++++-----
t/helper/test-hashmap.c | 50 +++++-----
t/helper/test-lazy-init-name-hash.c | 12 +--
32 files changed, 667 insertions(+), 381 deletions(-)
create mode 100644 contrib/coccinelle/hashmap.cocci
Range-diff against v2:
1: 51ba91d2f9 ! 1: 0f530552de diff: use hashmap_entry_init on moved_entry.ent
@@ -10,6 +10,7 @@
hashmap_add callers to take "struct hashmap_entry *".
Signed-off-by: Eric Wong <e@80x24.org>
+ Reviewed-by: Derrick Stolee <stolee@gmail.com>
diff --git a/diff.c b/diff.c
--- a/diff.c
2: be4071d33d ! 2: d12ddb4327 coccicheck: detect hashmap_entry.hash assignment
@@ -8,6 +8,7 @@
hashmap_entry_init, instead.
Signed-off-by: Eric Wong <e@80x24.org>
+ Reviewed-by: Derrick Stolee <stolee@gmail.com>
diff --git a/contrib/coccinelle/hashmap.cocci b/contrib/coccinelle/hashmap.cocci
new file mode 100644
3: ff40a39bad ! 3: 624b89fbb4 packfile: use hashmap_entry in delta_base_cache_entry
@@ -15,6 +15,7 @@
systems.
Signed-off-by: Eric Wong <e@80x24.org>
+ Reviewed-by: Derrick Stolee <stolee@gmail.com>
diff --git a/packfile.c b/packfile.c
--- a/packfile.c
4: d1db0f6472 ! 4: 7512f2f2f7 hashmap_entry_init takes "struct hashmap_entry *"
@@ -8,6 +8,7 @@
safety and readability.
Signed-off-by: Eric Wong <e@80x24.org>
+ Reviewed-by: Derrick Stolee <stolee@gmail.com>
diff --git a/attr.c b/attr.c
--- a/attr.c
@@ -212,8 +213,8 @@
* and if it is on stack, you can just let it go out of scope).
*/
-static inline void hashmap_entry_init(void *entry, unsigned int hash)
-+static inline void
-+hashmap_entry_init(struct hashmap_entry *e, unsigned int hash)
++static inline void hashmap_entry_init(struct hashmap_entry *e,
++ unsigned int hash)
{
- struct hashmap_entry *e = entry;
e->hash = hash;
5: a293445e97 ! 5: dd167a1113 hashmap_get_next takes "const struct hashmap_entry *"
@@ -6,6 +6,7 @@
now detects invalid types being passed.
Signed-off-by: Eric Wong <e@80x24.org>
+ Reviewed-by: Derrick Stolee <stolee@gmail.com>
diff --git a/diff.c b/diff.c
--- a/diff.c
6: beabdab6fe ! 6: 53f429ef6f hashmap_add takes "struct hashmap_entry *"
@@ -6,6 +6,7 @@
detects invalid types being passed.
Signed-off-by: Eric Wong <e@80x24.org>
+ Reviewed-by: Derrick Stolee <stolee@gmail.com>
diff --git a/attr.c b/attr.c
--- a/attr.c
7: 99970934c7 ! 7: 87739268dc hashmap_get takes "const struct hashmap_entry *"
@@ -6,6 +6,7 @@
now detects invalid types being passed.
Signed-off-by: Eric Wong <e@80x24.org>
+ Reviewed-by: Derrick Stolee <stolee@gmail.com>
diff --git a/attr.c b/attr.c
--- a/attr.c
8: 8148ed70eb ! 8: 22226b3bb4 hashmap_remove takes "const struct hashmap_entry *"
@@ -6,6 +6,7 @@
now detects invalid types being passed.
Signed-off-by: Eric Wong <e@80x24.org>
+ Reviewed-by: Derrick Stolee <stolee@gmail.com>
diff --git a/blame.c b/blame.c
--- a/blame.c
9: 3756dcc34e ! 9: 0b64282a1f hashmap_put takes "struct hashmap_entry *"
@@ -6,6 +6,7 @@
detects invalid types being passed.
Signed-off-by: Eric Wong <e@80x24.org>
+ Reviewed-by: Derrick Stolee <stolee@gmail.com>
diff --git a/builtin/fast-export.c b/builtin/fast-export.c
--- a/builtin/fast-export.c
10: ff586aa43c ! 10: c2e9201838 introduce container_of macro
@@ -7,15 +7,16 @@
and chained hash tables while allowing the compiler to do
type checking.
- I intend to use this to remove the limitation of "hashmap_entry"
- being location-dependent and to allow more compile-time type
- checking.
+ Later patches will use container_of() to remove the limitation
+ of "hashmap_entry" being location-dependent. This will complete
+ the transition to compile-time type checking for the hashmap API.
This macro already exists in our source as "list_entry" in
list.h and making "list_entry" an alias to "container_of"
as the Linux kernel has done is a possibility.
Signed-off-by: Eric Wong <e@80x24.org>
+ Reviewed-by: Derrick Stolee <stolee@gmail.com>
diff --git a/git-compat-util.h b/git-compat-util.h
--- a/git-compat-util.h
11: 931356f061 ! 11: c709e607b1 hashmap_get_next returns "struct hashmap_entry *"
@@ -6,6 +6,7 @@
hashmap_entry being the first field of a struct.
Signed-off-by: Eric Wong <e@80x24.org>
+ Reviewed-by: Derrick Stolee <stolee@gmail.com>
diff --git a/diff.c b/diff.c
--- a/diff.c
@@ -14,10 +15,10 @@
{
int i;
char *got_match = xcalloc(1, pmb_nr);
-+ struct hashmap_entry *ent = &match->ent;
++ struct hashmap_entry *ent;
- for (; match; match = hashmap_get_next(hm, &match->ent)) {
-+ for (; ent; ent = hashmap_get_next(hm, ent)) {
++ for (ent = &match->ent; ent; ent = hashmap_get_next(hm, ent)) {
+ match = container_of(ent, struct moved_entry, ent);
for (i = 0; i < pmb_nr; i++) {
struct moved_entry *prev = pmb[i].match;
12: a748b9b0c4 ! 12: 27ba68a7b8 hashmap: use *_entry APIs to wrap container_of
@@ -11,6 +11,7 @@
extra parameter to specify the type.
Signed-off-by: Eric Wong <e@80x24.org>
+ Reviewed-by: Derrick Stolee <stolee@gmail.com>
diff --git a/diff.c b/diff.c
--- a/diff.c
@@ -19,9 +20,9 @@
{
int i;
char *got_match = xcalloc(1, pmb_nr);
-- struct hashmap_entry *ent = &match->ent;
+- struct hashmap_entry *ent;
-- for (; ent; ent = hashmap_get_next(hm, ent)) {
+- for (ent = &match->ent; ent; ent = hashmap_get_next(hm, ent)) {
- match = container_of(ent, struct moved_entry, ent);
+ hashmap_for_each_entry_from(hm, match, struct moved_entry, ent) {
for (i = 0; i < pmb_nr; i++) {
@@ -125,7 +126,6 @@
#define container_of(ptr, type, member) \
((type *) ((char *)(ptr) - offsetof(type, member)))
-+
+/*
+ * helper function for `container_of_or_null' to avoid multiple
+ * evaluation of @ptr
13: e8faa5e12e ! 13: 222b1f07f3 hashmap_get{,_from_hash} return "struct hashmap_entry *"
@@ -9,6 +9,7 @@
hashmap_entry being the first field in a struct.
Signed-off-by: Eric Wong <e@80x24.org>
+ Reviewed-by: Derrick Stolee <stolee@gmail.com>
diff --git a/attr.c b/attr.c
--- a/attr.c
@@ -152,11 +153,13 @@
}
-void *hashmap_get(const struct hashmap *map, const struct hashmap_entry *key,
-+struct hashmap_entry *
-+hashmap_get(const struct hashmap *map, const struct hashmap_entry *key,
- const void *keydata)
+- const void *keydata)
++struct hashmap_entry *hashmap_get(const struct hashmap *map,
++ const struct hashmap_entry *key,
++ const void *keydata)
{
return *find_entry_ptr(map, key, keydata);
+ }
@@
/* lookup interned string in pool */
hashmap_entry_init(&key.ent, memhash(data, len));
@@ -175,21 +178,27 @@
* to `hashmap_cmp_fn` to decide whether the entry matches the key.
*/
-void *hashmap_get(const struct hashmap *map, const struct hashmap_entry *key,
-+struct hashmap_entry *
-+hashmap_get(const struct hashmap *map, const struct hashmap_entry *key,
- const void *keydata);
+- const void *keydata);
++struct hashmap_entry *hashmap_get(const struct hashmap *map,
++ const struct hashmap_entry *key,
++ const void *keydata);
/*
+ * Returns the hashmap entry for the specified hash code and key data,
@@
* `entry_or_key` parameter of `hashmap_cmp_fn` points to a hashmap_entry
* structure that should not be used in the comparison.
*/
-static inline void *hashmap_get_from_hash(const struct hashmap *map,
-+static inline struct hashmap_entry *
-+hashmap_get_from_hash(const struct hashmap *map,
- unsigned int hash,
- const void *keydata)
+- unsigned int hash,
+- const void *keydata)
++static inline struct hashmap_entry *hashmap_get_from_hash(
++ const struct hashmap *map,
++ unsigned int hash,
++ const void *keydata)
{
+ struct hashmap_entry key;
+ hashmap_entry_init(&key, hash);
diff --git a/merge-recursive.c b/merge-recursive.c
--- a/merge-recursive.c
14: f84bd96b8e ! 14: c789f98c81 hashmap_cmp_fn takes hashmap_entry params
@@ -6,6 +6,7 @@
being the first member of a struct.
Signed-off-by: Eric Wong <e@80x24.org>
+ Reviewed-by: Derrick Stolee <stolee@gmail.com>
diff --git a/attr.c b/attr.c
--- a/attr.c
15: 23fbd888d9 ! 15: 57ae5b5142 hashmap: use *_entry APIs for iteration
@@ -7,6 +7,7 @@
by compilers lacking __typeof__ support.
Signed-off-by: Eric Wong <e@80x24.org>
+ Reviewed-by: Derrick Stolee <stolee@gmail.com>
diff --git a/attr.c b/attr.c
--- a/attr.c
16: 6908364381 ! 16: f1e35ba094 hashmap: hashmap_{put,remove} return hashmap_entry *
@@ -6,6 +6,7 @@
to simplify most callers.
Signed-off-by: Eric Wong <e@80x24.org>
+ Reviewed-by: Derrick Stolee <stolee@gmail.com>
diff --git a/hashmap.c b/hashmap.c
--- a/hashmap.c
@@ -15,18 +16,20 @@
}
-void *hashmap_remove(struct hashmap *map, const struct hashmap_entry *key,
-+struct hashmap_entry *
-+hashmap_remove(struct hashmap *map, const struct hashmap_entry *key,
- const void *keydata)
+- const void *keydata)
++struct hashmap_entry *hashmap_remove(struct hashmap *map,
++ const struct hashmap_entry *key,
++ const void *keydata)
{
struct hashmap_entry *old;
+ struct hashmap_entry **e = find_entry_ptr(map, key, keydata);
@@
return old;
}
-void *hashmap_put(struct hashmap *map, struct hashmap_entry *entry)
-+struct hashmap_entry *
-+hashmap_put(struct hashmap *map, struct hashmap_entry *entry)
++struct hashmap_entry *hashmap_put(struct hashmap *map,
++ struct hashmap_entry *entry)
{
struct hashmap_entry *old = hashmap_remove(map, entry, NULL);
hashmap_add(map, entry);
@@ -39,8 +42,8 @@
* Returns the replaced entry, or NULL if not found (i.e. the entry was added).
*/
-void *hashmap_put(struct hashmap *map, struct hashmap_entry *entry);
-+struct hashmap_entry *
-+hashmap_put(struct hashmap *map, struct hashmap_entry *entry);
++struct hashmap_entry *hashmap_put(struct hashmap *map,
++ struct hashmap_entry *entry);
+
+#define hashmap_put_entry(map, keyvar, type, member) \
+ container_of_or_null(hashmap_put(map, &(keyvar)->member), type, member)
@@ -52,17 +55,17 @@
* Argument explanation is the same as in `hashmap_get`.
*/
-void *hashmap_remove(struct hashmap *map, const struct hashmap_entry *key,
-+struct hashmap_entry *
-+hashmap_remove(struct hashmap *map, const struct hashmap_entry *key,
- const void *keydata);
-
+- const void *keydata);
++struct hashmap_entry *hashmap_remove(struct hashmap *map,
++ const struct hashmap_entry *key,
++ const void *keydata);
++
+#define hashmap_remove_entry(map, keyvar, keydata, type, member) \
+ container_of_or_null(hashmap_remove(map, &(keyvar)->member, keydata), \
+ type, member)
-+
+
/*
* Returns the `bucket` an entry is stored in.
- * Useful for multithreaded read access.
diff --git a/range-diff.c b/range-diff.c
--- a/range-diff.c
17: 150944128b ! 17: adc7cb5516 hashmap: introduce hashmap_free_entries
@@ -12,6 +12,7 @@
the hashmap itself.
Signed-off-by: Eric Wong <e@80x24.org>
+ Reviewed-by: Derrick Stolee <stolee@gmail.com>
diff --git a/blame.c b/blame.c
--- a/blame.c
18: de212aa6d6 ! 18: 1a68e1645d OFFSETOF_VAR macro to simplify hashmap iterators
@@ -5,7 +5,7 @@
While we cannot rely on a `__typeof__' operator being portable
to use with `offsetof'; we can calculate the pointer offset
using an existing pointer and the address of a member using
- pointer arithmetic.
+ pointer arithmetic for compilers without `__typeof__'.
This allows us to simplify usage of hashmap iterator macros
by not having to specify a type when a pointer of that type
@@ -16,7 +16,10 @@
trouble of using container_of/list_entry macros and without
relying on non-portable `__typeof__'.
+ v3: use `__typeof__' to avoid clang warnings
+
Signed-off-by: Eric Wong <e@80x24.org>
+ Reviewed-by: Derrick Stolee <stolee@gmail.com>
diff --git a/attr.c b/attr.c
--- a/attr.c
@@ -141,11 +144,17 @@
(type *)container_of_or_null_offset(ptr, offsetof(type, member))
+/*
-+ * like offsetof(), but takes a pointer to type instead of the type
-+ * @ptr is subject to multiple evaluation since we can't rely on TYPEOF()
++ * like offsetof(), but takes a pointer to a a variable of type which
++ * contains @member, instead of a specified type.
++ * @ptr is subject to multiple evaluation since we can't rely on __typeof__
++ * everywhere.
+ */
++#if defined(__GNUC__) /* clang sets this, too */
++#define OFFSETOF_VAR(ptr, member) offsetof(__typeof__(*ptr), member)
++#else /* !__GNUC__ */
+#define OFFSETOF_VAR(ptr, member) \
+ ((uintptr_t)&(ptr)->member - (uintptr_t)(ptr))
++#endif /* !__GNUC__ */
+
#endif
19: 212a596edd ! 19: fe02b9f839 hashmap: remove type arg from hashmap_{get,put,remove}_entry
@@ -10,6 +10,7 @@
sequential as they are used as: `keyvar->member'
Signed-off-by: Eric Wong <e@80x24.org>
+ Reviewed-by: Derrick Stolee <stolee@gmail.com>
diff --git a/attr.c b/attr.c
--- a/attr.c
@@ -147,8 +148,8 @@
* printf("first: %ld %s\n", e->key, e->value);
* while ((e = hashmap_get_next_entry(&map, e,
@@
- struct hashmap_entry *
- hashmap_put(struct hashmap *map, struct hashmap_entry *entry);
+ struct hashmap_entry *hashmap_put(struct hashmap *map,
+ struct hashmap_entry *entry);
-#define hashmap_put_entry(map, keyvar, type, member) \
- container_of_or_null(hashmap_put(map, &(keyvar)->member), type, member)
@@ -167,8 +168,8 @@
/*
* Removes a hashmap entry matching the specified key. If the hashmap contains
@@
- hashmap_remove(struct hashmap *map, const struct hashmap_entry *key,
- const void *keydata);
+ const struct hashmap_entry *key,
+ const void *keydata);
-#define hashmap_remove_entry(map, keyvar, keydata, type, member) \
- container_of_or_null(hashmap_remove(map, &(keyvar)->member, keydata), \
-: ---------- > 20: 4ec5200646 hashmap_entry: remove first member requirement from docs
^ permalink raw reply [relevance 2%]
* Re: [PATCH v2 00/19] hashmap bug/safety/ease-of-use fixes
2019-09-24 1:03 5% ` [PATCH v2 00/19] hashmap bug/safety/ease-of-use fixes Eric Wong
2019-09-26 8:39 0% ` Johannes Schindelin
@ 2019-09-26 13:48 0% ` Phillip Wood
1 sibling, 0 replies; 42+ results
From: Phillip Wood @ 2019-09-26 13:48 UTC (permalink / raw)
To: Eric Wong, Junio C Hamano
Cc: Derrick Stolee, Johannes Schindelin, Phillip Wood, git
Hi Eric
On 24/09/2019 02:03, Eric Wong wrote:
> Patches 1-11 are largely unchanged from the original series with the
> exception of 2, which is new and posted at:
>
> https://public-inbox.org/git/20190908074953.kux7zz4y7iolqko4@whir/
>
> 12-17 take further steps to get us away from hashmap_entry being
> the first element, but they're also a bit ugly because __typeof__
> isn't portable
>
> 18-19 finally brings me to the APIs I want to expose without
> relying on __typeof :)
Looking at the overall diff for this series looks a lot nicer with the
extra patches that eliminate most of the explicit calls to
container_of(). Thanks for the improved api and the cocci-check patch as
well.
I've only had time for a quick look through but the patches seem well
ordered and easy to follow. I think there are some line folding issues
where you have wrapped a line when you added the type parameter and then
removed it in a later path without re-flowing the line. Apart from that
the only thing I noticed is that hashmap.h still starts with
* struct long2string {
* struct hashmap_entry ent; // must be the first member!
Is that still the case now that hashmap_{get,put,remove}_entry() use
container_of() and hashmap_init() takes a struct hashmap_entry? That
comment is in a lot of our structure definitions as well.
Best Wishes
Phillip
> Apologies for the delays, been busy with other stuff...
>
> Previous discussion starts at:
>
> https://public-inbox.org/git/20190826024332.3403-1-e@80x24.org/
>
> The following changes since commit 745f6812895b31c02b29bdfe4ae8e5498f776c26:
>
> First batch after Git 2.23 (2019-08-22 12:41:04 -0700)
>
> are available in the Git repository at:
>
> https://80x24.org/git-svn.git hashmap-wip-v2
>
> for you to fetch changes up to 212a596edd99169b284912b7b70b6280e2fb90e6:
>
> hashmap: remove type arg from hashmap_{get,put,remove}_entry (2019-09-24 00:42:22 +0000)
>
> ----------------------------------------------------------------
> Eric Wong (19):
> 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
>
> attr.c | 22 ++---
> blame.c | 25 +++---
> builtin/describe.c | 21 +++--
> builtin/difftool.c | 56 ++++++------
> builtin/fast-export.c | 15 ++--
> builtin/fetch.c | 30 ++++---
> config.c | 24 +++---
> contrib/coccinelle/hashmap.cocci | 16 ++++
> diff.c | 31 ++++---
> diffcore-rename.c | 15 ++--
> git-compat-util.h | 33 ++++++++
> hashmap.c | 58 ++++++++-----
> hashmap.h | 164 +++++++++++++++++++++++++++++-------
> merge-recursive.c | 87 ++++++++++---------
> name-hash.c | 57 +++++++------
> oidmap.c | 20 +++--
> oidmap.h | 6 +-
> packfile.c | 22 +++--
> patch-ids.c | 18 ++--
> range-diff.c | 10 +--
> ref-filter.c | 31 ++++---
> refs.c | 23 +++--
> remote.c | 21 +++--
> revision.c | 28 +++---
> sequencer.c | 44 ++++++----
> sub-process.c | 20 +++--
> sub-process.h | 4 +-
> submodule-config.c | 52 +++++++-----
> t/helper/test-hashmap.c | 49 ++++++-----
> t/helper/test-lazy-init-name-hash.c | 12 +--
> 30 files changed, 647 insertions(+), 367 deletions(-)
> create mode 100644 contrib/coccinelle/hashmap.cocci
>
> Eric Wong (19):
> 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
>
> attr.c | 22 ++--
> blame.c | 25 +++--
> builtin/describe.c | 21 ++--
> builtin/difftool.c | 56 ++++++----
> builtin/fast-export.c | 15 ++-
> builtin/fetch.c | 30 ++---
> config.c | 24 ++--
> contrib/coccinelle/hashmap.cocci | 16 +++
> diff.c | 31 +++---
> diffcore-rename.c | 15 ++-
> git-compat-util.h | 33 ++++++
> hashmap.c | 58 ++++++----
> hashmap.h | 164 +++++++++++++++++++++++-----
> merge-recursive.c | 87 ++++++++-------
> name-hash.c | 57 +++++-----
> oidmap.c | 20 ++--
> oidmap.h | 6 +-
> packfile.c | 22 ++--
> patch-ids.c | 18 +--
> range-diff.c | 10 +-
> ref-filter.c | 31 ++++--
> refs.c | 23 +++-
> remote.c | 21 ++--
> revision.c | 28 +++--
> sequencer.c | 44 +++++---
> sub-process.c | 20 ++--
> sub-process.h | 4 +-
> submodule-config.c | 52 +++++----
> t/helper/test-hashmap.c | 49 +++++----
> t/helper/test-lazy-init-name-hash.c | 12 +-
> 30 files changed, 647 insertions(+), 367 deletions(-)
> create mode 100644 contrib/coccinelle/hashmap.cocci
>
>
> base-commit: 745f6812895b31c02b29bdfe4ae8e5498f776c26
>
^ permalink raw reply [relevance 0%]
* Re: [PATCH v2 00/19] hashmap bug/safety/ease-of-use fixes
2019-09-24 1:03 5% ` [PATCH v2 00/19] hashmap bug/safety/ease-of-use fixes Eric Wong
@ 2019-09-26 8:39 0% ` Johannes Schindelin
2019-09-26 13:48 0% ` Phillip Wood
1 sibling, 0 replies; 42+ results
From: Johannes Schindelin @ 2019-09-26 8:39 UTC (permalink / raw)
To: Eric Wong; +Cc: Junio C Hamano, Derrick Stolee, Phillip Wood, git
Hi Eric,
On Tue, 24 Sep 2019, Eric Wong wrote:
> Patches 1-11 are largely unchanged from the original series with the
> exception of 2, which is new and posted at:
>
> https://public-inbox.org/git/20190908074953.kux7zz4y7iolqko4@whir/
>
> 12-17 take further steps to get us away from hashmap_entry being
> the first element, but they're also a bit ugly because __typeof__
> isn't portable
>
> 18-19 finally brings me to the APIs I want to expose without
> relying on __typeof :)
I won't have time to review this patch series, but I wanted to throw out
the idea of storing the offset in `struct hashmap`, i.e. the offset of
the `struct hashmap_entry` in the actual entry struct?
Example:
struct erics_entry {
const char *i_want_this_to_be_the_first_field;
struct hashmap_entry e;
[...]
};
[...]
struct erics_entry *dummy = NULL;
size_t offset = ((char *)dummy->e) - ((char *)dummy);
[... store that offset in the hashmap and subtract it from the
stored pointers before returning an entry...]
IOW rather than assuming that it is the first field, we could allow an
offset other than 0. I'm just not sure how to implement this elegantly,
but it should be much easier to do this portably than the `typeof()`
approach.
Ciao,
Dscho
>
> Apologies for the delays, been busy with other stuff...
>
> Previous discussion starts at:
>
> https://public-inbox.org/git/20190826024332.3403-1-e@80x24.org/
>
> The following changes since commit 745f6812895b31c02b29bdfe4ae8e5498f776c26:
>
> First batch after Git 2.23 (2019-08-22 12:41:04 -0700)
>
> are available in the Git repository at:
>
> https://80x24.org/git-svn.git hashmap-wip-v2
>
> for you to fetch changes up to 212a596edd99169b284912b7b70b6280e2fb90e6:
>
> hashmap: remove type arg from hashmap_{get,put,remove}_entry (2019-09-24 00:42:22 +0000)
>
> ----------------------------------------------------------------
> Eric Wong (19):
> 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
>
> attr.c | 22 ++---
> blame.c | 25 +++---
> builtin/describe.c | 21 +++--
> builtin/difftool.c | 56 ++++++------
> builtin/fast-export.c | 15 ++--
> builtin/fetch.c | 30 ++++---
> config.c | 24 +++---
> contrib/coccinelle/hashmap.cocci | 16 ++++
> diff.c | 31 ++++---
> diffcore-rename.c | 15 ++--
> git-compat-util.h | 33 ++++++++
> hashmap.c | 58 ++++++++-----
> hashmap.h | 164 +++++++++++++++++++++++++++++-------
> merge-recursive.c | 87 ++++++++++---------
> name-hash.c | 57 +++++++------
> oidmap.c | 20 +++--
> oidmap.h | 6 +-
> packfile.c | 22 +++--
> patch-ids.c | 18 ++--
> range-diff.c | 10 +--
> ref-filter.c | 31 ++++---
> refs.c | 23 +++--
> remote.c | 21 +++--
> revision.c | 28 +++---
> sequencer.c | 44 ++++++----
> sub-process.c | 20 +++--
> sub-process.h | 4 +-
> submodule-config.c | 52 +++++++-----
> t/helper/test-hashmap.c | 49 ++++++-----
> t/helper/test-lazy-init-name-hash.c | 12 +--
> 30 files changed, 647 insertions(+), 367 deletions(-)
> create mode 100644 contrib/coccinelle/hashmap.cocci
>
> Eric Wong (19):
> 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
>
> attr.c | 22 ++--
> blame.c | 25 +++--
> builtin/describe.c | 21 ++--
> builtin/difftool.c | 56 ++++++----
> builtin/fast-export.c | 15 ++-
> builtin/fetch.c | 30 ++---
> config.c | 24 ++--
> contrib/coccinelle/hashmap.cocci | 16 +++
> diff.c | 31 +++---
> diffcore-rename.c | 15 ++-
> git-compat-util.h | 33 ++++++
> hashmap.c | 58 ++++++----
> hashmap.h | 164 +++++++++++++++++++++++-----
> merge-recursive.c | 87 ++++++++-------
> name-hash.c | 57 +++++-----
> oidmap.c | 20 ++--
> oidmap.h | 6 +-
> packfile.c | 22 ++--
> patch-ids.c | 18 +--
> range-diff.c | 10 +-
> ref-filter.c | 31 ++++--
> refs.c | 23 +++-
> remote.c | 21 ++--
> revision.c | 28 +++--
> sequencer.c | 44 +++++---
> sub-process.c | 20 ++--
> sub-process.h | 4 +-
> submodule-config.c | 52 +++++----
> t/helper/test-hashmap.c | 49 +++++----
> t/helper/test-lazy-init-name-hash.c | 12 +-
> 30 files changed, 647 insertions(+), 367 deletions(-)
> create mode 100644 contrib/coccinelle/hashmap.cocci
>
>
> base-commit: 745f6812895b31c02b29bdfe4ae8e5498f776c26
>
^ permalink raw reply [relevance 0%]
* [PATCH v2 00/19] hashmap bug/safety/ease-of-use fixes
2019-08-26 2:43 6% [PATCH 00/11] hashmap: bugfixes, safety fixes, and WIP improvements Eric Wong
@ 2019-09-24 1:03 5% ` Eric Wong
2019-09-26 8:39 0% ` Johannes Schindelin
2019-09-26 13:48 0% ` Phillip Wood
0 siblings, 2 replies; 42+ results
From: Eric Wong @ 2019-09-24 1:03 UTC (permalink / raw)
To: Junio C Hamano; +Cc: Derrick Stolee, Johannes Schindelin, Phillip Wood, git
Patches 1-11 are largely unchanged from the original series with the
exception of 2, which is new and posted at:
https://public-inbox.org/git/20190908074953.kux7zz4y7iolqko4@whir/
12-17 take further steps to get us away from hashmap_entry being
the first element, but they're also a bit ugly because __typeof__
isn't portable
18-19 finally brings me to the APIs I want to expose without
relying on __typeof :)
Apologies for the delays, been busy with other stuff...
Previous discussion starts at:
https://public-inbox.org/git/20190826024332.3403-1-e@80x24.org/
The following changes since commit 745f6812895b31c02b29bdfe4ae8e5498f776c26:
First batch after Git 2.23 (2019-08-22 12:41:04 -0700)
are available in the Git repository at:
https://80x24.org/git-svn.git hashmap-wip-v2
for you to fetch changes up to 212a596edd99169b284912b7b70b6280e2fb90e6:
hashmap: remove type arg from hashmap_{get,put,remove}_entry (2019-09-24 00:42:22 +0000)
----------------------------------------------------------------
Eric Wong (19):
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
attr.c | 22 ++---
blame.c | 25 +++---
builtin/describe.c | 21 +++--
builtin/difftool.c | 56 ++++++------
builtin/fast-export.c | 15 ++--
builtin/fetch.c | 30 ++++---
config.c | 24 +++---
contrib/coccinelle/hashmap.cocci | 16 ++++
diff.c | 31 ++++---
diffcore-rename.c | 15 ++--
git-compat-util.h | 33 ++++++++
hashmap.c | 58 ++++++++-----
hashmap.h | 164 +++++++++++++++++++++++++++++-------
merge-recursive.c | 87 ++++++++++---------
name-hash.c | 57 +++++++------
oidmap.c | 20 +++--
oidmap.h | 6 +-
packfile.c | 22 +++--
patch-ids.c | 18 ++--
range-diff.c | 10 +--
ref-filter.c | 31 ++++---
refs.c | 23 +++--
remote.c | 21 +++--
revision.c | 28 +++---
sequencer.c | 44 ++++++----
sub-process.c | 20 +++--
sub-process.h | 4 +-
submodule-config.c | 52 +++++++-----
t/helper/test-hashmap.c | 49 ++++++-----
t/helper/test-lazy-init-name-hash.c | 12 +--
30 files changed, 647 insertions(+), 367 deletions(-)
create mode 100644 contrib/coccinelle/hashmap.cocci
Eric Wong (19):
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
attr.c | 22 ++--
blame.c | 25 +++--
builtin/describe.c | 21 ++--
builtin/difftool.c | 56 ++++++----
builtin/fast-export.c | 15 ++-
builtin/fetch.c | 30 ++---
config.c | 24 ++--
contrib/coccinelle/hashmap.cocci | 16 +++
diff.c | 31 +++---
diffcore-rename.c | 15 ++-
git-compat-util.h | 33 ++++++
hashmap.c | 58 ++++++----
hashmap.h | 164 +++++++++++++++++++++++-----
merge-recursive.c | 87 ++++++++-------
name-hash.c | 57 +++++-----
oidmap.c | 20 ++--
oidmap.h | 6 +-
packfile.c | 22 ++--
patch-ids.c | 18 +--
range-diff.c | 10 +-
ref-filter.c | 31 ++++--
refs.c | 23 +++-
remote.c | 21 ++--
revision.c | 28 +++--
sequencer.c | 44 +++++---
sub-process.c | 20 ++--
sub-process.h | 4 +-
submodule-config.c | 52 +++++----
t/helper/test-hashmap.c | 49 +++++----
t/helper/test-lazy-init-name-hash.c | 12 +-
30 files changed, 647 insertions(+), 367 deletions(-)
create mode 100644 contrib/coccinelle/hashmap.cocci
base-commit: 745f6812895b31c02b29bdfe4ae8e5498f776c26
^ permalink raw reply [relevance 5%]
* Re: error: cannot cherry-pick during a revert
2019-08-28 23:25 7% error: cannot cherry-pick during a revert Mike Hommey
@ 2019-08-29 15:27 0% ` Phillip Wood
0 siblings, 0 replies; 42+ results
From: Phillip Wood @ 2019-08-29 15:27 UTC (permalink / raw)
To: Mike Hommey, git
Hi Mike
On 29/08/2019 00:25, Mike Hommey wrote:
> Hi,
>
> This just happened to me while cherry-pick'ing:
>
> $ git cherry-pick HEAD@{1}
> error: could not apply 614fe5e629b84... try
> hint: after resolving the conflicts, mark the corrected paths
> hint: with 'git add <paths>' or 'git rm <paths>'
> hint: and commit the result with 'git commit'
> Recorded preimage for 'taskcluster/ci/build/linux.yml'
>
> (... this is where I fix my conflict ...)
>
> $ git add -u
> $ git cherry-pick --continue
> error: cannot cherry-pick during a revert.
> fatal: cherry-pick failed
Oh dear that's not good
> So apparently, cherry-pick thinks it was doing a revert when it hit a
> conflict?
>
> (This is with git 2.23)
I wondered if this was due to some of the recent changes adding --skip
to cherry-pick and revert but I can't see anything obvious at the
moment. To get that error the sequencer has loaded a todo file (in
read_populate_todo()) which starts with a revert command. Is it possible
you were reverting a sequence of commits before you ran the cherry-pick?
(a single pick or revert does not create a todo list). It could be that
there was an old todo list left over from a while ago - historically the
sequencer hasn't been all that good at cleaning up after itself if the
user committed the final pick or revert with 'git commit' and forgot to
run 'cherry-pick/revert --continue' afterwards.
Best Wishes
Phillip
> Mike
>
^ permalink raw reply [relevance 0%]
* error: cannot cherry-pick during a revert
@ 2019-08-28 23:25 7% Mike Hommey
2019-08-29 15:27 0% ` Phillip Wood
0 siblings, 1 reply; 42+ results
From: Mike Hommey @ 2019-08-28 23:25 UTC (permalink / raw)
To: git
Hi,
This just happened to me while cherry-pick'ing:
$ git cherry-pick HEAD@{1}
error: could not apply 614fe5e629b84... try
hint: after resolving the conflicts, mark the corrected paths
hint: with 'git add <paths>' or 'git rm <paths>'
hint: and commit the result with 'git commit'
Recorded preimage for 'taskcluster/ci/build/linux.yml'
(... this is where I fix my conflict ...)
$ git add -u
$ git cherry-pick --continue
error: cannot cherry-pick during a revert.
fatal: cherry-pick failed
So apparently, cherry-pick thinks it was doing a revert when it hit a
conflict?
(This is with git 2.23)
Mike
^ permalink raw reply [relevance 7%]
* Re: Missing file in 2.23 (p5302-pack-index.subtests)?
2019-08-26 20:50 0% ` Jeff King
2019-08-26 20:51 0% ` Jeff King
@ 2019-08-27 1:29 5% ` Theodore Y. Ts'o
1 sibling, 0 replies; 42+ results
From: Theodore Y. Ts'o @ 2019-08-27 1:29 UTC (permalink / raw)
To: Jeff King; +Cc: git
On Mon, Aug 26, 2019 at 04:50:13PM -0400, Jeff King wrote:
> On Sun, Aug 18, 2019 at 12:03:17PM -0400, Theodore Y. Ts'o wrote:
>
> > I was trying to run "make profile" on the master branch (commit
> > 5fa0f5238b: "Git 2.23") and it died in the
> >
> > $(MAKE) PROFILE=GEN perf
> >
> > dies with:
> >
> > cannot open test-results/p5302-pack-index.subtests: No such file or directory at ./aggregate.perl line 153.
> >
> > I presume that's becuase the file t/perf/test-results/p5302-pack-index.subtests is missing?
>
> That file should be created by running p5302. If you do:
>
> cd t/perf
> rm -rf test-results
> ./run p5302-pack-index.sh
>
> is it generated?
No, it wasn't. See below....
- Ted
<tytso@lambda> {/usr/projects/git/git-core/t/perf} (master)
1140% git show
commit 5fa0f5238b0cd46cfe7f6fa76c3f526ea98148d9 (HEAD -> master, tag: v2.23.0, origin/master, origin/HEAD)
Author: Junio C Hamano <gitster@pobox.com>
Date: Fri Aug 16 10:28:23 2019 -0700
Git 2.23
Signed-off-by: Junio C Hamano <gitster@pobox.com>
diff --git a/GIT-VERSION-GEN b/GIT-VERSION-GEN
index 551e607e73..a1539a7ce6 100755
--- a/GIT-VERSION-GEN
+++ b/GIT-VERSION-GEN
@@ -1,7 +1,7 @@
#!/bin/sh
GVF=GIT-VERSION-FILE
-DEF_VER=v2.23.0-rc2
+DEF_VER=v2.23.0
LF='
'
<tytso@lambda> {/usr/projects/git/git-core/t/perf} (master)
1141% rm -rf test-results ; ./run p5302-pack-index.sh
=== Running 1 tests in this tree ===
warning: $GIT_PERF_LARGE_REPO is $GIT_BUILD_DIR.
warning: This will work, but may not be a sufficiently large repo
warning: for representative measurements.
not ok 1 - repack
#
# git repack -ad &&
# PACK=$(ls .git/objects/pack/*.pack | head -n1) &&
# test -f "$PACK" &&
# export PACK
#
cannot open test-results/p5302-pack-index.subtests: No such file or directory at ./aggregate.perl line 153.
<tytso@lambda> {/usr/projects/git/git-core/t/perf} (master)
1142% git status
On branch master
Your branch is up to date with 'origin/master'.
Untracked files:
(use "git add <file>..." to include in what will be committed)
../../MAKELOG
../../MAKELOG.1
../../common-cmds.h
../../git-lost-found
../../git-peek-remote
../../git-rebase--am
../../git-rebase--common
../../git-rebase--helper
../../git-rebase--interactive
../../git-rebase--merge
../../git-relink
../../git-remote-testgit
../../git-repo-config
../../git-tar-tree
../../git_remote_helpers/
../../perl/MYMETA.json
../../perl/MYMETA.yml
../../perl/PM.stamp
../../perl/blib/
../../perl/perl.mak
../../perl/pm_to_blib
../../test-chmtime
../../test-config
../../test-credential
../../test-ctype
../../test-date
../../test-delta
../../test-dump-cache-tree
../../test-dump-split-index
../../test-dump-untracked-cache
../../test-fake-ssh
../../test-genrandom
../../test-hashmap
../../test-index-version
../../test-line-buffer
../../test-match-trees
../../test-mergesort
../../test-mktemp
../../test-obj-pool
../../test-parse-options
../../test-path-utils
../../test-prio-queue
../../test-read-cache
../../test-regex
../../test-revision-walking
../../test-run-command
../../test-scrap-cache-tree
../../test-sha1
../../test-sha1-array
../../test-sigchain
../../test-string-list
../../test-string-pool
../../test-submodule-config
../../test-subprocess
../../test-svn-fe
../../test-treap
../../test-urlmatch-normalization
../../test-wildmatch
nothing added to commit but untracked files present (use "git add" to track)
^ permalink raw reply related [relevance 5%]
* Re: Missing file in 2.23 (p5302-pack-index.subtests)?
2019-08-26 20:50 0% ` Jeff King
@ 2019-08-26 20:51 0% ` Jeff King
2019-08-27 1:29 5% ` Theodore Y. Ts'o
1 sibling, 0 replies; 42+ results
From: Jeff King @ 2019-08-26 20:51 UTC (permalink / raw)
To: Theodore Y. Ts'o; +Cc: git
On Mon, Aug 26, 2019 at 04:50:13PM -0400, Jeff King wrote:
> On Sun, Aug 18, 2019 at 12:03:17PM -0400, Theodore Y. Ts'o wrote:
>
> > I was trying to run "make profile" on the master branch (commit
> > 5fa0f5238b: "Git 2.23") and it died in the
> >
> > $(MAKE) PROFILE=GEN perf
> >
> > dies with:
> >
> > cannot open test-results/p5302-pack-index.subtests: No such file or directory at ./aggregate.perl line 153.
> >
> > I presume that's becuase the file t/perf/test-results/p5302-pack-index.subtests is missing?
>
> That file should be created by running p5302. If you do:
By the way, I tried "make perf" as you specified above, and it worked
fine for me. And I don't think there are any changes in v2.23 that
should touch this area. But certainly it would be interesting to know if
it fails consistently for you, and if so, whether older versions work
(so we can bisect).
-Peff
^ permalink raw reply [relevance 0%]
* Re: Missing file in 2.23 (p5302-pack-index.subtests)?
2019-08-18 16:03 7% Missing file in 2.23 (p5302-pack-index.subtests)? Theodore Y. Ts'o
@ 2019-08-26 20:50 0% ` Jeff King
2019-08-26 20:51 0% ` Jeff King
2019-08-27 1:29 5% ` Theodore Y. Ts'o
0 siblings, 2 replies; 42+ results
From: Jeff King @ 2019-08-26 20:50 UTC (permalink / raw)
To: Theodore Y. Ts'o; +Cc: git
On Sun, Aug 18, 2019 at 12:03:17PM -0400, Theodore Y. Ts'o wrote:
> I was trying to run "make profile" on the master branch (commit
> 5fa0f5238b: "Git 2.23") and it died in the
>
> $(MAKE) PROFILE=GEN perf
>
> dies with:
>
> cannot open test-results/p5302-pack-index.subtests: No such file or directory at ./aggregate.perl line 153.
>
> I presume that's becuase the file t/perf/test-results/p5302-pack-index.subtests is missing?
That file should be created by running p5302. If you do:
cd t/perf
rm -rf test-results
./run p5302-pack-index.sh
is it generated?
If so, then perhaps something removed it while the perf tests were
running. Did you run perhaps run "make clean" simultaneously?
-Peff
^ permalink raw reply [relevance 0%]
* [PATCH 00/11] hashmap: bugfixes, safety fixes, and WIP improvements
@ 2019-08-26 2:43 6% Eric Wong
2019-09-24 1:03 5% ` [PATCH v2 00/19] hashmap bug/safety/ease-of-use fixes Eric Wong
0 siblings, 1 reply; 42+ results
From: Eric Wong @ 2019-08-26 2:43 UTC (permalink / raw)
To: Junio C Hamano; +Cc: git
This started out as yak-shaving exercise to introduce the
"container_of" macro to make hashmap more flexible and
less error-prone.
So far I've ended up finding and fixing two real bugs in
patches 1/11 and 2/11 which should be fast-tracked.
Patches 3-9 are straightforward safety fixes to prevent future
bugs of the same type.
10-11 are work-in-progress changes to remove the limitation
of hashmap_entry being the first member of a struct. It's
also part of my ongoing agenda to spread Linux kernel idioms
into userspace and maybe get git.git hackers more comfortable
with kernel hacking (and vice-versa :>)
I'll try to continue the rest within the next few days.
The following changes since commit 745f6812895b31c02b29bdfe4ae8e5498f776c26:
First batch after Git 2.23 (2019-08-22 12:41:04 -0700)
are available in the Git repository at:
https://80x24.org/git-svn.git hashmap-wip-v1
for you to fetch changes up to 4d9857917670218cba447caddec15a2734c86e2c:
hashmap_get_next returns "struct hashmap_entry *" (2019-08-26 02:25:35 +0000)
----------------------------------------------------------------
Eric Wong (11):
diff: use hashmap_entry_init on moved_entry.ent
packfile: use hashmap_entry in delta_base_cache_entry
hashmap_entry_init takes "struct hashmap_entry *"
hashmap_entry: detect improper initialization
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 *"
attr.c | 8 +++----
blame.c | 12 +++++-----
builtin/describe.c | 4 ++--
builtin/difftool.c | 17 +++++++-------
builtin/fast-export.c | 9 ++++----
builtin/fetch.c | 4 ++--
config.c | 8 +++----
diff.c | 23 ++++++++++++-------
diffcore-rename.c | 15 ++++++++-----
git-compat-util.h | 10 +++++++++
hashmap.c | 30 ++++++++++++++-----------
hashmap.h | 45 +++++++++++++++++++++----------------
merge-recursive.c | 27 +++++++++++-----------
name-hash.c | 41 +++++++++++++++++----------------
oidmap.c | 2 +-
packfile.c | 8 +++----
patch-ids.c | 6 ++---
range-diff.c | 8 +++----
ref-filter.c | 5 +++--
refs.c | 7 ++++--
remote.c | 8 ++++---
revision.c | 9 ++++----
sequencer.c | 9 ++++----
sub-process.c | 10 ++++-----
submodule-config.c | 20 ++++++++---------
t/helper/test-hashmap.c | 24 +++++++++++---------
t/helper/test-lazy-init-name-hash.c | 4 ++--
27 files changed, 210 insertions(+), 163 deletions(-)
^ permalink raw reply [relevance 6%]
* Re: git log --graph with a sort of local revision number
2019-08-18 19:00 6% ` Rafael Ascensão
@ 2019-08-18 20:46 5% ` Uwe Brauer
0 siblings, 0 replies; 42+ results
From: Uwe Brauer @ 2019-08-18 20:46 UTC (permalink / raw)
To: Rafael Ascensão; +Cc: Uwe Brauer, git, Alban Gruin
[-- Attachment #1: Type: text/plain, Size: 3482 bytes --]
>>> "RA" == Rafael Ascensão <rafa.almas@gmail.com> writes:
> You can achieve something close (on small repos, more on that later) with:
> $ git log --graph --color \
> --format='%C(auto)changeset: %h:%H%nuser: %an%ndate: %ad%nsummary: %s%n' \
> | git name-rev --refs=$(git rev-parse --abbrev-ref HEAD) --name-only --stdin
Ok I see this is bash syntaxes.
In that case it works, but I see
* changeset: f40c01e:f40c01e41afbb87c7321147242354d46ddaee231
| user: Uwe Brauer
| date: Thu Aug 15 15:13:00 2019 +0200
| summary: This is a test.
|
* changeset: 4dcf721:4dcf721042cd8f73d78876caf8f4796153c07023
| user: Uwe Brauer
| date: Wed Aug 14 14:33:29 2019 +0200
| summary: Third
|
* changeset: 93083c8:93083c8b65141047c8346765fb663d5962076246
| user: Uwe Brauer
| date: Wed Aug 14 14:33:29 2019 +0200
| summary: Second
|
* changeset: f59470f:f59470feb19d325accaad634025c229d6977df65
user: Uwe Brauer
date: Wed Aug 14 14:33:29 2019 +0200
summary: First commit
But on the GNU emacs repository which is reasonable old (has about 130
000 commits) and is around 700 MB, your command gives:
* changeset: ee1c638:master
| user: Lars Ingebrigtsen
| date: Sat Aug 17 17:30:42 2019 -0700
| summary: Make `browse-url-of-buffer' work from zip files
|
* changeset: 3d1c9a7:master~1
| user: Paul Eggert
| date: Sat Aug 17 17:19:13 2019 -0700
| summary: Fix org-timer-show-remaining-time > 1 hour
|
* changeset: f38a16e:master~2
| user: Lars Ingebrigtsen
| date: Sat Aug 17 16:56:13 2019 -0700
| summary: Make `describe-function' say that disabled functions are disabled
|
* changeset: 3efe59a:master~3
| user: Lars Ingebrigtsen
| date: Sat Aug 17 16:47:16 2019 -0700
| summary: Make newline-and-indent take a numeric prefix
Which is precisely what you said.
What did I do wrong in my test repo?
Which I generated via the following script
git init
echo "First" > test.org
git add test.org
git add create.sh
git commit -a -m "First commit"
echo "Second" >> test.org
git commit -a -m "Second"
echo "Third" >> test.org
git commit -a -m "Third"
echo "Forth" >> test.org
git commit -a -m "Fourth"
echo "Fifth" >> test.org
git commit -a -m "Fifth"
echo "Six" >> test.org
git commit -a -m "Six"
> * changeset: 5fa0f52:master
> | user: Junio C Hamano
> | date: Fri Aug 16 10:28:23 2019 -0700
> | summary: Git 2.23
> |
> * changeset: 8e0fa0e:master~1
> |\ user: Junio C Hamano
> | | date: Fri Aug 16 10:22:51 2019 -0700
> | | summary: Merge tag 'l10n-2.23.0-rnd2' of git://github.com/git-l10n/git-po
> | |
> | * changeset: a6cd2cc:master~1^2
> | | user: Jiang Xin
> | | date: Tue Jul 30 10:02:22 2019 +0800
> | | summary: l10n: zh_CN: for git v2.23.0 l10n round 1~2
> And in this case, since we are using HEAD to describe the commits by
> using --refs=$(git rev-parse --abbrev-ref HEAD), you can refer to
> a6cd2cc either as master~1^2 or HEAD~1^2.
> Now, git-name-rev has some memory/performance problems in repos with a
> high number of references. Alban Gruin was working on this issue[1], but
> I don't know what's the status of it.
> [1]:https://github.com/agrn/git/tree/ag/fix-name-rev-leak
[-- Attachment #2: smime.p7s --]
[-- Type: application/pkcs7-signature, Size: 5025 bytes --]
^ permalink raw reply [relevance 5%]
* Re: git log --graph with a sort of local revision number
@ 2019-08-18 19:00 6% ` Rafael Ascensão
2019-08-18 20:46 5% ` Uwe Brauer
0 siblings, 1 reply; 42+ results
From: Rafael Ascensão @ 2019-08-18 19:00 UTC (permalink / raw)
To: Uwe Brauer; +Cc: git, Alban Gruin
You can achieve something close (on small repos, more on that later) with:
$ git log --graph --color \
--format='%C(auto)changeset: %h:%H%nuser: %an%ndate: %ad%nsummary: %s%n' \
| git name-rev --refs=$(git rev-parse --abbrev-ref HEAD) --name-only --stdin
* changeset: 5fa0f52:master
| user: Junio C Hamano
| date: Fri Aug 16 10:28:23 2019 -0700
| summary: Git 2.23
|
* changeset: 8e0fa0e:master~1
|\ user: Junio C Hamano
| | date: Fri Aug 16 10:22:51 2019 -0700
| | summary: Merge tag 'l10n-2.23.0-rnd2' of git://github.com/git-l10n/git-po
| |
| * changeset: a6cd2cc:master~1^2
| | user: Jiang Xin
| | date: Tue Jul 30 10:02:22 2019 +0800
| | summary: l10n: zh_CN: for git v2.23.0 l10n round 1~2
And in this case, since we are using HEAD to describe the commits by
using --refs=$(git rev-parse --abbrev-ref HEAD), you can refer to
a6cd2cc either as master~1^2 or HEAD~1^2.
Now, git-name-rev has some memory/performance problems in repos with a
high number of references. Alban Gruin was working on this issue[1], but
I don't know what's the status of it.
[1]:https://github.com/agrn/git/tree/ag/fix-name-rev-leak
^ permalink raw reply [relevance 6%]
* Missing file in 2.23 (p5302-pack-index.subtests)?
@ 2019-08-18 16:03 7% Theodore Y. Ts'o
2019-08-26 20:50 0% ` Jeff King
0 siblings, 1 reply; 42+ results
From: Theodore Y. Ts'o @ 2019-08-18 16:03 UTC (permalink / raw)
To: git
I was trying to run "make profile" on the master branch (commit
5fa0f5238b: "Git 2.23") and it died in the
$(MAKE) PROFILE=GEN perf
dies with:
cannot open test-results/p5302-pack-index.subtests: No such file or directory at ./aggregate.perl line 153.
I presume that's becuase the file t/perf/test-results/p5302-pack-index.subtests is missing?
- Ted
^ permalink raw reply [relevance 7%]
* Re: [ANNOUNCE] Git v2.23.0
2019-08-16 21:00 4% [ANNOUNCE] Git v2.23.0 Junio C Hamano
@ 2019-08-16 21:30 0% ` Bhaskar Chowdhury
0 siblings, 0 replies; 42+ results
From: Bhaskar Chowdhury @ 2019-08-16 21:30 UTC (permalink / raw)
To: Junio C Hamano; +Cc: git, Linux Kernel, git-packagers
[-- Attachment #1: Type: text/plain, Size: 46719 bytes --]
Thanks, a bunch Junio! :)
On 14:00 Fri 16 Aug 2019, Junio C Hamano wrote:
>The latest feature release Git v2.23.0 is now available at the
>usual places. It is comprised of 505 non-merge commits since
>v2.22.0, contributed by 77 people, 26 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.23.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.22.0 are as follows.
>Welcome to the Git development community!
>
> Ariadne Conill, Barret Rhoden, Ben Avison, Carmine Zaccagnino,
> Daniel Ferreira, Doug Ilijev, Dr. Adam Nielsen, Jakub Wilk,
> John Lin, Mark Rushakoff, Matheus Tavares, Mazo, Andrey,
> Michael Osipov, Michael Platings, Miguel Ojeda, Mike Mueller,
> Morian Sonnet, Philipp Weißmann, Quentin Nerden, Robert Morgan,
> Simon Williams, Steven Roberts, Tigran Mkrtchyan, Varun Naik,
> Vishal Verma, and Xin Li.
>
>Returning contributors who helped this release are as follows.
>Thanks for your continued support.
>
> Ævar Arnfjörð Bjarmason, Alessandro Menti, Alexander
> Shopov, Beat Bolli, Boxuan Li, brian m. carlson, Carlo Marcelo
> Arenas Belón, Cesar Eduardo Barros, Chris Mayo, Christian
> Couder, Christopher Díaz Riveros, Denton Liu, Derrick Stolee,
> Dimitriy Ryazantcev, Edmundo Carmona Antoranz, Elijah Newren,
> Emily Shaffer, Eric Wong, Felipe Contreras, Jean-Noël Avila,
> Jeff Hostetler, Jeff King, Jiang Xin, Johannes Schindelin,
> Johannes Sixt, Jonathan Nieder, Jonathan Tan, Jordi Mas, Josh
> Steadmon, Junio C Hamano, Karsten Blees, Marc-André Lureau,
> Martin Ågren, Matthew DeVore, Matthias Rüster, Mike Hommey,
> Nguyễn Thái Ngọc Duy, Nickolai Belakovski, Paolo Bonzini,
> Peter Krefting, Philip Oakley, Phillip Wood, Ramsay Jones, René
> Scharfe, Rohit Ashiwal, Stephen Boyd, SZEDER Gábor, Taylor Blau,
> Thomas Gummerer, Trần Ngọc Quân, and William Chargin.
>
>----------------------------------------------------------------
>
>Git 2.23 Release Notes
>======================
>
>Updates since v2.22
>-------------------
>
>Backward compatibility note
>
> * The "--base" option of "format-patch" computed the patch-ids for
> prerequisite patches in an unstable way, which has been updated to
> compute in a way that is compatible with "git patch-id --stable".
>
> * The "git log" command by default behaves as if the --mailmap option
> was given.
>
>
>UI, Workflows & Features
>
> * The "git fast-export/import" pair has been taught to handle commits
> with log messages in encoding other than UTF-8 better.
>
> * In recent versions of Git, per-worktree refs are exposed in
> refs/worktrees/<wtname>/ hierarchy, which means that worktree names
> must be a valid refname component. The code now sanitizes the names
> given to worktrees, to make sure these refs are well-formed.
>
> * "git merge" learned "--quit" option that cleans up the in-progress
> merge while leaving the working tree and the index still in a mess.
>
> * "git format-patch" learns a configuration to set the default for
> its --notes=<ref> option.
>
> * The code to show args with potential typo that cannot be
> interpreted as a commit-ish has been improved.
>
> * "git clone --recurse-submodules" learned to set up the submodules
> to ignore commit object names recorded in the superproject gitlink
> and instead use the commits that happen to be at the tip of the
> remote-tracking branches from the get-go, by passing the new
> "--remote-submodules" option.
>
> * The pattern "git diff/grep" use to extract funcname and words
> boundary for Matlab has been extend to cover Octave, which is more
> or less equivalent.
>
> * "git help git" was hard to discover (well, at least for some
> people).
>
> * The pattern "git diff/grep" use to extract funcname and words
> boundary for Rust has been added.
>
> * "git status" can be told a non-standard default value for the
> "--[no-]ahead-behind" option with a new configuration variable
> status.aheadBehind.
>
> * "git fetch" and "git pull" reports when a fetch results in
> non-fast-forward updates to let the user notice unusual situation.
> The commands learned "--no-show-forced-updates" option to disable
> this safety feature.
>
> * Two new commands "git switch" and "git restore" are introduced to
> split "checking out a branch to work on advancing its history" and
> "checking out paths out of the index and/or a tree-ish to work on
> advancing the current history" out of the single "git checkout"
> command.
>
> * "git branch --list" learned to always output the detached HEAD as
> the first item (when the HEAD is detached, of course), regardless
> of the locale.
>
> * The conditional inclusion mechanism learned to base the choice on
> the branch the HEAD currently is on.
>
> * "git rev-list --objects" learned the "--no-object-names" option to
> squelch the path to the object that is used as a grouping hint for
> pack-objects.
>
> * A new tag.gpgSign configuration variable turns "git tag -a" into
> "git tag -s".
>
> * "git multi-pack-index" learned expire and repack subcommands.
>
> * "git blame" learned to "ignore" commits in the history, whose
> effects (as well as their presence) get ignored.
>
> * "git cherry-pick/revert" learned a new "--skip" action.
>
> * The tips of refs from the alternate object store can be used as
> starting point for reachability computation now.
>
> * Extra blank lines in "git status" output have been reduced.
>
> * The commits in a repository can be described by multiple
> commit-graph files now, which allows the commit-graph files to be
> updated incrementally.
>
> * "git range-diff" output has been tweaked for easier identification
> of which part of what file the patch shown is about.
>
>
>Performance, Internal Implementation, Development Support etc.
>
> * Update supporting parts of "git rebase" to remove code that should
> no longer be used.
>
> * Developer support to emulate unsatisfied prerequisites in tests to
> ensure that the remainder of the tests still succeeds when tests
> with prerequisites are skipped.
>
> * "git update-server-info" learned not to rewrite the file with the
> same contents.
>
> * The way of specifying the path to find dynamic libraries at runtime
> has been simplified. The old default to pass -R/path/to/dir has been
> replaced with the new default to pass -Wl,-rpath,/path/to/dir,
> which is the more recent GCC uses. Those who need to build with an
> old GCC can still use "CC_LD_DYNPATH=-R"
>
> * Prepare use of reachability index in topological walker that works
> on a range (A..B).
>
> * A new tutorial targeting specifically aspiring git-core
> developers has been added.
>
> * Auto-detect how to tell HP-UX aCC where to use dynamically linked
> libraries from at runtime.
>
> * "git mergetool" and its tests now spawn fewer subprocesses.
>
> * Dev support update to help tracing out tests.
>
> * Support to build with MSVC has been updated.
>
> * "git fetch" that grabs from a group of remotes learned to run the
> auto-gc only once at the very end.
>
> * A handful of Windows build patches have been upstreamed.
>
> * The code to read state files used by the sequencer machinery for
> "git status" has been made more robust against a corrupt or stale
> state files.
>
> * "git for-each-ref" with multiple patterns have been optimized.
>
> * The tree-walk API learned to pass an in-core repository
> instance throughout more codepaths.
>
> * When one step in multi step cherry-pick or revert is reset or
> committed, the command line prompt script failed to notice the
> current status, which has been improved.
>
> * Many GIT_TEST_* environment variables control various aspects of
> how our tests are run, but a few followed "non-empty is true, empty
> or unset is false" while others followed the usual "there are a few
> ways to spell true, like yes, on, etc., and also ways to spell
> false, like no, off, etc." convention.
>
> * Adjust the dir-iterator API and apply it to the local clone
> optimization codepath.
>
> * We have been trying out a few language features outside c89; the
> coding guidelines document did not talk about them and instead had
> a blanket ban against them.
>
> * A test helper has been introduced to optimize preparation of test
> repositories with many simple commits, and a handful of test
> scripts have been updated to use it.
>
>
>Fixes since v2.22
>-----------------
>
> * A relative pathname given to "git init --template=<path> <repo>"
> ought to be relative to the directory "git init" gets invoked in,
> but it instead was made relative to the repository, which has been
> corrected.
>
> * "git worktree add" used to fail when another worktree connected to
> the same repository was corrupt, which has been corrected.
>
> * The ownership rule for the file descriptor to fast-import remote
> backend was mixed up, leading to an unrelated file descriptor getting
> closed, which has been fixed.
>
> * A "merge -c" instruction during "git rebase --rebase-merges" should
> give the user a chance to edit the log message, even when there is
> otherwise no need to create a new merge and replace the existing
> one (i.e. fast-forward instead), but did not. Which has been
> corrected.
>
> * Code cleanup and futureproof.
>
> * More parameter validation.
>
> * "git update-server-info" used to leave stale packfiles in its
> output, which has been corrected.
>
> * The server side support for "git fetch" used to show incorrect
> value for the HEAD symbolic ref when the namespace feature is in
> use, which has been corrected.
>
> * "git am -i --resolved" segfaulted after trying to see a commit as
> if it were a tree, which has been corrected.
>
> * "git bundle verify" needs to see if prerequisite objects exist in
> the receiving repository, but the command did not check if we are
> in a repository upfront, which has been corrected.
>
> * "git merge --squash" is designed to update the working tree and the
> index without creating the commit, and this cannot be countermanded
> by adding the "--commit" option; the command now refuses to work
> when both options are given.
>
> * The data collected by fsmonitor was not properly written back to
> the on-disk index file, breaking t7519 tests occasionally, which
> has been corrected.
>
> * Update to Unicode 12.1 width table.
>
> * The command line to invoke a "git cat-file" command from inside
> "git p4" was not properly quoted to protect a caret and running a
> broken command on Windows, which has been corrected.
>
> * "git request-pull" learned to warn when the ref we ask them to pull
> from in the local repository and in the published repository are
> different.
>
> * When creating a partial clone, the object filtering criteria is
> recorded for the origin of the clone, but this incorrectly used a
> hardcoded name "origin" to name that remote; it has been corrected
> to honor the "--origin <name>" option.
>
> * "git fetch" into a lazy clone forgot to fetch base objects that are
> necessary to complete delta in a thin packfile, which has been
> corrected.
>
> * The filter_data used in the list-objects-filter (which manages a
> lazily sparse clone repository) did not use the dynamic array API
> correctly---'nr' is supposed to point at one past the last element
> of the array in use. This has been corrected.
>
> * The description about slashes in gitignore patterns (used to
> indicate things like "anchored to this level only" and "only
> matches directories") has been revamped.
>
> * The URL decoding code has been updated to avoid going past the end
> of the string while parsing %-<hex>-<hex> sequence.
>
> * The list of for-each like macros used by clang-format has been
> updated.
>
> * "git branch --list" learned to show branches that are checked out
> in other worktrees connected to the same repository prefixed with
> '+', similar to the way the currently checked out branch is shown
> with '*' in front.
> (merge 6e9381469e nb/branch-show-other-worktrees-head later to maint).
>
> * Code restructuring during 2.20 period broke fetching tags via
> "import" based transports.
>
> * The commit-graph file is now part of the "files that the runtime
> may keep open file descriptors on, all of which would need to be
> closed when done with the object store", and the file descriptor to
> an existing commit-graph file now is closed before "gc" finalizes a
> new instance to replace it.
>
> * "git checkout -p" needs to selectively apply a patch in reverse,
> which did not work well.
>
> * Code clean-up to avoid signed integer wraparounds during binary search.
>
> * "git interpret-trailers" always treated '#' as the comment
> character, regardless of core.commentChar setting, which has been
> corrected.
>
> * "git stash show 23" used to work, but no more after getting
> rewritten in C; this regression has been corrected.
>
> * "git rebase --abort" used to leave refs/rewritten/ when concluding
> "git rebase -r", which has been corrected.
>
> * An incorrect list of options was cached after command line
> completion failed (e.g. trying to complete a command that requires
> a repository outside one), which has been corrected.
>
> * The code to parse scaled numbers out of configuration files has
> been made more robust and also easier to follow.
>
> * The codepath to compute delta islands used to spew progress output
> without giving the callers any way to squelch it, which has been
> fixed.
>
> * Protocol capabilities that go over wire should never be translated,
> but it was incorrectly marked for translation, which has been
> corrected. The output of protocol capabilities for debugging has
> been tweaked a bit.
>
> * Use "Erase in Line" CSI sequence that is already used in the editor
> support to clear cruft in the progress output.
>
> * "git submodule foreach" did not protect command line options passed
> to the command to be run in each submodule correctly, when the
> "--recursive" option was in use.
>
> * The configuration variable rebase.rescheduleFailedExec should be
> effective only while running an interactive rebase and should not
> affect anything when running a non-interactive one, which was not
> the case. This has been corrected.
>
> * The "git clone" documentation refers to command line options in its
> description in the short form; they have been replaced with long
> forms to make them more recognisable.
>
> * Generation of pack bitmaps are now disabled when .keep files exist,
> as these are mutually exclusive features.
> (merge 7328482253 ew/repack-with-bitmaps-by-default later to maint).
>
> * "git rm" to resolve a conflicted path leaked an internal message
> "needs merge" before actually removing the path, which was
> confusing. This has been corrected.
>
> * "git stash --keep-index" did not work correctly on paths that have
> been removed, which has been fixed.
> (merge b932f6a5e8 tg/stash-keep-index-with-removed-paths later to maint).
>
> * Window 7 update ;-)
>
> * A codepath that reads from GPG for signed object verification read
> past the end of allocated buffer, which has been fixed.
>
> * "git clean" silently skipped a path when it cannot lstat() it; now
> it gives a warning.
>
> * "git push --atomic" that goes over the transport-helper (namely,
> the smart http transport) failed to prevent refs to be pushed when
> it can locally tell that one of the ref update will fail without
> having to consult the other end, which has been corrected.
>
> * The internal diff machinery can be made to read out of bounds while
> looking for --function-context line in a corner case, which has been
> corrected.
> (merge b777f3fd61 jk/xdiff-clamp-funcname-context-index later to maint).
>
> * Other code cleanup, docfix, build fix, etc.
> (merge fbec05c210 cc/test-oidmap later to maint).
> (merge 7a06fb038c jk/no-system-includes-in-dot-c later to maint).
> (merge 81ed2b405c cb/xdiff-no-system-includes-in-dot-c later to maint).
> (merge d61e6ce1dd sg/fsck-config-in-doc later to maint).
>
>----------------------------------------------------------------
>
>Changes since v2.22.0 are as follows:
>
>Alessandro Menti (3):
> l10n: it.po: update the Italian translation
> l10n: it.po: update the Italian translation for v2.23.0
> l10n: it.po: update the Italian localization for v2.23.0 round 2
>
>Alexander Shopov (1):
> l10n: bg.po: Updated Bulgarian translation (4674t)
>
>Ariadne Conill (3):
> log: add warning for unspecified log.mailmap setting
> documentation: mention --no-use-mailmap and log.mailmap false setting
> tests: defang pager tests by explicitly disabling the log.mailmap warning
>
>Barret Rhoden (8):
> fsck: rename and touch up init_skiplist()
> Move oidset_parse_file() to oidset.c
> blame: use a helper function in blame_chunk()
> blame: add the ability to ignore commits and their changes
> blame: add config options for the output of ignored or unblamable lines
> blame: optionally track line fingerprints during fill_blame_origin()
> blame: use the fingerprint heuristic to match ignored lines
> blame: add a test to cover blame_coalesce()
>
>Beat Bolli (2):
> unicode: update the width tables to Unicode 12.1
> grep: print the pcre2_jit_on value
>
>Ben Avison (1):
> clone: add `--remote-submodules` flag
>
>Boxuan Li (2):
> userdiff: add Octave
> userdiff: fix grammar and style issues
>
>Carlo Marcelo Arenas Belón (6):
> fsmonitor: avoid signed integer overflow / infinite loop
> wrapper: avoid undefined behaviour in macOS
> trace2: correct typo in technical documentation
> xdiff: drop system includes in xutils.c
> xdiff: remove duplicate headers from xhistogram.c
> xdiff: remove duplicate headers from xpatience.c
>
>Carmine Zaccagnino (1):
> l10n: it.po: remove an extra space
>
>Cesar Eduardo Barros (1):
> mingw: embed a manifest to trick UAC into Doing The Right Thing
>
>Chris Mayo (1):
> send-email: update documentation of required Perl modules
>
>Christian Couder (7):
> t/helper: add test-oidmap.c
> t: add t0016-oidmap.sh
> oidmap: use sha1hash() instead of static hash() function
> test-hashmap: remove 'hash' command
> doc: improve usage string in MyFirstContribution
> test-oidmap: remove 'add' subcommand
> t0016: add 'remove' subcommand test
>
>Christopher Díaz Riveros (1):
> l10n: es: 2.23.0 round 2
>
>Daniel Ferreira (1):
> dir-iterator: add tests for dir-iterator API
>
>Denton Liu (5):
> git-format-patch.txt: document --no-notes option
> format-patch: teach format.notes config option
> config: learn the "onbranch:" includeIf condition
> config/alias.txt: change " and ' to `
> config/alias.txt: document alias accepting non-command first word
>
>Derrick Stolee (51):
> commit-graph: fix the_repository reference
> revision: use generation for A..B --topo-order queries
> revision: keep topo-walk free of unintersting commits
> sha1-file: split OBJECT_INFO_FOR_PREFETCH
> repack: refactor pack deletion for future use
> Docs: rearrange subcommands for multi-pack-index
> multi-pack-index: prepare for 'expire' subcommand
> midx: simplify computation of pack name lengths
> midx: refactor permutation logic and pack sorting
> multi-pack-index: implement 'expire' subcommand
> multi-pack-index: prepare 'repack' subcommand
> midx: implement midx_repack()
> multi-pack-index: test expire while adding packs
> midx: add test that 'expire' respects .keep files
> t5319-multi-pack-index.sh: test batch size zero
> commit-graph: return with errors during write
> commit-graph: collapse parameters into flags
> commit-graph: remove Future Work section
> commit-graph: create write_commit_graph_context
> commit-graph: extract fill_oids_from_packs()
> commit-graph: extract fill_oids_from_commit_hex()
> commit-graph: extract fill_oids_from_all_packs()
> commit-graph: extract count_distinct_commits()
> commit-graph: extract copy_oids_to_commits()
> commit-graph: extract write_commit_graph_file()
> commit-graph: use raw_object_store when closing
> packfile: close commit-graph in close_all_packs
> packfile: rename close_all_packs to close_object_store
> commit-graph: document commit-graph chains
> commit-graph: prepare for commit-graph chains
> commit-graph: rename commit_compare to oid_compare
> commit-graph: load commit-graph chains
> commit-graph: add base graphs chunk
> commit-graph: rearrange chunk count logic
> commit-graph: write commit-graph chains
> commit-graph: add --split option to builtin
> commit-graph: merge commit-graph chains
> commit-graph: allow cross-alternate chains
> commit-graph: expire commit-graph files
> commit-graph: create options for split files
> commit-graph: verify chains with --shallow mode
> commit-graph: clean up chains after flattened write
> commit-graph: test octopus merges with --split
> commit-graph: test --split across alternate without --split
> commit-graph: normalize commit-graph filenames
> commit-graph: test verify across alternates
> fetch: add --[no-]show-forced-updates argument
> fetch: warn about forced updates in branch listing
> pull: add --[no-]show-forced-updates passthrough
> t5319: use 'test-tool path-utils' instead of 'ls -l'
> commit-graph: fix bug around octopus merges
>
>Dimitriy Ryazantcev (2):
> l10n: ru.po: update Russian translation
> l10n: localizable upload progress messages
>
>Doug Ilijev (1):
> README: fix rendering of text in angle brackets
>
>Dr. Adam Nielsen (1):
> gitignore.txt: make slash-rules more readable
>
>Edmundo Carmona Antoranz (1):
> builtin/merge.c - cleanup of code in for-cycle that tests strategies
>
>Elijah Newren (6):
> t9350: fix encoding test to actually test reencoding
> fast-import: support 'encoding' commit header
> fast-export: avoid stripping encoding header if we cannot reencode
> fast-export: differentiate between explicitly UTF-8 and implicitly UTF-8
> fast-export: do automatic reencoding of commit messages only if requested
> merge-recursive: avoid directory rename detection in recursive case
>
>Emily Shaffer (7):
> documentation: add tutorial for first contribution
> documentation: add anchors to MyFirstContribution
> grep: fail if call could output and name is null
> doc: hint about GIT_DEBUGGER in CodingGuidelines
> doc: add some nit fixes to MyFirstContribution
> rev-list: teach --no-object-names to enable piping
> transport-helper: enforce atomic in push_refs_with_push
>
>Eric Wong (3):
> update-server-info: avoid needless overwrites
> server-info: do not list unlinked packs
> repack: disable bitmaps-by-default if .keep files exist
>
>Felipe Contreras (5):
> t5801 (remote-helpers): cleanup refspec stuff
> t5801 (remote-helpers): add test to fetch tags
> fetch: trivial cleanup
> fetch: make the code more understandable
> fetch: fix regression with transport helpers
>
>Jakub Wilk (1):
> doc: don't use git.kernel.org as example gitweb URL
>
>Jean-Noël Avila (2):
> l10n: reformat some localized strings for v2.23.0
> l10n: fr v2.23.0 round 2
>
>Jeff Hostetler (13):
> cache-tree/blame: avoid reusing the DEBUG constant
> msvc: mark a variable as non-const
> msvc: do not re-declare the timespec struct
> msvc: define ftello()
> msvc: fix detect_msys_tty()
> msvc: update Makefile to allow for spaces in the compiler path
> status: add status.aheadbehind setting
> status: warn when a/b calculation takes too long
> status: ignore status.aheadbehind in porcelain formats
> msvc: support building Git using MS Visual C++
> msvc: add a compile-time flag to allow detailed heap debugging
> msvc: do not pretend to support all signals
> msvc: ignore .dll and incremental compile output
>
>Jeff King (57):
> cmd_{read,write}_tree: rename "unused" variable that is used
> builtin: consistently pass cmd_* prefix to parse_options
> submodule: drop unused prefix parameter from some functions
> clone: drop dest parameter from copy_alternates()
> read-cache: drop unused parameter from threaded load
> wt-status: drop unused status parameter
> mktree: drop unused length parameter
> name-rev: drop unused parameters from is_better_name()
> pack-objects: drop unused rev_info parameters
> receive-pack: drop unused "commands" from prepare_shallow_update()
> remove_all_fetch_refspecs(): drop unused "remote" parameter
> rev-list: drop unused void pointer from finish_commit()
> show-branch: drop unused parameter from show_independent()
> verify-commit: simplify parameters to run_gpg_verify()
> help_unknown_ref(): duplicate collected refnames
> help_unknown_ref(): check for refname ambiguity
> upload-pack: strip namespace from symref data
> am: simplify prompt response handling
> am: read interactive input from stdin
> am: drop tty requirement for --interactive
> am: fix --interactive HEAD tree resolution
> interpret-trailers: load default config
> verify-tag: drop signal.h include
> wt-status.h: drop stdio.h include
> describe: fix accidental oid/hash type-punning
> upload-pack: rename a "sha1" variable to "oid"
> pack-bitmap-write: convert some helpers to use object_id
> pack-objects: convert packlist_find() to use object_id
> pack-objects: convert locate_object_entry_hash() to object_id
> object: convert lookup_unknown_object() to use object_id
> object: convert lookup_object() to use object_id
> object: convert internal hash_obj() to object_id
> object: convert create_object() to use object_id
> khash: drop broken oid_map typedef
> khash: rename kh_oid_t to kh_oid_set
> delta-islands: convert island_marks khash to use oids
> pack-bitmap: convert khash_sha1 maps into kh_oid_map
> khash: drop sha1-specific map types
> khash: rename oid helper functions
> hash.h: move object_id definition from cache.h
> hashmap: convert sha1hash() to oidhash()
> delta-islands: respect progress flag
> blame: drop some unused function parameters
> object-store.h: move for_each_alternate_ref() from transport.h
> check_everything_connected: assume alternate ref tips are valid
> test-lib: introduce test_commit_bulk
> t5310: increase the number of bitmapped commits
> t3311: use test_commit_bulk
> t5702: use test_commit_bulk
> t5703: use test_commit_bulk
> t6200: use test_commit_bulk
> xdiff: clamp function context indices in post-image
> t: sort output of hashmap iteration
> t7700: clean up .keep file in bitmap-writing test
> repack: silence warnings when auto-enabled bitmaps cannot be built
> repack: simplify handling of auto-bitmaps and .keep files
> t0000: reword comments for "local" test
>
>Jiang Xin (3):
> l10n: git.pot: v2.23.0 round 1 (130 new, 35 removed)
> l10n: git.pot: v2.23.0 round 2 (4 new, 6 removed)
> l10n: zh_CN: for git v2.23.0 l10n round 1~2
>
>Johannes Schindelin (47):
> 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
> bisect--helper: verify HEAD could be parsed before continuing
> fill_stat_cache_info(): prepare for an fsmonitor fix
> mark_fsmonitor_valid(): mark the index as changed if needed
> bundle verify: error out if called without an object database
> poll (mingw): allow compiling with GCC 8 and DEVELOPER=1
> kwset: allow building with GCC 8
> winansi: simplify loading the GetCurrentConsoleFontEx() function
> config: avoid calling `labs()` on too-large data type
> t3404: fix a typo
> mingw: fix a typo in the msysGit-specific section
> Mark .bat files as requiring CR/LF endings
> t0001 (mingw): do not expect a specific order of stdout/stderr
> obstack: fix compiler warning
> mingw: replace mingw_startup() hack
> msvc: fix dependencies of compat/msvc.c
> t0001: fix on case-insensitive filesystems
> msvc: avoid debug assertion windows in Debug Mode
> mingw: enable stack smashing protector
> mingw: get pw_name in UTF-8 format
> mingw: use Unicode functions explicitly
> rebase --am: ignore rebase.rescheduleFailedExec
> mingw: fix possible buffer overrun when calling `GetUserNameW()`
> diff: munmap() file contents before running external diff
> mingw: support spawning programs containing spaces in their names
> clean: show an error message when the path is too long
> rebase: fix white-space
> git: mark cmd_rebase as requiring a worktree
> Vcproj.pm: auto-generate GUIDs
> Vcproj.pm: do not configure VCWebServiceProxyGeneratorTool
> Vcproj.pm: urlencode '<' and '>' when generating VC projects
> contrib/buildsystems: ignore irrelevant files in Generators/
> contrib/buildsystems: error out on unknown option
> contrib/buildsystems: handle libiconv, too
> contrib/buildsystems: also handle -lexpat
> contrib/buildsystems: handle options starting with a slash
> contrib/buildsystems: add a backend for modern Visual Studio versions
> msvc: add a Makefile target to pre-generate the Visual Studio solution
> vcxproj: also link-or-copy builtins
> .gitignore: ignore Visual Studio's temporary/generated files
> bin-wrappers: append `.exe` to target paths if necessary
> git: avoid calling aliased builtins via their dashed form
> config: work around bug with includeif:onbranch and early config
>
>Johannes Sixt (5):
> userdiff: two simplifications of patterns for rust
> t7610-mergetool: do not place pipelines headed by `yes` in subshells
> t7610-mergetool: use test_cmp instead of test $(cat file) = $txt
> mergetool: dissect strings with shell variable magic instead of `expr`
> mergetool: use shell variable magic instead of `awk`
>
>John Lin (1):
> status: remove the empty line after hints
>
>Jonathan Nieder (1):
> t: decrease nesting in test_oid_to_path
>
>Jonathan Tan (5):
> t5616: refactor packfile replacement
> index-pack: prefetch missing REF_DELTA bases
> t5616: use correct flag to check object is missing
> t5616: cover case of client having delta base
> t5551: test usage of chunked encoding explicitly
>
>Jordi Mas (2):
> l10n: Update Catalan translation
> l10n: Update Catalan translation
>
>Josh Steadmon (1):
> trace2: correct trace2 field name documentation
>
>Junio C Hamano (21):
> The first batch after 2.22
> The second batch
> The third batch
> The fourth batch
> The fifth batch
> transport-helper: avoid var decl in for () loop control
> rm: resolving by removal is not a warning-worthy event
> CodingGuidelines: spell out post-C89 rules
> The sixth batch
> The seventh batch
> Flush fixes up to the third batch post 2.22.0
> Merge fixes made on the 'master' front
> Git 2.23-rc0
> test-dir-iterator: do not assume errno values
> A few more last-minute fixes
> log: flip the --mailmap default unconditionally
> log: really flip the --mailmap default
> Git 2.23-rc1
> Git 2.23-rc2
> Git 2.22.1
> Git 2.23
>
>Karsten Blees (2):
> gettext: always use UTF-8 on native Windows
> mingw: initialize HOME on startup
>
>Marc-André Lureau (1):
> userdiff: add built-in pattern for rust
>
>Mark Rushakoff (2):
> doc: typo: s/can not/cannot/ and s/is does/does/
> doc: fix repeated words
>
>Martin Ågren (3):
> ref-filter: fix memory leak in `free_array_item()`
> RelNotes/2.21.1: typofix
> RelNotes/2.23.0: fix a few typos and other minor issues
>
>Matheus Tavares (8):
> clone: better handle symlinked files at .git/objects/
> dir-iterator: use warning_errno when possible
> dir-iterator: refactor state machine model
> dir-iterator: add flags parameter to dir_iterator_begin
> clone: copy hidden paths at local clone
> clone: extract function from copy_or_link_directory
> clone: use dir-iterator to avoid explicit dir traversal
> clone: replace strcmp by fspathcmp
>
>Matthew DeVore (5):
> list-objects-filter-options: error is localizeable
> list-objects-filter: correct usage of ALLOC_GROW
> url: do not read past end of buffer
> url: do not allow %00 to represent NUL in URLs
> ref-filter: sort detached HEAD lines firstly
>
>Matthias Rüster (1):
> l10n: de.po: Update German translation
>
>Mazo, Andrey (8):
> git-p4: detect/prevent infinite loop in gitCommitByP4Change()
> git-p4: add failing test for "git-p4: match branches case insensitively if configured"
> git-p4: match branches case insensitively if configured
> git-p4: don't groom exclude path list on every commit
> git-p4: add failing test for "don't exclude other files with same prefix"
> git-p4: don't exclude other files with same prefix
> git-p4: add failing test for "git-p4: respect excluded paths when detecting branches"
> git-p4: respect excluded paths when detecting branches
>
>Michael Osipov (1):
> configure: Detect linking style for HP aCC on HP-UX
>
>Michael Platings (2):
> blame: add a fingerprint heuristic to match ignored lines
> t8014: remove unnecessary braces
>
>Miguel Ojeda (1):
> clang-format: use git grep to generate the ForEachMacros list
>
>Mike Hommey (2):
> dup() the input fd for fast-import used for remote helpers
> Use xmmap_gently instead of xmmap in use_pack
>
>Mike Mueller (1):
> p4 unshelve: fix "Not a valid object name HEAD0" on Windows
>
>Morian Sonnet (1):
> submodule foreach: fix recursion of options
>
>Nguyễn Thái Ngọc Duy (63):
> git-checkout.txt: spell out --no-option
> git-checkout.txt: fix one syntax line
> doc: document --overwrite-ignore
> git-checkout.txt: fix monospace typeset
> t: rename t2014-switch.sh to t2014-checkout-switch.sh
> checkout: advice how to get out of detached HEAD mode
> checkout: inform the user when removing branch state
> checkout: keep most #include sorted
> checkout: factor out some code in parse_branchname_arg()
> checkout: make "opts" in cmd_checkout() a pointer
> checkout: move 'confict_style' and 'dwim_..' to checkout_opts
> checkout: split options[] array in three pieces
> checkout: split part of it to new command 'switch'
> switch: better names for -b and -B
> switch: add --discard-changes
> switch: remove -l
> switch: stop accepting pathspec
> switch: reject "do nothing" case
> switch: only allow explicit detached HEAD
> switch: add short option for --detach
> switch: implicit dwim, use --no-guess to disable it
> switch: no worktree status unless real branch switch happens
> switch: reject if some operation is in progress
> switch: make --orphan switch to an empty tree
> t: add tests for switch
> completion: support switch
> doc: promote "git switch"
> checkout: split part of it to new command 'restore'
> restore: take tree-ish from --source option instead
> restore: make pathspec mandatory
> restore: disable overlay mode by default
> checkout: factor out worktree checkout code
> restore: add --worktree and --staged
> restore: reject invalid combinations with --staged
> restore: default to --source=HEAD when only --staged is specified
> restore: replace --force with --ignore-unmerged
> restore: support --patch
> t: add tests for restore
> completion: support restore
> user-manual.txt: prefer 'merge --abort' over 'reset --hard'
> doc: promote "git restore"
> help: move git-diff and git-reset to different groups
> Declare both git-switch and git-restore experimental
> merge: remove drop_save() in favor of remove_merge_branch_state()
> init: make --template path relative to $CWD
> worktree add: sanitize worktree names
> worktree add: be tolerant of corrupt worktrees
> merge: add --quit
> completion: do not cache if --git-completion-helper fails
> fetch: only run 'gc' once when fetching multiple remotes
> t2027: use test_must_be_empty
> switch: allow to switch in the middle of bisect
> completion: disable dwim on "git switch -d"
> fetch-pack: move capability names out of i18n strings
> fetch-pack: print all relevant supported capabilities with -v -v
> fetch-pack: print server version at the top in -v -v
> sha1-file.c: remove the_repo from read_object_with_reference()
> tree-walk.c: remove the_repo from fill_tree_descriptor()
> tree-walk.c: remove the_repo from get_tree_entry()
> tree-walk.c: remove the_repo from get_tree_entry_follow_symlinks()
> match-trees.c: remove the_repo from shift_tree*()
> Use the right 'struct repository' instead of the_repository
> t7814: do not generate same commits in different repos
>
>Nickolai Belakovski (3):
> ref-filter: add worktreepath atom
> branch: update output to include worktree info
> branch: add worktree info on verbose output
>
>Paolo Bonzini (2):
> request-pull: quote regex metacharacters in local ref
> request-pull: warn if the remote object is not the same as the local one
>
>Peter Krefting (1):
> l10n: sv.po: Update Swedish translation (4676t0f0u)
>
>Philip Oakley (16):
> git.c: show usage for accessing the git(1) help page
> Doc: git.txt: remove backticks from link and add git-scm.com/docs
> doc branch: provide examples for listing remote tracking branches
> msvc: include sigset_t definition
> msvc: define O_ACCMODE
> msvc: add pragmas for common warnings
> Vcproj.pm: list git.exe first to be startup project
> contrib/buildsystems: ignore invalidcontinue.obj
> contrib/buildsystems: fix misleading error message
> contrib/buildsystems: handle quoted spaces in filenames
> contrib/buildsystems: ignore gettext stuff
> contrib/buildsystems: redirect errors of the dry run into a log file
> contrib/buildsystems: optionally capture the dry-run in a file
> contrib/buildsystems: handle the curl library option
> .gitignore: touch up the entries regarding Visual Studio
> .mailmap: update email address of Philip Oakley
>
>Philipp Weißmann (1):
> l10n: de.po: Fix typo in German translation
>
>Phillip Wood (12):
> rebase: fix a memory leak
> rebase: warn if state directory cannot be removed
> sequencer: return errors from sequencer_remove_state()
> rebase --abort/--quit: cleanup refs/rewritten
> rebase -r: always reword merge -c
> add -p: fix checkout -p with pathological context
> show --continue/skip etc. consistently in synopsis
> sequencer: always allow tab after command name
> sequencer: factor out todo command name parsing
> status: do not report errors in sequencer/todo
> git-prompt: improve cherry-pick/revert detection
> t3420: remove progress lines before comparing output
>
>Quentin Nerden (2):
> docs: git-clone: refer to long form of options
> docs: git-clone: list short form of options first
>
>Ramsay Jones (1):
> env--helper: mark a file-local symbol as static
>
>René Scharfe (10):
> cleanup: fix possible overflow errors in binary search, part 2
> coccinelle: use COPY_ARRAY for copying arrays
> use COPY_ARRAY for copying arrays
> config: use unsigned_mult_overflows to check for overflows
> config: don't multiply in parse_unit_factor()
> config: simplify parsing of unit factors
> commit-graph: release strbufs after use
> dir-iterator: release strbuf after use
> test-dir-iterator: use path argument directly
> sha1-file: release strbuf after use
>
>Robert Morgan (1):
> gpg(docs): use correct --verify syntax
>
>Rohit Ashiwal (5):
> sequencer: add advice for revert
> sequencer: rename reset_for_rollback to reset_merge
> sequencer: use argv_array in reset_merge
> cherry-pick/revert: add --skip option
> cherry-pick/revert: advise using --skip
>
>SZEDER Gábor (12):
> t3404: modernize here doc style
> t3404: make the 'rebase.missingCommitsCheck=ignore' test more focused
> pager: add a helper function to clear the last line in the terminal
> t5551: use 'test_i18ngrep' to check translated output
> rebase: fix garbled progress display with '-x'
> progress: use term_clear_line()
> Document that 'git -C ""' works and doesn't change directory
> ci: don't update Homebrew
> ci: disable Homebrew's auto cleanup
> ci/lib.sh: update a comment about installed P4 and Git-LFS versions
> travis-ci: build with GCC 4.8 as well
> Documentation/git-fsck.txt: include fsck.* config variables
>
>Simon Williams (1):
> git-p4: allow unshelving of branched files
>
>Stephen Boyd (2):
> format-patch: inform user that patch-id generation is unstable
> format-patch: make --base patch-id output stable
>
>Steven Roberts (1):
> gpg-interface: do not scan past the end of buffer
>
>Taylor Blau (1):
> ref-filter.c: find disjoint pattern prefixes
>
>Thomas Gummerer (16):
> stash: fix show referencing stash index
> apply: replace marc.info link with public-inbox
> apply: only pass required data to skip_tree_prefix
> apply: only pass required data to git_header_name
> apply: only pass required data to check_header_line
> apply: only pass required data to find_name_*
> apply: only pass required data to gitdiff_* functions
> apply: make parse_git_diff_header public
> range-diff: fix function parameter indentation
> range-diff: split lines manually
> range-diff: don't remove funcname from inner diff
> range-diff: suppress line count in outer diff
> range-diff: add section header instead of diff header
> range-diff: add filename to inner diff
> range-diff: add headers to the outer hunk header
> stash: fix handling removed files with --keep-index
>
>Tigran Mkrtchyan (1):
> tag: add tag.gpgSign config option to force all tags be GPG-signed
>
>Trần Ngọc Quân (2):
> l10n: vi.po (4676t): Updated Vietnamese translation
> l10n: vi(4674t): Updated translation for Vietnamese
>
>Varun Naik (1):
> read-cache.c: do not die if mmap fails
>
>Vishal Verma (1):
> merge: refuse --commit with --squash
>
>William Chargin (1):
> restore: fix typo in docs
>
>Xin Li (1):
> clone: respect user supplied origin name when setting up partial clone
>
>brian m. carlson (10):
> t: add helper to convert object IDs to paths
> t1410: make hash size independent
> t1450: make hash size independent
> t5000: make hash independent
> t6030: make test work with SHA-256
> t0027: make hash size independent
> t0090: make test pass with SHA-256
> t1007: remove SHA1 prerequisites
> t1710: make hash independent
> t2203: avoid hard-coded object ID values
>
>Ævar Arnfjörð Bjarmason (21):
> send-email: move the read_config() function above getopts
> send-email: rename the @bcclist variable for consistency
> send-email: do defaults -> config -> getopt in that order
> tests: add a special setup where prerequisites fail
> Makefile: remove the NO_R_TO_GCC_LINKER flag
> send-email: remove cargo-culted multi-patch pattern in tests
> send-email: fix broken transferEncoding tests
> send-email: document --no-[to|cc|bcc]
> hash-object doc: stop mentioning git-cvsimport
> send-email: fix regression in sendemail.identity parsing
> Revert "test-lib: whitelist GIT_TR2_* in the environment"
> config tests: simplify include cycle test
> env--helper: new undocumented builtin wrapping git_env_*()
> config.c: refactor die_bad_number() to not call gettext() early
> t6040 test: stop using global "script" variable
> tests: make GIT_TEST_GETTEXT_POISON a boolean
> tests README: re-flow a previously changed paragraph
> tests: replace test_tristate with "git env--helper"
> tests: make GIT_TEST_FAIL_PREREQS a boolean
> tests: mark two failing tests under FAIL_PREREQS
> clone: test for our behavior on odd objects/* content
>
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 488 bytes --]
^ permalink raw reply [relevance 0%]
* [ANNOUNCE] Git v2.23.0
@ 2019-08-16 21:00 4% Junio C Hamano
2019-08-16 21:30 0% ` Bhaskar Chowdhury
0 siblings, 1 reply; 42+ results
From: Junio C Hamano @ 2019-08-16 21:00 UTC (permalink / raw)
To: git; +Cc: Linux Kernel, git-packagers
The latest feature release Git v2.23.0 is now available at the
usual places. It is comprised of 505 non-merge commits since
v2.22.0, contributed by 77 people, 26 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.23.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.22.0 are as follows.
Welcome to the Git development community!
Ariadne Conill, Barret Rhoden, Ben Avison, Carmine Zaccagnino,
Daniel Ferreira, Doug Ilijev, Dr. Adam Nielsen, Jakub Wilk,
John Lin, Mark Rushakoff, Matheus Tavares, Mazo, Andrey,
Michael Osipov, Michael Platings, Miguel Ojeda, Mike Mueller,
Morian Sonnet, Philipp Weißmann, Quentin Nerden, Robert Morgan,
Simon Williams, Steven Roberts, Tigran Mkrtchyan, Varun Naik,
Vishal Verma, and Xin Li.
Returning contributors who helped this release are as follows.
Thanks for your continued support.
Ævar Arnfjörð Bjarmason, Alessandro Menti, Alexander
Shopov, Beat Bolli, Boxuan Li, brian m. carlson, Carlo Marcelo
Arenas Belón, Cesar Eduardo Barros, Chris Mayo, Christian
Couder, Christopher Díaz Riveros, Denton Liu, Derrick Stolee,
Dimitriy Ryazantcev, Edmundo Carmona Antoranz, Elijah Newren,
Emily Shaffer, Eric Wong, Felipe Contreras, Jean-Noël Avila,
Jeff Hostetler, Jeff King, Jiang Xin, Johannes Schindelin,
Johannes Sixt, Jonathan Nieder, Jonathan Tan, Jordi Mas, Josh
Steadmon, Junio C Hamano, Karsten Blees, Marc-André Lureau,
Martin Ågren, Matthew DeVore, Matthias Rüster, Mike Hommey,
Nguyễn Thái Ngọc Duy, Nickolai Belakovski, Paolo Bonzini,
Peter Krefting, Philip Oakley, Phillip Wood, Ramsay Jones, René
Scharfe, Rohit Ashiwal, Stephen Boyd, SZEDER Gábor, Taylor Blau,
Thomas Gummerer, Trần Ngọc Quân, and William Chargin.
----------------------------------------------------------------
Git 2.23 Release Notes
======================
Updates since v2.22
-------------------
Backward compatibility note
* The "--base" option of "format-patch" computed the patch-ids for
prerequisite patches in an unstable way, which has been updated to
compute in a way that is compatible with "git patch-id --stable".
* The "git log" command by default behaves as if the --mailmap option
was given.
UI, Workflows & Features
* The "git fast-export/import" pair has been taught to handle commits
with log messages in encoding other than UTF-8 better.
* In recent versions of Git, per-worktree refs are exposed in
refs/worktrees/<wtname>/ hierarchy, which means that worktree names
must be a valid refname component. The code now sanitizes the names
given to worktrees, to make sure these refs are well-formed.
* "git merge" learned "--quit" option that cleans up the in-progress
merge while leaving the working tree and the index still in a mess.
* "git format-patch" learns a configuration to set the default for
its --notes=<ref> option.
* The code to show args with potential typo that cannot be
interpreted as a commit-ish has been improved.
* "git clone --recurse-submodules" learned to set up the submodules
to ignore commit object names recorded in the superproject gitlink
and instead use the commits that happen to be at the tip of the
remote-tracking branches from the get-go, by passing the new
"--remote-submodules" option.
* The pattern "git diff/grep" use to extract funcname and words
boundary for Matlab has been extend to cover Octave, which is more
or less equivalent.
* "git help git" was hard to discover (well, at least for some
people).
* The pattern "git diff/grep" use to extract funcname and words
boundary for Rust has been added.
* "git status" can be told a non-standard default value for the
"--[no-]ahead-behind" option with a new configuration variable
status.aheadBehind.
* "git fetch" and "git pull" reports when a fetch results in
non-fast-forward updates to let the user notice unusual situation.
The commands learned "--no-show-forced-updates" option to disable
this safety feature.
* Two new commands "git switch" and "git restore" are introduced to
split "checking out a branch to work on advancing its history" and
"checking out paths out of the index and/or a tree-ish to work on
advancing the current history" out of the single "git checkout"
command.
* "git branch --list" learned to always output the detached HEAD as
the first item (when the HEAD is detached, of course), regardless
of the locale.
* The conditional inclusion mechanism learned to base the choice on
the branch the HEAD currently is on.
* "git rev-list --objects" learned the "--no-object-names" option to
squelch the path to the object that is used as a grouping hint for
pack-objects.
* A new tag.gpgSign configuration variable turns "git tag -a" into
"git tag -s".
* "git multi-pack-index" learned expire and repack subcommands.
* "git blame" learned to "ignore" commits in the history, whose
effects (as well as their presence) get ignored.
* "git cherry-pick/revert" learned a new "--skip" action.
* The tips of refs from the alternate object store can be used as
starting point for reachability computation now.
* Extra blank lines in "git status" output have been reduced.
* The commits in a repository can be described by multiple
commit-graph files now, which allows the commit-graph files to be
updated incrementally.
* "git range-diff" output has been tweaked for easier identification
of which part of what file the patch shown is about.
Performance, Internal Implementation, Development Support etc.
* Update supporting parts of "git rebase" to remove code that should
no longer be used.
* Developer support to emulate unsatisfied prerequisites in tests to
ensure that the remainder of the tests still succeeds when tests
with prerequisites are skipped.
* "git update-server-info" learned not to rewrite the file with the
same contents.
* The way of specifying the path to find dynamic libraries at runtime
has been simplified. The old default to pass -R/path/to/dir has been
replaced with the new default to pass -Wl,-rpath,/path/to/dir,
which is the more recent GCC uses. Those who need to build with an
old GCC can still use "CC_LD_DYNPATH=-R"
* Prepare use of reachability index in topological walker that works
on a range (A..B).
* A new tutorial targeting specifically aspiring git-core
developers has been added.
* Auto-detect how to tell HP-UX aCC where to use dynamically linked
libraries from at runtime.
* "git mergetool" and its tests now spawn fewer subprocesses.
* Dev support update to help tracing out tests.
* Support to build with MSVC has been updated.
* "git fetch" that grabs from a group of remotes learned to run the
auto-gc only once at the very end.
* A handful of Windows build patches have been upstreamed.
* The code to read state files used by the sequencer machinery for
"git status" has been made more robust against a corrupt or stale
state files.
* "git for-each-ref" with multiple patterns have been optimized.
* The tree-walk API learned to pass an in-core repository
instance throughout more codepaths.
* When one step in multi step cherry-pick or revert is reset or
committed, the command line prompt script failed to notice the
current status, which has been improved.
* Many GIT_TEST_* environment variables control various aspects of
how our tests are run, but a few followed "non-empty is true, empty
or unset is false" while others followed the usual "there are a few
ways to spell true, like yes, on, etc., and also ways to spell
false, like no, off, etc." convention.
* Adjust the dir-iterator API and apply it to the local clone
optimization codepath.
* We have been trying out a few language features outside c89; the
coding guidelines document did not talk about them and instead had
a blanket ban against them.
* A test helper has been introduced to optimize preparation of test
repositories with many simple commits, and a handful of test
scripts have been updated to use it.
Fixes since v2.22
-----------------
* A relative pathname given to "git init --template=<path> <repo>"
ought to be relative to the directory "git init" gets invoked in,
but it instead was made relative to the repository, which has been
corrected.
* "git worktree add" used to fail when another worktree connected to
the same repository was corrupt, which has been corrected.
* The ownership rule for the file descriptor to fast-import remote
backend was mixed up, leading to an unrelated file descriptor getting
closed, which has been fixed.
* A "merge -c" instruction during "git rebase --rebase-merges" should
give the user a chance to edit the log message, even when there is
otherwise no need to create a new merge and replace the existing
one (i.e. fast-forward instead), but did not. Which has been
corrected.
* Code cleanup and futureproof.
* More parameter validation.
* "git update-server-info" used to leave stale packfiles in its
output, which has been corrected.
* The server side support for "git fetch" used to show incorrect
value for the HEAD symbolic ref when the namespace feature is in
use, which has been corrected.
* "git am -i --resolved" segfaulted after trying to see a commit as
if it were a tree, which has been corrected.
* "git bundle verify" needs to see if prerequisite objects exist in
the receiving repository, but the command did not check if we are
in a repository upfront, which has been corrected.
* "git merge --squash" is designed to update the working tree and the
index without creating the commit, and this cannot be countermanded
by adding the "--commit" option; the command now refuses to work
when both options are given.
* The data collected by fsmonitor was not properly written back to
the on-disk index file, breaking t7519 tests occasionally, which
has been corrected.
* Update to Unicode 12.1 width table.
* The command line to invoke a "git cat-file" command from inside
"git p4" was not properly quoted to protect a caret and running a
broken command on Windows, which has been corrected.
* "git request-pull" learned to warn when the ref we ask them to pull
from in the local repository and in the published repository are
different.
* When creating a partial clone, the object filtering criteria is
recorded for the origin of the clone, but this incorrectly used a
hardcoded name "origin" to name that remote; it has been corrected
to honor the "--origin <name>" option.
* "git fetch" into a lazy clone forgot to fetch base objects that are
necessary to complete delta in a thin packfile, which has been
corrected.
* The filter_data used in the list-objects-filter (which manages a
lazily sparse clone repository) did not use the dynamic array API
correctly---'nr' is supposed to point at one past the last element
of the array in use. This has been corrected.
* The description about slashes in gitignore patterns (used to
indicate things like "anchored to this level only" and "only
matches directories") has been revamped.
* The URL decoding code has been updated to avoid going past the end
of the string while parsing %-<hex>-<hex> sequence.
* The list of for-each like macros used by clang-format has been
updated.
* "git branch --list" learned to show branches that are checked out
in other worktrees connected to the same repository prefixed with
'+', similar to the way the currently checked out branch is shown
with '*' in front.
(merge 6e9381469e nb/branch-show-other-worktrees-head later to maint).
* Code restructuring during 2.20 period broke fetching tags via
"import" based transports.
* The commit-graph file is now part of the "files that the runtime
may keep open file descriptors on, all of which would need to be
closed when done with the object store", and the file descriptor to
an existing commit-graph file now is closed before "gc" finalizes a
new instance to replace it.
* "git checkout -p" needs to selectively apply a patch in reverse,
which did not work well.
* Code clean-up to avoid signed integer wraparounds during binary search.
* "git interpret-trailers" always treated '#' as the comment
character, regardless of core.commentChar setting, which has been
corrected.
* "git stash show 23" used to work, but no more after getting
rewritten in C; this regression has been corrected.
* "git rebase --abort" used to leave refs/rewritten/ when concluding
"git rebase -r", which has been corrected.
* An incorrect list of options was cached after command line
completion failed (e.g. trying to complete a command that requires
a repository outside one), which has been corrected.
* The code to parse scaled numbers out of configuration files has
been made more robust and also easier to follow.
* The codepath to compute delta islands used to spew progress output
without giving the callers any way to squelch it, which has been
fixed.
* Protocol capabilities that go over wire should never be translated,
but it was incorrectly marked for translation, which has been
corrected. The output of protocol capabilities for debugging has
been tweaked a bit.
* Use "Erase in Line" CSI sequence that is already used in the editor
support to clear cruft in the progress output.
* "git submodule foreach" did not protect command line options passed
to the command to be run in each submodule correctly, when the
"--recursive" option was in use.
* The configuration variable rebase.rescheduleFailedExec should be
effective only while running an interactive rebase and should not
affect anything when running a non-interactive one, which was not
the case. This has been corrected.
* The "git clone" documentation refers to command line options in its
description in the short form; they have been replaced with long
forms to make them more recognisable.
* Generation of pack bitmaps are now disabled when .keep files exist,
as these are mutually exclusive features.
(merge 7328482253 ew/repack-with-bitmaps-by-default later to maint).
* "git rm" to resolve a conflicted path leaked an internal message
"needs merge" before actually removing the path, which was
confusing. This has been corrected.
* "git stash --keep-index" did not work correctly on paths that have
been removed, which has been fixed.
(merge b932f6a5e8 tg/stash-keep-index-with-removed-paths later to maint).
* Window 7 update ;-)
* A codepath that reads from GPG for signed object verification read
past the end of allocated buffer, which has been fixed.
* "git clean" silently skipped a path when it cannot lstat() it; now
it gives a warning.
* "git push --atomic" that goes over the transport-helper (namely,
the smart http transport) failed to prevent refs to be pushed when
it can locally tell that one of the ref update will fail without
having to consult the other end, which has been corrected.
* The internal diff machinery can be made to read out of bounds while
looking for --function-context line in a corner case, which has been
corrected.
(merge b777f3fd61 jk/xdiff-clamp-funcname-context-index later to maint).
* Other code cleanup, docfix, build fix, etc.
(merge fbec05c210 cc/test-oidmap later to maint).
(merge 7a06fb038c jk/no-system-includes-in-dot-c later to maint).
(merge 81ed2b405c cb/xdiff-no-system-includes-in-dot-c later to maint).
(merge d61e6ce1dd sg/fsck-config-in-doc later to maint).
----------------------------------------------------------------
Changes since v2.22.0 are as follows:
Alessandro Menti (3):
l10n: it.po: update the Italian translation
l10n: it.po: update the Italian translation for v2.23.0
l10n: it.po: update the Italian localization for v2.23.0 round 2
Alexander Shopov (1):
l10n: bg.po: Updated Bulgarian translation (4674t)
Ariadne Conill (3):
log: add warning for unspecified log.mailmap setting
documentation: mention --no-use-mailmap and log.mailmap false setting
tests: defang pager tests by explicitly disabling the log.mailmap warning
Barret Rhoden (8):
fsck: rename and touch up init_skiplist()
Move oidset_parse_file() to oidset.c
blame: use a helper function in blame_chunk()
blame: add the ability to ignore commits and their changes
blame: add config options for the output of ignored or unblamable lines
blame: optionally track line fingerprints during fill_blame_origin()
blame: use the fingerprint heuristic to match ignored lines
blame: add a test to cover blame_coalesce()
Beat Bolli (2):
unicode: update the width tables to Unicode 12.1
grep: print the pcre2_jit_on value
Ben Avison (1):
clone: add `--remote-submodules` flag
Boxuan Li (2):
userdiff: add Octave
userdiff: fix grammar and style issues
Carlo Marcelo Arenas Belón (6):
fsmonitor: avoid signed integer overflow / infinite loop
wrapper: avoid undefined behaviour in macOS
trace2: correct typo in technical documentation
xdiff: drop system includes in xutils.c
xdiff: remove duplicate headers from xhistogram.c
xdiff: remove duplicate headers from xpatience.c
Carmine Zaccagnino (1):
l10n: it.po: remove an extra space
Cesar Eduardo Barros (1):
mingw: embed a manifest to trick UAC into Doing The Right Thing
Chris Mayo (1):
send-email: update documentation of required Perl modules
Christian Couder (7):
t/helper: add test-oidmap.c
t: add t0016-oidmap.sh
oidmap: use sha1hash() instead of static hash() function
test-hashmap: remove 'hash' command
doc: improve usage string in MyFirstContribution
test-oidmap: remove 'add' subcommand
t0016: add 'remove' subcommand test
Christopher Díaz Riveros (1):
l10n: es: 2.23.0 round 2
Daniel Ferreira (1):
dir-iterator: add tests for dir-iterator API
Denton Liu (5):
git-format-patch.txt: document --no-notes option
format-patch: teach format.notes config option
config: learn the "onbranch:" includeIf condition
config/alias.txt: change " and ' to `
config/alias.txt: document alias accepting non-command first word
Derrick Stolee (51):
commit-graph: fix the_repository reference
revision: use generation for A..B --topo-order queries
revision: keep topo-walk free of unintersting commits
sha1-file: split OBJECT_INFO_FOR_PREFETCH
repack: refactor pack deletion for future use
Docs: rearrange subcommands for multi-pack-index
multi-pack-index: prepare for 'expire' subcommand
midx: simplify computation of pack name lengths
midx: refactor permutation logic and pack sorting
multi-pack-index: implement 'expire' subcommand
multi-pack-index: prepare 'repack' subcommand
midx: implement midx_repack()
multi-pack-index: test expire while adding packs
midx: add test that 'expire' respects .keep files
t5319-multi-pack-index.sh: test batch size zero
commit-graph: return with errors during write
commit-graph: collapse parameters into flags
commit-graph: remove Future Work section
commit-graph: create write_commit_graph_context
commit-graph: extract fill_oids_from_packs()
commit-graph: extract fill_oids_from_commit_hex()
commit-graph: extract fill_oids_from_all_packs()
commit-graph: extract count_distinct_commits()
commit-graph: extract copy_oids_to_commits()
commit-graph: extract write_commit_graph_file()
commit-graph: use raw_object_store when closing
packfile: close commit-graph in close_all_packs
packfile: rename close_all_packs to close_object_store
commit-graph: document commit-graph chains
commit-graph: prepare for commit-graph chains
commit-graph: rename commit_compare to oid_compare
commit-graph: load commit-graph chains
commit-graph: add base graphs chunk
commit-graph: rearrange chunk count logic
commit-graph: write commit-graph chains
commit-graph: add --split option to builtin
commit-graph: merge commit-graph chains
commit-graph: allow cross-alternate chains
commit-graph: expire commit-graph files
commit-graph: create options for split files
commit-graph: verify chains with --shallow mode
commit-graph: clean up chains after flattened write
commit-graph: test octopus merges with --split
commit-graph: test --split across alternate without --split
commit-graph: normalize commit-graph filenames
commit-graph: test verify across alternates
fetch: add --[no-]show-forced-updates argument
fetch: warn about forced updates in branch listing
pull: add --[no-]show-forced-updates passthrough
t5319: use 'test-tool path-utils' instead of 'ls -l'
commit-graph: fix bug around octopus merges
Dimitriy Ryazantcev (2):
l10n: ru.po: update Russian translation
l10n: localizable upload progress messages
Doug Ilijev (1):
README: fix rendering of text in angle brackets
Dr. Adam Nielsen (1):
gitignore.txt: make slash-rules more readable
Edmundo Carmona Antoranz (1):
builtin/merge.c - cleanup of code in for-cycle that tests strategies
Elijah Newren (6):
t9350: fix encoding test to actually test reencoding
fast-import: support 'encoding' commit header
fast-export: avoid stripping encoding header if we cannot reencode
fast-export: differentiate between explicitly UTF-8 and implicitly UTF-8
fast-export: do automatic reencoding of commit messages only if requested
merge-recursive: avoid directory rename detection in recursive case
Emily Shaffer (7):
documentation: add tutorial for first contribution
documentation: add anchors to MyFirstContribution
grep: fail if call could output and name is null
doc: hint about GIT_DEBUGGER in CodingGuidelines
doc: add some nit fixes to MyFirstContribution
rev-list: teach --no-object-names to enable piping
transport-helper: enforce atomic in push_refs_with_push
Eric Wong (3):
update-server-info: avoid needless overwrites
server-info: do not list unlinked packs
repack: disable bitmaps-by-default if .keep files exist
Felipe Contreras (5):
t5801 (remote-helpers): cleanup refspec stuff
t5801 (remote-helpers): add test to fetch tags
fetch: trivial cleanup
fetch: make the code more understandable
fetch: fix regression with transport helpers
Jakub Wilk (1):
doc: don't use git.kernel.org as example gitweb URL
Jean-Noël Avila (2):
l10n: reformat some localized strings for v2.23.0
l10n: fr v2.23.0 round 2
Jeff Hostetler (13):
cache-tree/blame: avoid reusing the DEBUG constant
msvc: mark a variable as non-const
msvc: do not re-declare the timespec struct
msvc: define ftello()
msvc: fix detect_msys_tty()
msvc: update Makefile to allow for spaces in the compiler path
status: add status.aheadbehind setting
status: warn when a/b calculation takes too long
status: ignore status.aheadbehind in porcelain formats
msvc: support building Git using MS Visual C++
msvc: add a compile-time flag to allow detailed heap debugging
msvc: do not pretend to support all signals
msvc: ignore .dll and incremental compile output
Jeff King (57):
cmd_{read,write}_tree: rename "unused" variable that is used
builtin: consistently pass cmd_* prefix to parse_options
submodule: drop unused prefix parameter from some functions
clone: drop dest parameter from copy_alternates()
read-cache: drop unused parameter from threaded load
wt-status: drop unused status parameter
mktree: drop unused length parameter
name-rev: drop unused parameters from is_better_name()
pack-objects: drop unused rev_info parameters
receive-pack: drop unused "commands" from prepare_shallow_update()
remove_all_fetch_refspecs(): drop unused "remote" parameter
rev-list: drop unused void pointer from finish_commit()
show-branch: drop unused parameter from show_independent()
verify-commit: simplify parameters to run_gpg_verify()
help_unknown_ref(): duplicate collected refnames
help_unknown_ref(): check for refname ambiguity
upload-pack: strip namespace from symref data
am: simplify prompt response handling
am: read interactive input from stdin
am: drop tty requirement for --interactive
am: fix --interactive HEAD tree resolution
interpret-trailers: load default config
verify-tag: drop signal.h include
wt-status.h: drop stdio.h include
describe: fix accidental oid/hash type-punning
upload-pack: rename a "sha1" variable to "oid"
pack-bitmap-write: convert some helpers to use object_id
pack-objects: convert packlist_find() to use object_id
pack-objects: convert locate_object_entry_hash() to object_id
object: convert lookup_unknown_object() to use object_id
object: convert lookup_object() to use object_id
object: convert internal hash_obj() to object_id
object: convert create_object() to use object_id
khash: drop broken oid_map typedef
khash: rename kh_oid_t to kh_oid_set
delta-islands: convert island_marks khash to use oids
pack-bitmap: convert khash_sha1 maps into kh_oid_map
khash: drop sha1-specific map types
khash: rename oid helper functions
hash.h: move object_id definition from cache.h
hashmap: convert sha1hash() to oidhash()
delta-islands: respect progress flag
blame: drop some unused function parameters
object-store.h: move for_each_alternate_ref() from transport.h
check_everything_connected: assume alternate ref tips are valid
test-lib: introduce test_commit_bulk
t5310: increase the number of bitmapped commits
t3311: use test_commit_bulk
t5702: use test_commit_bulk
t5703: use test_commit_bulk
t6200: use test_commit_bulk
xdiff: clamp function context indices in post-image
t: sort output of hashmap iteration
t7700: clean up .keep file in bitmap-writing test
repack: silence warnings when auto-enabled bitmaps cannot be built
repack: simplify handling of auto-bitmaps and .keep files
t0000: reword comments for "local" test
Jiang Xin (3):
l10n: git.pot: v2.23.0 round 1 (130 new, 35 removed)
l10n: git.pot: v2.23.0 round 2 (4 new, 6 removed)
l10n: zh_CN: for git v2.23.0 l10n round 1~2
Johannes Schindelin (47):
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
bisect--helper: verify HEAD could be parsed before continuing
fill_stat_cache_info(): prepare for an fsmonitor fix
mark_fsmonitor_valid(): mark the index as changed if needed
bundle verify: error out if called without an object database
poll (mingw): allow compiling with GCC 8 and DEVELOPER=1
kwset: allow building with GCC 8
winansi: simplify loading the GetCurrentConsoleFontEx() function
config: avoid calling `labs()` on too-large data type
t3404: fix a typo
mingw: fix a typo in the msysGit-specific section
Mark .bat files as requiring CR/LF endings
t0001 (mingw): do not expect a specific order of stdout/stderr
obstack: fix compiler warning
mingw: replace mingw_startup() hack
msvc: fix dependencies of compat/msvc.c
t0001: fix on case-insensitive filesystems
msvc: avoid debug assertion windows in Debug Mode
mingw: enable stack smashing protector
mingw: get pw_name in UTF-8 format
mingw: use Unicode functions explicitly
rebase --am: ignore rebase.rescheduleFailedExec
mingw: fix possible buffer overrun when calling `GetUserNameW()`
diff: munmap() file contents before running external diff
mingw: support spawning programs containing spaces in their names
clean: show an error message when the path is too long
rebase: fix white-space
git: mark cmd_rebase as requiring a worktree
Vcproj.pm: auto-generate GUIDs
Vcproj.pm: do not configure VCWebServiceProxyGeneratorTool
Vcproj.pm: urlencode '<' and '>' when generating VC projects
contrib/buildsystems: ignore irrelevant files in Generators/
contrib/buildsystems: error out on unknown option
contrib/buildsystems: handle libiconv, too
contrib/buildsystems: also handle -lexpat
contrib/buildsystems: handle options starting with a slash
contrib/buildsystems: add a backend for modern Visual Studio versions
msvc: add a Makefile target to pre-generate the Visual Studio solution
vcxproj: also link-or-copy builtins
.gitignore: ignore Visual Studio's temporary/generated files
bin-wrappers: append `.exe` to target paths if necessary
git: avoid calling aliased builtins via their dashed form
config: work around bug with includeif:onbranch and early config
Johannes Sixt (5):
userdiff: two simplifications of patterns for rust
t7610-mergetool: do not place pipelines headed by `yes` in subshells
t7610-mergetool: use test_cmp instead of test $(cat file) = $txt
mergetool: dissect strings with shell variable magic instead of `expr`
mergetool: use shell variable magic instead of `awk`
John Lin (1):
status: remove the empty line after hints
Jonathan Nieder (1):
t: decrease nesting in test_oid_to_path
Jonathan Tan (5):
t5616: refactor packfile replacement
index-pack: prefetch missing REF_DELTA bases
t5616: use correct flag to check object is missing
t5616: cover case of client having delta base
t5551: test usage of chunked encoding explicitly
Jordi Mas (2):
l10n: Update Catalan translation
l10n: Update Catalan translation
Josh Steadmon (1):
trace2: correct trace2 field name documentation
Junio C Hamano (21):
The first batch after 2.22
The second batch
The third batch
The fourth batch
The fifth batch
transport-helper: avoid var decl in for () loop control
rm: resolving by removal is not a warning-worthy event
CodingGuidelines: spell out post-C89 rules
The sixth batch
The seventh batch
Flush fixes up to the third batch post 2.22.0
Merge fixes made on the 'master' front
Git 2.23-rc0
test-dir-iterator: do not assume errno values
A few more last-minute fixes
log: flip the --mailmap default unconditionally
log: really flip the --mailmap default
Git 2.23-rc1
Git 2.23-rc2
Git 2.22.1
Git 2.23
Karsten Blees (2):
gettext: always use UTF-8 on native Windows
mingw: initialize HOME on startup
Marc-André Lureau (1):
userdiff: add built-in pattern for rust
Mark Rushakoff (2):
doc: typo: s/can not/cannot/ and s/is does/does/
doc: fix repeated words
Martin Ågren (3):
ref-filter: fix memory leak in `free_array_item()`
RelNotes/2.21.1: typofix
RelNotes/2.23.0: fix a few typos and other minor issues
Matheus Tavares (8):
clone: better handle symlinked files at .git/objects/
dir-iterator: use warning_errno when possible
dir-iterator: refactor state machine model
dir-iterator: add flags parameter to dir_iterator_begin
clone: copy hidden paths at local clone
clone: extract function from copy_or_link_directory
clone: use dir-iterator to avoid explicit dir traversal
clone: replace strcmp by fspathcmp
Matthew DeVore (5):
list-objects-filter-options: error is localizeable
list-objects-filter: correct usage of ALLOC_GROW
url: do not read past end of buffer
url: do not allow %00 to represent NUL in URLs
ref-filter: sort detached HEAD lines firstly
Matthias Rüster (1):
l10n: de.po: Update German translation
Mazo, Andrey (8):
git-p4: detect/prevent infinite loop in gitCommitByP4Change()
git-p4: add failing test for "git-p4: match branches case insensitively if configured"
git-p4: match branches case insensitively if configured
git-p4: don't groom exclude path list on every commit
git-p4: add failing test for "don't exclude other files with same prefix"
git-p4: don't exclude other files with same prefix
git-p4: add failing test for "git-p4: respect excluded paths when detecting branches"
git-p4: respect excluded paths when detecting branches
Michael Osipov (1):
configure: Detect linking style for HP aCC on HP-UX
Michael Platings (2):
blame: add a fingerprint heuristic to match ignored lines
t8014: remove unnecessary braces
Miguel Ojeda (1):
clang-format: use git grep to generate the ForEachMacros list
Mike Hommey (2):
dup() the input fd for fast-import used for remote helpers
Use xmmap_gently instead of xmmap in use_pack
Mike Mueller (1):
p4 unshelve: fix "Not a valid object name HEAD0" on Windows
Morian Sonnet (1):
submodule foreach: fix recursion of options
Nguyễn Thái Ngọc Duy (63):
git-checkout.txt: spell out --no-option
git-checkout.txt: fix one syntax line
doc: document --overwrite-ignore
git-checkout.txt: fix monospace typeset
t: rename t2014-switch.sh to t2014-checkout-switch.sh
checkout: advice how to get out of detached HEAD mode
checkout: inform the user when removing branch state
checkout: keep most #include sorted
checkout: factor out some code in parse_branchname_arg()
checkout: make "opts" in cmd_checkout() a pointer
checkout: move 'confict_style' and 'dwim_..' to checkout_opts
checkout: split options[] array in three pieces
checkout: split part of it to new command 'switch'
switch: better names for -b and -B
switch: add --discard-changes
switch: remove -l
switch: stop accepting pathspec
switch: reject "do nothing" case
switch: only allow explicit detached HEAD
switch: add short option for --detach
switch: implicit dwim, use --no-guess to disable it
switch: no worktree status unless real branch switch happens
switch: reject if some operation is in progress
switch: make --orphan switch to an empty tree
t: add tests for switch
completion: support switch
doc: promote "git switch"
checkout: split part of it to new command 'restore'
restore: take tree-ish from --source option instead
restore: make pathspec mandatory
restore: disable overlay mode by default
checkout: factor out worktree checkout code
restore: add --worktree and --staged
restore: reject invalid combinations with --staged
restore: default to --source=HEAD when only --staged is specified
restore: replace --force with --ignore-unmerged
restore: support --patch
t: add tests for restore
completion: support restore
user-manual.txt: prefer 'merge --abort' over 'reset --hard'
doc: promote "git restore"
help: move git-diff and git-reset to different groups
Declare both git-switch and git-restore experimental
merge: remove drop_save() in favor of remove_merge_branch_state()
init: make --template path relative to $CWD
worktree add: sanitize worktree names
worktree add: be tolerant of corrupt worktrees
merge: add --quit
completion: do not cache if --git-completion-helper fails
fetch: only run 'gc' once when fetching multiple remotes
t2027: use test_must_be_empty
switch: allow to switch in the middle of bisect
completion: disable dwim on "git switch -d"
fetch-pack: move capability names out of i18n strings
fetch-pack: print all relevant supported capabilities with -v -v
fetch-pack: print server version at the top in -v -v
sha1-file.c: remove the_repo from read_object_with_reference()
tree-walk.c: remove the_repo from fill_tree_descriptor()
tree-walk.c: remove the_repo from get_tree_entry()
tree-walk.c: remove the_repo from get_tree_entry_follow_symlinks()
match-trees.c: remove the_repo from shift_tree*()
Use the right 'struct repository' instead of the_repository
t7814: do not generate same commits in different repos
Nickolai Belakovski (3):
ref-filter: add worktreepath atom
branch: update output to include worktree info
branch: add worktree info on verbose output
Paolo Bonzini (2):
request-pull: quote regex metacharacters in local ref
request-pull: warn if the remote object is not the same as the local one
Peter Krefting (1):
l10n: sv.po: Update Swedish translation (4676t0f0u)
Philip Oakley (16):
git.c: show usage for accessing the git(1) help page
Doc: git.txt: remove backticks from link and add git-scm.com/docs
doc branch: provide examples for listing remote tracking branches
msvc: include sigset_t definition
msvc: define O_ACCMODE
msvc: add pragmas for common warnings
Vcproj.pm: list git.exe first to be startup project
contrib/buildsystems: ignore invalidcontinue.obj
contrib/buildsystems: fix misleading error message
contrib/buildsystems: handle quoted spaces in filenames
contrib/buildsystems: ignore gettext stuff
contrib/buildsystems: redirect errors of the dry run into a log file
contrib/buildsystems: optionally capture the dry-run in a file
contrib/buildsystems: handle the curl library option
.gitignore: touch up the entries regarding Visual Studio
.mailmap: update email address of Philip Oakley
Philipp Weißmann (1):
l10n: de.po: Fix typo in German translation
Phillip Wood (12):
rebase: fix a memory leak
rebase: warn if state directory cannot be removed
sequencer: return errors from sequencer_remove_state()
rebase --abort/--quit: cleanup refs/rewritten
rebase -r: always reword merge -c
add -p: fix checkout -p with pathological context
show --continue/skip etc. consistently in synopsis
sequencer: always allow tab after command name
sequencer: factor out todo command name parsing
status: do not report errors in sequencer/todo
git-prompt: improve cherry-pick/revert detection
t3420: remove progress lines before comparing output
Quentin Nerden (2):
docs: git-clone: refer to long form of options
docs: git-clone: list short form of options first
Ramsay Jones (1):
env--helper: mark a file-local symbol as static
René Scharfe (10):
cleanup: fix possible overflow errors in binary search, part 2
coccinelle: use COPY_ARRAY for copying arrays
use COPY_ARRAY for copying arrays
config: use unsigned_mult_overflows to check for overflows
config: don't multiply in parse_unit_factor()
config: simplify parsing of unit factors
commit-graph: release strbufs after use
dir-iterator: release strbuf after use
test-dir-iterator: use path argument directly
sha1-file: release strbuf after use
Robert Morgan (1):
gpg(docs): use correct --verify syntax
Rohit Ashiwal (5):
sequencer: add advice for revert
sequencer: rename reset_for_rollback to reset_merge
sequencer: use argv_array in reset_merge
cherry-pick/revert: add --skip option
cherry-pick/revert: advise using --skip
SZEDER Gábor (12):
t3404: modernize here doc style
t3404: make the 'rebase.missingCommitsCheck=ignore' test more focused
pager: add a helper function to clear the last line in the terminal
t5551: use 'test_i18ngrep' to check translated output
rebase: fix garbled progress display with '-x'
progress: use term_clear_line()
Document that 'git -C ""' works and doesn't change directory
ci: don't update Homebrew
ci: disable Homebrew's auto cleanup
ci/lib.sh: update a comment about installed P4 and Git-LFS versions
travis-ci: build with GCC 4.8 as well
Documentation/git-fsck.txt: include fsck.* config variables
Simon Williams (1):
git-p4: allow unshelving of branched files
Stephen Boyd (2):
format-patch: inform user that patch-id generation is unstable
format-patch: make --base patch-id output stable
Steven Roberts (1):
gpg-interface: do not scan past the end of buffer
Taylor Blau (1):
ref-filter.c: find disjoint pattern prefixes
Thomas Gummerer (16):
stash: fix show referencing stash index
apply: replace marc.info link with public-inbox
apply: only pass required data to skip_tree_prefix
apply: only pass required data to git_header_name
apply: only pass required data to check_header_line
apply: only pass required data to find_name_*
apply: only pass required data to gitdiff_* functions
apply: make parse_git_diff_header public
range-diff: fix function parameter indentation
range-diff: split lines manually
range-diff: don't remove funcname from inner diff
range-diff: suppress line count in outer diff
range-diff: add section header instead of diff header
range-diff: add filename to inner diff
range-diff: add headers to the outer hunk header
stash: fix handling removed files with --keep-index
Tigran Mkrtchyan (1):
tag: add tag.gpgSign config option to force all tags be GPG-signed
Trần Ngọc Quân (2):
l10n: vi.po (4676t): Updated Vietnamese translation
l10n: vi(4674t): Updated translation for Vietnamese
Varun Naik (1):
read-cache.c: do not die if mmap fails
Vishal Verma (1):
merge: refuse --commit with --squash
William Chargin (1):
restore: fix typo in docs
Xin Li (1):
clone: respect user supplied origin name when setting up partial clone
brian m. carlson (10):
t: add helper to convert object IDs to paths
t1410: make hash size independent
t1450: make hash size independent
t5000: make hash independent
t6030: make test work with SHA-256
t0027: make hash size independent
t0090: make test pass with SHA-256
t1007: remove SHA1 prerequisites
t1710: make hash independent
t2203: avoid hard-coded object ID values
Ævar Arnfjörð Bjarmason (21):
send-email: move the read_config() function above getopts
send-email: rename the @bcclist variable for consistency
send-email: do defaults -> config -> getopt in that order
tests: add a special setup where prerequisites fail
Makefile: remove the NO_R_TO_GCC_LINKER flag
send-email: remove cargo-culted multi-patch pattern in tests
send-email: fix broken transferEncoding tests
send-email: document --no-[to|cc|bcc]
hash-object doc: stop mentioning git-cvsimport
send-email: fix regression in sendemail.identity parsing
Revert "test-lib: whitelist GIT_TR2_* in the environment"
config tests: simplify include cycle test
env--helper: new undocumented builtin wrapping git_env_*()
config.c: refactor die_bad_number() to not call gettext() early
t6040 test: stop using global "script" variable
tests: make GIT_TEST_GETTEXT_POISON a boolean
tests README: re-flow a previously changed paragraph
tests: replace test_tristate with "git env--helper"
tests: make GIT_TEST_FAIL_PREREQS a boolean
tests: mark two failing tests under FAIL_PREREQS
clone: test for our behavior on odd objects/* content
^ permalink raw reply [relevance 4%]
* Re: [GIT PULL] l10n updates for 2.23.0 round 2
2019-08-16 9:16 5% [GIT PULL] l10n updates for 2.23.0 round 2 Jiang Xin
@ 2019-08-16 20:06 0% ` Junio C Hamano
0 siblings, 0 replies; 42+ results
From: Junio C Hamano @ 2019-08-16 20:06 UTC (permalink / raw)
To: Jiang Xin
Cc: Git List, Alessandro Menti, Alexander Shopov, Carmine Zaccagnino,
Christopher Díaz, Christopher Diaz Riveros,
Dimitriy Ryazantcev, Gwan-gyeong Mun, Jean-Noël Avila,
Jimmy Angelakos, Jordi Mas, Matthias Ruester, Peter Krefting,
Philipp Weißmann, Trần Ngọc Quân,
Vasco Almeida
Jiang Xin <worldhello.net@gmail.com> writes:
> Hi Junio,
>
> Please pull the following l10n updates for Git 2.23.0.
>
> The following changes since commit 2e27de94d485a6da0c8e264c165e55100f1a13a8:
>
> Git 2.23-rc2 (2019-08-09 10:15:39 -0700)
>
> are available in the Git repository at:
>
> git://github.com/git-l10n/git-po tags/l10n-2.23.0-rnd2
>
> for you to fetch changes up to a6cd2cc485b9ba73934a059245aa9de7e68a2d4c:
>
> l10n: zh_CN: for git v2.23.0 l10n round 1~2 (2019-08-16 16:59:17 +0800)
Thanks, pulled.
^ permalink raw reply [relevance 0%]
* [GIT PULL] l10n updates for 2.23.0 round 2
@ 2019-08-16 9:16 5% Jiang Xin
2019-08-16 20:06 0% ` Junio C Hamano
0 siblings, 1 reply; 42+ results
From: Jiang Xin @ 2019-08-16 9:16 UTC (permalink / raw)
To: Junio C Hamano
Cc: Jiang Xin, Git List, Alessandro Menti, Alexander Shopov,
Carmine Zaccagnino, Christopher Díaz,
Christopher Diaz Riveros, Dimitriy Ryazantcev, Gwan-gyeong Mun,
Jean-Noël Avila, Jimmy Angelakos, Jordi Mas,
Matthias Ruester, Peter Krefting, Philipp Weißmann,
Trần Ngọc Quân, Vasco Almeida
Hi Junio,
Please pull the following l10n updates for Git 2.23.0.
The following changes since commit 2e27de94d485a6da0c8e264c165e55100f1a13a8:
Git 2.23-rc2 (2019-08-09 10:15:39 -0700)
are available in the Git repository at:
git://github.com/git-l10n/git-po tags/l10n-2.23.0-rnd2
for you to fetch changes up to a6cd2cc485b9ba73934a059245aa9de7e68a2d4c:
l10n: zh_CN: for git v2.23.0 l10n round 1~2 (2019-08-16 16:59:17 +0800)
----------------------------------------------------------------
l10n-2.23.0-rnd2
----------------------------------------------------------------
Alessandro Menti (3):
l10n: it.po: update the Italian translation
l10n: it.po: update the Italian translation for v2.23.0
l10n: it.po: update the Italian localization for v2.23.0 round 2
Alexander Shopov (1):
l10n: bg.po: Updated Bulgarian translation (4674t)
Carmine Zaccagnino (1):
l10n: it.po: remove an extra space
Christopher Díaz Riveros (1):
l10n: es: 2.23.0 round 2
Dimitriy Ryazantcev (1):
l10n: ru.po: update Russian translation
Jean-Noël Avila (1):
l10n: fr v2.23.0 round 2
Jiang Xin (11):
Merge branch 'master' of https://github.com/Softcatala/git-po
Merge tag 'v2.23.0-rc0' of git://git.kernel.org/pub/scm/git/git
l10n: git.pot: v2.23.0 round 1 (130 new, 35 removed)
Merge branch 'update-italian-translation' of github.com:AlessandroMenti/git-po
Merge branch 'master' of https://github.com/Softcatala/git-po
Merge tag 'v2.23.0-rc2' of git://git.kernel.org/pub/scm/git/git
l10n: git.pot: v2.23.0 round 2 (4 new, 6 removed)
Merge branch 'next' of https://github.com/ChrisADR/git-po
Merge branch 'update-italian-translation' of github.com:AlessandroMenti/git-po
Merge branch 'master' of https://github.com/vnwildman/git
l10n: zh_CN: for git v2.23.0 l10n round 1~2
Jordi Mas (2):
l10n: Update Catalan translation
l10n: Update Catalan translation
Matthias Rüster (1):
l10n: de.po: Update German translation
Peter Krefting (1):
l10n: sv.po: Update Swedish translation (4676t0f0u)
Philipp Weißmann (1):
l10n: de.po: Fix typo in German translation
Trần Ngọc Quân (2):
l10n: vi.po (4676t): Updated Vietnamese translation
l10n: vi(4674t): Updated translation for Vietnamese
po/bg.po | 6418 ++++++++--------
po/ca.po | 11579 +++++++++++++++++------------
po/de.po | 6445 ++++++++--------
po/es.po | 6628 +++++++++--------
po/fr.po | 6333 ++++++++--------
po/git.pot | 6200 ++++++++--------
po/it.po | 8426 +++++++++++----------
po/ru.po | 23280 +++++++++++++++++++++++++++++++++-------------------------
po/sv.po | 6565 +++++++++--------
po/vi.po | 6847 +++++++++--------
po/zh_CN.po | 6323 ++++++++--------
11 files changed, 52890 insertions(+), 42154 deletions(-)
--
Jiang Xin
^ permalink raw reply [relevance 5%]
* Git for Windows v2.23.0-rc2, was Re: [ANNOUNCE] Git v2.23.0-rc2
2019-08-09 19:29 3% [ANNOUNCE] Git v2.23.0-rc2 Junio C Hamano
2019-08-09 21:20 0% ` Bhaskar Chowdhury
@ 2019-08-09 21:31 0% ` Johannes Schindelin
1 sibling, 0 replies; 42+ results
From: Johannes Schindelin @ 2019-08-09 21:31 UTC (permalink / raw)
To: Junio C Hamano; +Cc: git-for-windows, git, git-packagers
[-- Attachment #1: Type: text/plain, Size: 46623 bytes --]
Team,
On Fri, 9 Aug 2019, Junio C Hamano wrote:
> A release candidate Git v2.23.0-rc2 is now available for testing
> at the usual places. It is comprised of 483 non-merge commits
> since v2.22.0, contributed by 67 people, 24 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.23.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
The corresponding Git for Windows v2.23.0-rc2 can be found here:
https://github.com/git-for-windows/git/releases/tag/v2.23.0-rc2.windows.1
Please test as much as you can.
Thanks!
Johannes
>
> New contributors whose contributions weren't in v2.22.0 are as follows.
> Welcome to the Git development community!
>
> Ariadne Conill, Barret Rhoden, Ben Avison, Daniel Ferreira,
> Doug Ilijev, Dr. Adam Nielsen, Jakub Wilk, John Lin, Mark
> Rushakoff, Matheus Tavares, Mazo, Andrey, Michael Osipov,
> Michael Platings, Miguel Ojeda, Mike Mueller, Morian Sonnet,
> Quentin Nerden, Robert Morgan, Simon Williams, Steven Roberts,
> Tigran Mkrtchyan, Varun Naik, Vishal Verma, and Xin Li.
>
> Returning contributors who helped this release are as follows.
> Thanks for your continued support.
>
> Ævar Arnfjörð Bjarmason, Beat Bolli, Boxuan Li, brian
> m. carlson, Carlo Marcelo Arenas Belón, Cesar Eduardo Barros,
> Chris Mayo, Christian Couder, Denton Liu, Derrick Stolee,
> Dimitriy Ryazantcev, Edmundo Carmona Antoranz, Elijah Newren,
> Emily Shaffer, Eric Wong, Felipe Contreras, Jean-Noël Avila,
> Jeff Hostetler, Jeff King, Johannes Schindelin, Johannes Sixt,
> Jonathan Nieder, Jonathan Tan, Josh Steadmon, Junio C Hamano,
> Karsten Blees, Marc-André Lureau, Martin Ågren, Matthew DeVore,
> Mike Hommey, Nguyễn Thái Ngọc Duy, Nickolai Belakovski,
> Paolo Bonzini, Philip Oakley, Phillip Wood, Ramsay Jones,
> René Scharfe, Rohit Ashiwal, Stephen Boyd, SZEDER Gábor,
> Taylor Blau, Thomas Gummerer, and William Chargin.
>
> ----------------------------------------------------------------
>
> Git 2.23 Release Notes (draft)
> ==============================
>
> Updates since v2.22
> -------------------
>
> Backward compatibility note
>
> * The "--base" option of "format-patch" computed the patch-ids for
> prerequisite patches in an unstable way, which has been updated to
> compute in a way that is compatible with "git patch-id --stable".
>
> * The "git log" command by default behaves as if the --mailmap option
> was given.
>
>
> UI, Workflows & Features
>
> * The "git fast-export/import" pair has been taught to handle commits
> with log messages in encoding other than UTF-8 better.
>
> * In recent versions of Git, per-worktree refs are exposed in
> refs/worktrees/<wtname>/ hierarchy, which means that worktree names
> must be a valid refname component. The code now sanitizes the names
> given to worktrees, to make sure these refs are well-formed.
>
> * "git merge" learned "--quit" option that cleans up the in-progress
> merge while leaving the working tree and the index still in a mess.
>
> * "git format-patch" learns a configuration to set the default for
> its --notes=<ref> option.
>
> * The code to show args with potential typo that cannot be
> interpreted as a commit-ish has been improved.
>
> * "git clone --recurse-submodules" learned to set up the submodules
> to ignore commit object names recorded in the superproject gitlink
> and instead use the commits that happen to be at the tip of the
> remote-tracking branches from the get-go, by passing the new
> "--remote-submodules" option.
>
> * The pattern "git diff/grep" use to extract funcname and words
> boundary for Matlab has been extend to cover Octave, which is more
> or less equivalent.
>
> * "git help git" was hard to discover (well, at least for some
> people).
>
> * The pattern "git diff/grep" use to extract funcname and words
> boundary for Rust has been added.
>
> * "git status" can be told a non-standard default value for the
> "--[no-]ahead-behind" option with a new configuration variable
> status.aheadBehind.
>
> * "git fetch" and "git pull" reports when a fetch results in
> non-fast-forward updates to let the user notice unusual situation.
> The commands learned "--no-show-forced-updates" option to disable
> this safety feature.
>
> * Two new commands "git switch" and "git restore" are introduced to
> split "checking out a branch to work on advancing its history" and
> "checking out paths out of the index and/or a tree-ish to work on
> advancing the current history" out of the single "git checkout"
> command.
>
> * "git branch --list" learned to always output the detached HEAD as
> the first item (when the HEAD is detached, of course), regardless
> of the locale.
>
> * The conditional inclusion mechanism learned to base the choice on
> the branch the HEAD currently is on.
>
> * "git rev-list --objects" learned the "--no-object-names" option to
> squelch the path to the object that is used as a grouping hint for
> pack-objects.
>
> * A new tag.gpgSign configuration variable turns "git tag -a" into
> "git tag -s".
>
> * "git multi-pack-index" learned expire and repack subcommands.
>
> * "git blame" learned to "ignore" commits in the history, whose
> effects (as well as their presence) get ignored.
>
> * "git cherry-pick/revert" learned a new "--skip" action.
>
> * The tips of refs from the alternate object store can be used as
> starting point for reachability computation now.
>
> * Extra blank lines in "git status" output have been reduced.
>
> * The commits in a repository can be described by multiple
> commit-graph files now, which allows the commit-graph files to be
> updated incrementally.
>
> * "git range-diff" output has been tweaked for easier identification
> of which part of what file the patch shown is about.
>
>
> Performance, Internal Implementation, Development Support etc.
>
> * Update supporting parts of "git rebase" to remove code that should
> no longer be used.
>
> * Developer support to emulate unsatisfied prerequisites in tests to
> ensure that the remainder of the tests still succeeds when tests
> with prerequisites are skipped.
>
> * "git update-server-info" learned not to rewrite the file with the
> same contents.
>
> * The way of specifying the path to find dynamic libraries at runtime
> has been simplified. The old default to pass -R/path/to/dir has been
> replaced with the new default to pass -Wl,-rpath,/path/to/dir,
> which is the more recent GCC uses. Those who need to build with an
> old GCC can still use "CC_LD_DYNPATH=-R"
>
> * Prepare use of reachability index in topological walker that works
> on a range (A..B).
>
> * A new tutorial targeting specifically aspiring git-core
> developers has been added.
>
> * Auto-detect how to tell HP-UX aCC where to use dynamically linked
> libraries from at runtime.
>
> * "git mergetool" and its tests now spawn fewer subprocesses.
>
> * Dev support update to help tracing out tests.
>
> * Support to build with MSVC has been updated.
>
> * "git fetch" that grabs from a group of remotes learned to run the
> auto-gc only once at the very end.
>
> * A handful of Windows build patches have been upstreamed.
>
> * The code to read state files used by the sequencer machinery for
> "git status" has been made more robust against a corrupt or stale
> state files.
>
> * "git for-each-ref" with multiple patterns have been optimized.
>
> * The tree-walk API learned to pass an in-core repository
> instance throughout more codepaths.
>
> * When one step in multi step cherry-pick or revert is reset or
> committed, the command line prompt script failed to notice the
> current status, which has been improved.
>
> * Many GIT_TEST_* environment variables control various aspects of
> how our tests are run, but a few followed "non-empty is true, empty
> or unset is false" while others followed the usual "there are a few
> ways to spell true, like yes, on, etc., and also ways to spell
> false, like no, off, etc." convention.
>
> * Adjust the dir-iterator API and apply it to the local clone
> optimization codepath.
>
> * We have been trying out a few language features outside c89; the
> coding guidelines document did not talk about them and instead had
> a blanket ban against them.
>
> * A test helper has been introduced to optimize preparation of test
> repositories with many simple commits, and a handful of test
> scripts have been updated to use it.
>
>
> Fixes since v2.22
> -----------------
>
> * A relative pathname given to "git init --template=<path> <repo>"
> ought to be relative to the directory "git init" gets invoked in,
> but it instead was made relative to the repository, which has been
> corrected.
>
> * "git worktree add" used to fail when another worktree connected to
> the same repository was corrupt, which has been corrected.
>
> * The ownership rule for the file descriptor to fast-import remote
> backend was mixed up, leading to an unrelated file descriptor getting
> closed, which has been fixed.
>
> * A "merge -c" instruction during "git rebase --rebase-merges" should
> give the user a chance to edit the log message, even when there is
> otherwise no need to create a new merge and replace the existing
> one (i.e. fast-forward instead), but did not. Which has been
> corrected.
>
> * Code cleanup and futureproof.
>
> * More parameter validation.
>
> * "git update-server-info" used to leave stale packfiles in its
> output, which has been corrected.
>
> * The server side support for "git fetch" used to show incorrect
> value for the HEAD symbolic ref when the namespace feature is in
> use, which has been corrected.
>
> * "git am -i --resolved" segfaulted after trying to see a commit as
> if it were a tree, which has been corrected.
>
> * "git bundle verify" needs to see if prerequisite objects exist in
> the receiving repository, but the command did not check if we are
> in a repository upfront, which has been corrected.
>
> * "git merge --squash" is designed to update the working tree and the
> index without creating the commit, and this cannot be countermanded
> by adding the "--commit" option; the command now refuses to work
> when both options are given.
>
> * The data collected by fsmonitor was not properly written back to
> the on-disk index file, breaking t7519 tests occasionally, which
> has been corrected.
>
> * Update to Unicode 12.1 width table.
>
> * The command line to invoke a "git cat-file" command from inside
> "git p4" was not properly quoted to protect a caret and running a
> broken command on Windows, which has been corrected.
>
> * "git request-pull" learned to warn when the ref we ask them to pull
> from in the local repository and in the published repository are
> different.
>
> * When creating a partial clone, the object filtering criteria is
> recorded for the origin of the clone, but this incorrectly used a
> hardcoded name "origin" to name that remote; it has been corrected
> to honor the "--origin <name>" option.
>
> * "git fetch" into a lazy clone forgot to fetch base objects that are
> necessary to complete delta in a thin packfile, which has been
> corrected.
>
> * The filter_data used in the list-objects-filter (which manages a
> lazily sparse clone repository) did not use the dynamic array API
> correctly---'nr' is supposed to point at one past the last element
> of the array in use. This has been corrected.
>
> * The description about slashes in gitignore patterns (used to
> indicate things like "anchored to this level only" and "only
> matches directories") has been revamped.
>
> * The URL decoding code has been updated to avoid going past the end
> of the string while parsing %-<hex>-<hex> sequence.
>
> * The list of for-each like macros used by clang-format has been
> updated.
>
> * "git branch --list" learned to show branches that are checked out
> in other worktrees connected to the same repository prefixed with
> '+', similar to the way the currently checked out branch is shown
> with '*' in front.
> (merge 6e9381469e nb/branch-show-other-worktrees-head later to maint).
>
> * Code restructuring during 2.20 period broke fetching tags via
> "import" based transports.
>
> * The commit-graph file is now part of the "files that the runtime
> may keep open file descriptors on, all of which would need to be
> closed when done with the object store", and the file descriptor to
> an existing commit-graph file now is closed before "gc" finalizes a
> new instance to replace it.
>
> * "git checkout -p" needs to selectively apply a patch in reverse,
> which did not work well.
>
> * Code clean-up to avoid signed integer wraparounds during binary search.
>
> * "git interpret-trailers" always treated '#' as the comment
> character, regardless of core.commentChar setting, which has been
> corrected.
>
> * "git stash show 23" used to work, but no more after getting
> rewritten in C; this regression has been corrected.
>
> * "git rebase --abort" used to leave refs/rewritten/ when concluding
> "git rebase -r", which has been corrected.
>
> * An incorrect list of options was cached after command line
> completion failed (e.g. trying to complete a command that requires
> a repository outside one), which has been corrected.
>
> * The code to parse scaled numbers out of configuration files has
> been made more robust and also easier to follow.
>
> * The codepath to compute delta islands used to spew progress output
> without giving the callers any way to squelch it, which has been
> fixed.
>
> * Protocol capabilities that go over wire should never be translated,
> but it was incorrectly marked for translation, which has been
> corrected. The output of protocol capabilities for debugging has
> been tweaked a bit.
>
> * Use "Erase in Line" CSI sequence that is already used in the editor
> support to clear cruft in the progress output.
>
> * "git submodule foreach" did not protect command line options passed
> to the command to be run in each submodule correctly, when the
> "--recursive" option was in use.
>
> * The configuration variable rebase.rescheduleFailedExec should be
> effective only while running an interactive rebase and should not
> affect anything when running a non-interactive one, which was not
> the case. This has been corrected.
>
> * The "git clone" documentation refers to command line options in its
> description in the short form; they have been replaced with long
> forms to make them more recognisable.
>
> * Generation of pack bitmaps are now disabled when .keep files exist,
> as these are mutually exclusive features.
> (merge 7328482253 ew/repack-with-bitmaps-by-default later to maint).
>
> * "git rm" to resolve a conflicted path leaked an internal message
> "needs merge" before actually removing the path, which was
> confusing. This has been corrected.
>
> * "git stash --keep-index" did not work correctly on paths that have
> been removed, which has been fixed.
> (merge b932f6a5e8 tg/stash-keep-index-with-removed-paths later to maint).
>
> * Window 7 update ;-)
>
> * A codepath that reads from GPG for signed object verification read
> past the end of allocated buffer, which has been fixed.
>
> * "git clean" silently skipped a path when it cannot lstat() it; now
> it gives a warning.
>
> * "git push --atomic" that goes over the transport-helper (namely,
> the smart http transport) failed to prevent refs to be pushed when
> it can locally tell that one of the ref update will fail without
> having to consult the other end, which has been corrected.
>
> * The internal diff machinery can be made to read out of bounds while
> looking for --function-context line in a corner case, which has been
> corrected.
> (merge b777f3fd61 jk/xdiff-clamp-funcname-context-index later to maint).
>
> * Other code cleanup, docfix, build fix, etc.
> (merge fbec05c210 cc/test-oidmap later to maint).
> (merge 7a06fb038c jk/no-system-includes-in-dot-c later to maint).
> (merge 81ed2b405c cb/xdiff-no-system-includes-in-dot-c later to maint).
> (merge d61e6ce1dd sg/fsck-config-in-doc later to maint).
>
> ----------------------------------------------------------------
>
> Changes since v2.22.0 are as follows:
>
> Ariadne Conill (3):
> log: add warning for unspecified log.mailmap setting
> documentation: mention --no-use-mailmap and log.mailmap false setting
> tests: defang pager tests by explicitly disabling the log.mailmap warning
>
> Barret Rhoden (8):
> fsck: rename and touch up init_skiplist()
> Move oidset_parse_file() to oidset.c
> blame: use a helper function in blame_chunk()
> blame: add the ability to ignore commits and their changes
> blame: add config options for the output of ignored or unblamable lines
> blame: optionally track line fingerprints during fill_blame_origin()
> blame: use the fingerprint heuristic to match ignored lines
> blame: add a test to cover blame_coalesce()
>
> Beat Bolli (2):
> unicode: update the width tables to Unicode 12.1
> grep: print the pcre2_jit_on value
>
> Ben Avison (1):
> clone: add `--remote-submodules` flag
>
> Boxuan Li (2):
> userdiff: add Octave
> userdiff: fix grammar and style issues
>
> Carlo Marcelo Arenas Belón (6):
> fsmonitor: avoid signed integer overflow / infinite loop
> wrapper: avoid undefined behaviour in macOS
> trace2: correct typo in technical documentation
> xdiff: drop system includes in xutils.c
> xdiff: remove duplicate headers from xhistogram.c
> xdiff: remove duplicate headers from xpatience.c
>
> Cesar Eduardo Barros (1):
> mingw: embed a manifest to trick UAC into Doing The Right Thing
>
> Chris Mayo (1):
> send-email: update documentation of required Perl modules
>
> Christian Couder (7):
> t/helper: add test-oidmap.c
> t: add t0016-oidmap.sh
> oidmap: use sha1hash() instead of static hash() function
> test-hashmap: remove 'hash' command
> doc: improve usage string in MyFirstContribution
> test-oidmap: remove 'add' subcommand
> t0016: add 'remove' subcommand test
>
> Daniel Ferreira (1):
> dir-iterator: add tests for dir-iterator API
>
> Denton Liu (5):
> git-format-patch.txt: document --no-notes option
> format-patch: teach format.notes config option
> config: learn the "onbranch:" includeIf condition
> config/alias.txt: change " and ' to `
> config/alias.txt: document alias accepting non-command first word
>
> Derrick Stolee (51):
> commit-graph: fix the_repository reference
> revision: use generation for A..B --topo-order queries
> revision: keep topo-walk free of unintersting commits
> sha1-file: split OBJECT_INFO_FOR_PREFETCH
> repack: refactor pack deletion for future use
> Docs: rearrange subcommands for multi-pack-index
> multi-pack-index: prepare for 'expire' subcommand
> midx: simplify computation of pack name lengths
> midx: refactor permutation logic and pack sorting
> multi-pack-index: implement 'expire' subcommand
> multi-pack-index: prepare 'repack' subcommand
> midx: implement midx_repack()
> multi-pack-index: test expire while adding packs
> midx: add test that 'expire' respects .keep files
> t5319-multi-pack-index.sh: test batch size zero
> commit-graph: return with errors during write
> commit-graph: collapse parameters into flags
> commit-graph: remove Future Work section
> commit-graph: create write_commit_graph_context
> commit-graph: extract fill_oids_from_packs()
> commit-graph: extract fill_oids_from_commit_hex()
> commit-graph: extract fill_oids_from_all_packs()
> commit-graph: extract count_distinct_commits()
> commit-graph: extract copy_oids_to_commits()
> commit-graph: extract write_commit_graph_file()
> commit-graph: use raw_object_store when closing
> packfile: close commit-graph in close_all_packs
> packfile: rename close_all_packs to close_object_store
> commit-graph: document commit-graph chains
> commit-graph: prepare for commit-graph chains
> commit-graph: rename commit_compare to oid_compare
> commit-graph: load commit-graph chains
> commit-graph: add base graphs chunk
> commit-graph: rearrange chunk count logic
> commit-graph: write commit-graph chains
> commit-graph: add --split option to builtin
> commit-graph: merge commit-graph chains
> commit-graph: allow cross-alternate chains
> commit-graph: expire commit-graph files
> commit-graph: create options for split files
> commit-graph: verify chains with --shallow mode
> commit-graph: clean up chains after flattened write
> commit-graph: test octopus merges with --split
> commit-graph: test --split across alternate without --split
> commit-graph: normalize commit-graph filenames
> commit-graph: test verify across alternates
> fetch: add --[no-]show-forced-updates argument
> fetch: warn about forced updates in branch listing
> pull: add --[no-]show-forced-updates passthrough
> t5319: use 'test-tool path-utils' instead of 'ls -l'
> commit-graph: fix bug around octopus merges
>
> Dimitriy Ryazantcev (1):
> l10n: localizable upload progress messages
>
> Doug Ilijev (1):
> README: fix rendering of text in angle brackets
>
> Dr. Adam Nielsen (1):
> gitignore.txt: make slash-rules more readable
>
> Edmundo Carmona Antoranz (1):
> builtin/merge.c - cleanup of code in for-cycle that tests strategies
>
> Elijah Newren (6):
> t9350: fix encoding test to actually test reencoding
> fast-import: support 'encoding' commit header
> fast-export: avoid stripping encoding header if we cannot reencode
> fast-export: differentiate between explicitly UTF-8 and implicitly UTF-8
> fast-export: do automatic reencoding of commit messages only if requested
> merge-recursive: avoid directory rename detection in recursive case
>
> Emily Shaffer (7):
> documentation: add tutorial for first contribution
> documentation: add anchors to MyFirstContribution
> grep: fail if call could output and name is null
> doc: hint about GIT_DEBUGGER in CodingGuidelines
> doc: add some nit fixes to MyFirstContribution
> rev-list: teach --no-object-names to enable piping
> transport-helper: enforce atomic in push_refs_with_push
>
> Eric Wong (3):
> update-server-info: avoid needless overwrites
> server-info: do not list unlinked packs
> repack: disable bitmaps-by-default if .keep files exist
>
> Felipe Contreras (5):
> t5801 (remote-helpers): cleanup refspec stuff
> t5801 (remote-helpers): add test to fetch tags
> fetch: trivial cleanup
> fetch: make the code more understandable
> fetch: fix regression with transport helpers
>
> Jakub Wilk (1):
> doc: don't use git.kernel.org as example gitweb URL
>
> Jean-Noël Avila (1):
> l10n: reformat some localized strings for v2.23.0
>
> Jeff Hostetler (13):
> cache-tree/blame: avoid reusing the DEBUG constant
> msvc: mark a variable as non-const
> msvc: do not re-declare the timespec struct
> msvc: define ftello()
> msvc: fix detect_msys_tty()
> msvc: update Makefile to allow for spaces in the compiler path
> status: add status.aheadbehind setting
> status: warn when a/b calculation takes too long
> status: ignore status.aheadbehind in porcelain formats
> msvc: support building Git using MS Visual C++
> msvc: add a compile-time flag to allow detailed heap debugging
> msvc: do not pretend to support all signals
> msvc: ignore .dll and incremental compile output
>
> Jeff King (57):
> cmd_{read,write}_tree: rename "unused" variable that is used
> builtin: consistently pass cmd_* prefix to parse_options
> submodule: drop unused prefix parameter from some functions
> clone: drop dest parameter from copy_alternates()
> read-cache: drop unused parameter from threaded load
> wt-status: drop unused status parameter
> mktree: drop unused length parameter
> name-rev: drop unused parameters from is_better_name()
> pack-objects: drop unused rev_info parameters
> receive-pack: drop unused "commands" from prepare_shallow_update()
> remove_all_fetch_refspecs(): drop unused "remote" parameter
> rev-list: drop unused void pointer from finish_commit()
> show-branch: drop unused parameter from show_independent()
> verify-commit: simplify parameters to run_gpg_verify()
> help_unknown_ref(): duplicate collected refnames
> help_unknown_ref(): check for refname ambiguity
> upload-pack: strip namespace from symref data
> am: simplify prompt response handling
> am: read interactive input from stdin
> am: drop tty requirement for --interactive
> am: fix --interactive HEAD tree resolution
> interpret-trailers: load default config
> verify-tag: drop signal.h include
> wt-status.h: drop stdio.h include
> describe: fix accidental oid/hash type-punning
> upload-pack: rename a "sha1" variable to "oid"
> pack-bitmap-write: convert some helpers to use object_id
> pack-objects: convert packlist_find() to use object_id
> pack-objects: convert locate_object_entry_hash() to object_id
> object: convert lookup_unknown_object() to use object_id
> object: convert lookup_object() to use object_id
> object: convert internal hash_obj() to object_id
> object: convert create_object() to use object_id
> khash: drop broken oid_map typedef
> khash: rename kh_oid_t to kh_oid_set
> delta-islands: convert island_marks khash to use oids
> pack-bitmap: convert khash_sha1 maps into kh_oid_map
> khash: drop sha1-specific map types
> khash: rename oid helper functions
> hash.h: move object_id definition from cache.h
> hashmap: convert sha1hash() to oidhash()
> delta-islands: respect progress flag
> blame: drop some unused function parameters
> object-store.h: move for_each_alternate_ref() from transport.h
> check_everything_connected: assume alternate ref tips are valid
> test-lib: introduce test_commit_bulk
> t5310: increase the number of bitmapped commits
> t3311: use test_commit_bulk
> t5702: use test_commit_bulk
> t5703: use test_commit_bulk
> t6200: use test_commit_bulk
> xdiff: clamp function context indices in post-image
> t: sort output of hashmap iteration
> t7700: clean up .keep file in bitmap-writing test
> repack: silence warnings when auto-enabled bitmaps cannot be built
> repack: simplify handling of auto-bitmaps and .keep files
> t0000: reword comments for "local" test
>
> Johannes Schindelin (47):
> 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
> bisect--helper: verify HEAD could be parsed before continuing
> fill_stat_cache_info(): prepare for an fsmonitor fix
> mark_fsmonitor_valid(): mark the index as changed if needed
> bundle verify: error out if called without an object database
> poll (mingw): allow compiling with GCC 8 and DEVELOPER=1
> kwset: allow building with GCC 8
> winansi: simplify loading the GetCurrentConsoleFontEx() function
> config: avoid calling `labs()` on too-large data type
> t3404: fix a typo
> mingw: fix a typo in the msysGit-specific section
> Mark .bat files as requiring CR/LF endings
> t0001 (mingw): do not expect a specific order of stdout/stderr
> obstack: fix compiler warning
> mingw: replace mingw_startup() hack
> msvc: fix dependencies of compat/msvc.c
> t0001: fix on case-insensitive filesystems
> msvc: avoid debug assertion windows in Debug Mode
> mingw: enable stack smashing protector
> mingw: get pw_name in UTF-8 format
> mingw: use Unicode functions explicitly
> rebase --am: ignore rebase.rescheduleFailedExec
> mingw: fix possible buffer overrun when calling `GetUserNameW()`
> diff: munmap() file contents before running external diff
> mingw: support spawning programs containing spaces in their names
> clean: show an error message when the path is too long
> rebase: fix white-space
> git: mark cmd_rebase as requiring a worktree
> Vcproj.pm: auto-generate GUIDs
> Vcproj.pm: do not configure VCWebServiceProxyGeneratorTool
> Vcproj.pm: urlencode '<' and '>' when generating VC projects
> contrib/buildsystems: ignore irrelevant files in Generators/
> contrib/buildsystems: error out on unknown option
> contrib/buildsystems: handle libiconv, too
> contrib/buildsystems: also handle -lexpat
> contrib/buildsystems: handle options starting with a slash
> contrib/buildsystems: add a backend for modern Visual Studio versions
> msvc: add a Makefile target to pre-generate the Visual Studio solution
> vcxproj: also link-or-copy builtins
> .gitignore: ignore Visual Studio's temporary/generated files
> bin-wrappers: append `.exe` to target paths if necessary
> git: avoid calling aliased builtins via their dashed form
> config: work around bug with includeif:onbranch and early config
>
> Johannes Sixt (5):
> userdiff: two simplifications of patterns for rust
> t7610-mergetool: do not place pipelines headed by `yes` in subshells
> t7610-mergetool: use test_cmp instead of test $(cat file) = $txt
> mergetool: dissect strings with shell variable magic instead of `expr`
> mergetool: use shell variable magic instead of `awk`
>
> John Lin (1):
> status: remove the empty line after hints
>
> Jonathan Nieder (1):
> t: decrease nesting in test_oid_to_path
>
> Jonathan Tan (5):
> t5616: refactor packfile replacement
> index-pack: prefetch missing REF_DELTA bases
> t5616: use correct flag to check object is missing
> t5616: cover case of client having delta base
> t5551: test usage of chunked encoding explicitly
>
> Josh Steadmon (1):
> trace2: correct trace2 field name documentation
>
> Junio C Hamano (19):
> The first batch after 2.22
> The second batch
> The third batch
> The fourth batch
> The fifth batch
> transport-helper: avoid var decl in for () loop control
> rm: resolving by removal is not a warning-worthy event
> CodingGuidelines: spell out post-C89 rules
> The sixth batch
> The seventh batch
> Flush fixes up to the third batch post 2.22.0
> Merge fixes made on the 'master' front
> Git 2.23-rc0
> test-dir-iterator: do not assume errno values
> A few more last-minute fixes
> log: flip the --mailmap default unconditionally
> log: really flip the --mailmap default
> Git 2.23-rc1
> Git 2.23-rc2
>
> Karsten Blees (2):
> gettext: always use UTF-8 on native Windows
> mingw: initialize HOME on startup
>
> Marc-André Lureau (1):
> userdiff: add built-in pattern for rust
>
> Mark Rushakoff (1):
> doc: typo: s/can not/cannot/ and s/is does/does/
>
> Martin Ågren (3):
> ref-filter: fix memory leak in `free_array_item()`
> RelNotes/2.21.1: typofix
> RelNotes/2.23.0: fix a few typos and other minor issues
>
> Matheus Tavares (8):
> clone: better handle symlinked files at .git/objects/
> dir-iterator: use warning_errno when possible
> dir-iterator: refactor state machine model
> dir-iterator: add flags parameter to dir_iterator_begin
> clone: copy hidden paths at local clone
> clone: extract function from copy_or_link_directory
> clone: use dir-iterator to avoid explicit dir traversal
> clone: replace strcmp by fspathcmp
>
> Matthew DeVore (5):
> list-objects-filter-options: error is localizeable
> list-objects-filter: correct usage of ALLOC_GROW
> url: do not read past end of buffer
> url: do not allow %00 to represent NUL in URLs
> ref-filter: sort detached HEAD lines firstly
>
> Mazo, Andrey (8):
> git-p4: detect/prevent infinite loop in gitCommitByP4Change()
> git-p4: add failing test for "git-p4: match branches case insensitively if configured"
> git-p4: match branches case insensitively if configured
> git-p4: don't groom exclude path list on every commit
> git-p4: add failing test for "don't exclude other files with same prefix"
> git-p4: don't exclude other files with same prefix
> git-p4: add failing test for "git-p4: respect excluded paths when detecting branches"
> git-p4: respect excluded paths when detecting branches
>
> Michael Osipov (1):
> configure: Detect linking style for HP aCC on HP-UX
>
> Michael Platings (2):
> blame: add a fingerprint heuristic to match ignored lines
> t8014: remove unnecessary braces
>
> Miguel Ojeda (1):
> clang-format: use git grep to generate the ForEachMacros list
>
> Mike Hommey (2):
> dup() the input fd for fast-import used for remote helpers
> Use xmmap_gently instead of xmmap in use_pack
>
> Mike Mueller (1):
> p4 unshelve: fix "Not a valid object name HEAD0" on Windows
>
> Morian Sonnet (1):
> submodule foreach: fix recursion of options
>
> Nguyễn Thái Ngọc Duy (63):
> git-checkout.txt: spell out --no-option
> git-checkout.txt: fix one syntax line
> doc: document --overwrite-ignore
> git-checkout.txt: fix monospace typeset
> t: rename t2014-switch.sh to t2014-checkout-switch.sh
> checkout: advice how to get out of detached HEAD mode
> checkout: inform the user when removing branch state
> checkout: keep most #include sorted
> checkout: factor out some code in parse_branchname_arg()
> checkout: make "opts" in cmd_checkout() a pointer
> checkout: move 'confict_style' and 'dwim_..' to checkout_opts
> checkout: split options[] array in three pieces
> checkout: split part of it to new command 'switch'
> switch: better names for -b and -B
> switch: add --discard-changes
> switch: remove -l
> switch: stop accepting pathspec
> switch: reject "do nothing" case
> switch: only allow explicit detached HEAD
> switch: add short option for --detach
> switch: implicit dwim, use --no-guess to disable it
> switch: no worktree status unless real branch switch happens
> switch: reject if some operation is in progress
> switch: make --orphan switch to an empty tree
> t: add tests for switch
> completion: support switch
> doc: promote "git switch"
> checkout: split part of it to new command 'restore'
> restore: take tree-ish from --source option instead
> restore: make pathspec mandatory
> restore: disable overlay mode by default
> checkout: factor out worktree checkout code
> restore: add --worktree and --staged
> restore: reject invalid combinations with --staged
> restore: default to --source=HEAD when only --staged is specified
> restore: replace --force with --ignore-unmerged
> restore: support --patch
> t: add tests for restore
> completion: support restore
> user-manual.txt: prefer 'merge --abort' over 'reset --hard'
> doc: promote "git restore"
> help: move git-diff and git-reset to different groups
> Declare both git-switch and git-restore experimental
> merge: remove drop_save() in favor of remove_merge_branch_state()
> init: make --template path relative to $CWD
> worktree add: sanitize worktree names
> worktree add: be tolerant of corrupt worktrees
> merge: add --quit
> completion: do not cache if --git-completion-helper fails
> fetch: only run 'gc' once when fetching multiple remotes
> t2027: use test_must_be_empty
> switch: allow to switch in the middle of bisect
> completion: disable dwim on "git switch -d"
> fetch-pack: move capability names out of i18n strings
> fetch-pack: print all relevant supported capabilities with -v -v
> fetch-pack: print server version at the top in -v -v
> sha1-file.c: remove the_repo from read_object_with_reference()
> tree-walk.c: remove the_repo from fill_tree_descriptor()
> tree-walk.c: remove the_repo from get_tree_entry()
> tree-walk.c: remove the_repo from get_tree_entry_follow_symlinks()
> match-trees.c: remove the_repo from shift_tree*()
> Use the right 'struct repository' instead of the_repository
> t7814: do not generate same commits in different repos
>
> Nickolai Belakovski (3):
> ref-filter: add worktreepath atom
> branch: update output to include worktree info
> branch: add worktree info on verbose output
>
> Paolo Bonzini (2):
> request-pull: quote regex metacharacters in local ref
> request-pull: warn if the remote object is not the same as the local one
>
> Philip Oakley (15):
> git.c: show usage for accessing the git(1) help page
> Doc: git.txt: remove backticks from link and add git-scm.com/docs
> doc branch: provide examples for listing remote tracking branches
> msvc: include sigset_t definition
> msvc: define O_ACCMODE
> msvc: add pragmas for common warnings
> Vcproj.pm: list git.exe first to be startup project
> contrib/buildsystems: ignore invalidcontinue.obj
> contrib/buildsystems: fix misleading error message
> contrib/buildsystems: handle quoted spaces in filenames
> contrib/buildsystems: ignore gettext stuff
> contrib/buildsystems: redirect errors of the dry run into a log file
> contrib/buildsystems: optionally capture the dry-run in a file
> contrib/buildsystems: handle the curl library option
> .gitignore: touch up the entries regarding Visual Studio
>
> Phillip Wood (12):
> rebase: fix a memory leak
> rebase: warn if state directory cannot be removed
> sequencer: return errors from sequencer_remove_state()
> rebase --abort/--quit: cleanup refs/rewritten
> rebase -r: always reword merge -c
> add -p: fix checkout -p with pathological context
> show --continue/skip etc. consistently in synopsis
> sequencer: always allow tab after command name
> sequencer: factor out todo command name parsing
> status: do not report errors in sequencer/todo
> git-prompt: improve cherry-pick/revert detection
> t3420: remove progress lines before comparing output
>
> Quentin Nerden (2):
> docs: git-clone: refer to long form of options
> docs: git-clone: list short form of options first
>
> Ramsay Jones (1):
> env--helper: mark a file-local symbol as static
>
> René Scharfe (10):
> cleanup: fix possible overflow errors in binary search, part 2
> coccinelle: use COPY_ARRAY for copying arrays
> use COPY_ARRAY for copying arrays
> config: use unsigned_mult_overflows to check for overflows
> config: don't multiply in parse_unit_factor()
> config: simplify parsing of unit factors
> commit-graph: release strbufs after use
> dir-iterator: release strbuf after use
> test-dir-iterator: use path argument directly
> sha1-file: release strbuf after use
>
> Robert Morgan (1):
> gpg(docs): use correct --verify syntax
>
> Rohit Ashiwal (5):
> sequencer: add advice for revert
> sequencer: rename reset_for_rollback to reset_merge
> sequencer: use argv_array in reset_merge
> cherry-pick/revert: add --skip option
> cherry-pick/revert: advise using --skip
>
> SZEDER Gábor (12):
> t3404: modernize here doc style
> t3404: make the 'rebase.missingCommitsCheck=ignore' test more focused
> pager: add a helper function to clear the last line in the terminal
> t5551: use 'test_i18ngrep' to check translated output
> rebase: fix garbled progress display with '-x'
> progress: use term_clear_line()
> Document that 'git -C ""' works and doesn't change directory
> ci: don't update Homebrew
> ci: disable Homebrew's auto cleanup
> ci/lib.sh: update a comment about installed P4 and Git-LFS versions
> travis-ci: build with GCC 4.8 as well
> Documentation/git-fsck.txt: include fsck.* config variables
>
> Simon Williams (1):
> git-p4: allow unshelving of branched files
>
> Stephen Boyd (2):
> format-patch: inform user that patch-id generation is unstable
> format-patch: make --base patch-id output stable
>
> Steven Roberts (1):
> gpg-interface: do not scan past the end of buffer
>
> Taylor Blau (1):
> ref-filter.c: find disjoint pattern prefixes
>
> Thomas Gummerer (16):
> stash: fix show referencing stash index
> apply: replace marc.info link with public-inbox
> apply: only pass required data to skip_tree_prefix
> apply: only pass required data to git_header_name
> apply: only pass required data to check_header_line
> apply: only pass required data to find_name_*
> apply: only pass required data to gitdiff_* functions
> apply: make parse_git_diff_header public
> range-diff: fix function parameter indentation
> range-diff: split lines manually
> range-diff: don't remove funcname from inner diff
> range-diff: suppress line count in outer diff
> range-diff: add section header instead of diff header
> range-diff: add filename to inner diff
> range-diff: add headers to the outer hunk header
> stash: fix handling removed files with --keep-index
>
> Tigran Mkrtchyan (1):
> tag: add tag.gpgSign config option to force all tags be GPG-signed
>
> Varun Naik (1):
> read-cache.c: do not die if mmap fails
>
> Vishal Verma (1):
> merge: refuse --commit with --squash
>
> William Chargin (1):
> restore: fix typo in docs
>
> Xin Li (1):
> clone: respect user supplied origin name when setting up partial clone
>
> brian m. carlson (10):
> t: add helper to convert object IDs to paths
> t1410: make hash size independent
> t1450: make hash size independent
> t5000: make hash independent
> t6030: make test work with SHA-256
> t0027: make hash size independent
> t0090: make test pass with SHA-256
> t1007: remove SHA1 prerequisites
> t1710: make hash independent
> t2203: avoid hard-coded object ID values
>
> Ævar Arnfjörð Bjarmason (21):
> send-email: move the read_config() function above getopts
> send-email: rename the @bcclist variable for consistency
> send-email: do defaults -> config -> getopt in that order
> tests: add a special setup where prerequisites fail
> Makefile: remove the NO_R_TO_GCC_LINKER flag
> send-email: remove cargo-culted multi-patch pattern in tests
> send-email: fix broken transferEncoding tests
> send-email: document --no-[to|cc|bcc]
> hash-object doc: stop mentioning git-cvsimport
> send-email: fix regression in sendemail.identity parsing
> Revert "test-lib: whitelist GIT_TR2_* in the environment"
> config tests: simplify include cycle test
> env--helper: new undocumented builtin wrapping git_env_*()
> config.c: refactor die_bad_number() to not call gettext() early
> t6040 test: stop using global "script" variable
> tests: make GIT_TEST_GETTEXT_POISON a boolean
> tests README: re-flow a previously changed paragraph
> tests: replace test_tristate with "git env--helper"
> tests: make GIT_TEST_FAIL_PREREQS a boolean
> tests: mark two failing tests under FAIL_PREREQS
> clone: test for our behavior on odd objects/* content
>
> --
> You received this message because you are subscribed to the Google Groups "git-packagers" group.
> To unsubscribe from this group and stop receiving emails from it, send an email to git-packagers+unsubscribe@googlegroups.com.
> To view this discussion on the web visit https://groups.google.com/d/msgid/git-packagers/xmqqk1bmcf3q.fsf%40gitster-ct.c.googlers.com.
>
^ permalink raw reply [relevance 0%]
* Re: [ANNOUNCE] Git v2.23.0-rc2
2019-08-09 19:29 3% [ANNOUNCE] Git v2.23.0-rc2 Junio C Hamano
@ 2019-08-09 21:20 0% ` Bhaskar Chowdhury
2019-08-09 21:31 0% ` Git for Windows v2.23.0-rc2, was " Johannes Schindelin
1 sibling, 0 replies; 42+ results
From: Bhaskar Chowdhury @ 2019-08-09 21:20 UTC (permalink / raw)
To: Junio C Hamano; +Cc: git, Linux Kernel, git-packagers
[-- Attachment #1: Type: text/plain, Size: 45240 bytes --]
Thanks, Junio! will dig in.
On 12:29 Fri 09 Aug 2019, Junio C Hamano wrote:
>A release candidate Git v2.23.0-rc2 is now available for testing
>at the usual places. It is comprised of 483 non-merge commits
>since v2.22.0, contributed by 67 people, 24 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.23.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.22.0 are as follows.
>Welcome to the Git development community!
>
> Ariadne Conill, Barret Rhoden, Ben Avison, Daniel Ferreira,
> Doug Ilijev, Dr. Adam Nielsen, Jakub Wilk, John Lin, Mark
> Rushakoff, Matheus Tavares, Mazo, Andrey, Michael Osipov,
> Michael Platings, Miguel Ojeda, Mike Mueller, Morian Sonnet,
> Quentin Nerden, Robert Morgan, Simon Williams, Steven Roberts,
> Tigran Mkrtchyan, Varun Naik, Vishal Verma, and Xin Li.
>
>Returning contributors who helped this release are as follows.
>Thanks for your continued support.
>
> Ævar Arnfjörð Bjarmason, Beat Bolli, Boxuan Li, brian
> m. carlson, Carlo Marcelo Arenas Belón, Cesar Eduardo Barros,
> Chris Mayo, Christian Couder, Denton Liu, Derrick Stolee,
> Dimitriy Ryazantcev, Edmundo Carmona Antoranz, Elijah Newren,
> Emily Shaffer, Eric Wong, Felipe Contreras, Jean-Noël Avila,
> Jeff Hostetler, Jeff King, Johannes Schindelin, Johannes Sixt,
> Jonathan Nieder, Jonathan Tan, Josh Steadmon, Junio C Hamano,
> Karsten Blees, Marc-André Lureau, Martin Ågren, Matthew DeVore,
> Mike Hommey, Nguyễn Thái Ngọc Duy, Nickolai Belakovski,
> Paolo Bonzini, Philip Oakley, Phillip Wood, Ramsay Jones,
> René Scharfe, Rohit Ashiwal, Stephen Boyd, SZEDER Gábor,
> Taylor Blau, Thomas Gummerer, and William Chargin.
>
>----------------------------------------------------------------
>
>Git 2.23 Release Notes (draft)
>==============================
>
>Updates since v2.22
>-------------------
>
>Backward compatibility note
>
> * The "--base" option of "format-patch" computed the patch-ids for
> prerequisite patches in an unstable way, which has been updated to
> compute in a way that is compatible with "git patch-id --stable".
>
> * The "git log" command by default behaves as if the --mailmap option
> was given.
>
>
>UI, Workflows & Features
>
> * The "git fast-export/import" pair has been taught to handle commits
> with log messages in encoding other than UTF-8 better.
>
> * In recent versions of Git, per-worktree refs are exposed in
> refs/worktrees/<wtname>/ hierarchy, which means that worktree names
> must be a valid refname component. The code now sanitizes the names
> given to worktrees, to make sure these refs are well-formed.
>
> * "git merge" learned "--quit" option that cleans up the in-progress
> merge while leaving the working tree and the index still in a mess.
>
> * "git format-patch" learns a configuration to set the default for
> its --notes=<ref> option.
>
> * The code to show args with potential typo that cannot be
> interpreted as a commit-ish has been improved.
>
> * "git clone --recurse-submodules" learned to set up the submodules
> to ignore commit object names recorded in the superproject gitlink
> and instead use the commits that happen to be at the tip of the
> remote-tracking branches from the get-go, by passing the new
> "--remote-submodules" option.
>
> * The pattern "git diff/grep" use to extract funcname and words
> boundary for Matlab has been extend to cover Octave, which is more
> or less equivalent.
>
> * "git help git" was hard to discover (well, at least for some
> people).
>
> * The pattern "git diff/grep" use to extract funcname and words
> boundary for Rust has been added.
>
> * "git status" can be told a non-standard default value for the
> "--[no-]ahead-behind" option with a new configuration variable
> status.aheadBehind.
>
> * "git fetch" and "git pull" reports when a fetch results in
> non-fast-forward updates to let the user notice unusual situation.
> The commands learned "--no-show-forced-updates" option to disable
> this safety feature.
>
> * Two new commands "git switch" and "git restore" are introduced to
> split "checking out a branch to work on advancing its history" and
> "checking out paths out of the index and/or a tree-ish to work on
> advancing the current history" out of the single "git checkout"
> command.
>
> * "git branch --list" learned to always output the detached HEAD as
> the first item (when the HEAD is detached, of course), regardless
> of the locale.
>
> * The conditional inclusion mechanism learned to base the choice on
> the branch the HEAD currently is on.
>
> * "git rev-list --objects" learned the "--no-object-names" option to
> squelch the path to the object that is used as a grouping hint for
> pack-objects.
>
> * A new tag.gpgSign configuration variable turns "git tag -a" into
> "git tag -s".
>
> * "git multi-pack-index" learned expire and repack subcommands.
>
> * "git blame" learned to "ignore" commits in the history, whose
> effects (as well as their presence) get ignored.
>
> * "git cherry-pick/revert" learned a new "--skip" action.
>
> * The tips of refs from the alternate object store can be used as
> starting point for reachability computation now.
>
> * Extra blank lines in "git status" output have been reduced.
>
> * The commits in a repository can be described by multiple
> commit-graph files now, which allows the commit-graph files to be
> updated incrementally.
>
> * "git range-diff" output has been tweaked for easier identification
> of which part of what file the patch shown is about.
>
>
>Performance, Internal Implementation, Development Support etc.
>
> * Update supporting parts of "git rebase" to remove code that should
> no longer be used.
>
> * Developer support to emulate unsatisfied prerequisites in tests to
> ensure that the remainder of the tests still succeeds when tests
> with prerequisites are skipped.
>
> * "git update-server-info" learned not to rewrite the file with the
> same contents.
>
> * The way of specifying the path to find dynamic libraries at runtime
> has been simplified. The old default to pass -R/path/to/dir has been
> replaced with the new default to pass -Wl,-rpath,/path/to/dir,
> which is the more recent GCC uses. Those who need to build with an
> old GCC can still use "CC_LD_DYNPATH=-R"
>
> * Prepare use of reachability index in topological walker that works
> on a range (A..B).
>
> * A new tutorial targeting specifically aspiring git-core
> developers has been added.
>
> * Auto-detect how to tell HP-UX aCC where to use dynamically linked
> libraries from at runtime.
>
> * "git mergetool" and its tests now spawn fewer subprocesses.
>
> * Dev support update to help tracing out tests.
>
> * Support to build with MSVC has been updated.
>
> * "git fetch" that grabs from a group of remotes learned to run the
> auto-gc only once at the very end.
>
> * A handful of Windows build patches have been upstreamed.
>
> * The code to read state files used by the sequencer machinery for
> "git status" has been made more robust against a corrupt or stale
> state files.
>
> * "git for-each-ref" with multiple patterns have been optimized.
>
> * The tree-walk API learned to pass an in-core repository
> instance throughout more codepaths.
>
> * When one step in multi step cherry-pick or revert is reset or
> committed, the command line prompt script failed to notice the
> current status, which has been improved.
>
> * Many GIT_TEST_* environment variables control various aspects of
> how our tests are run, but a few followed "non-empty is true, empty
> or unset is false" while others followed the usual "there are a few
> ways to spell true, like yes, on, etc., and also ways to spell
> false, like no, off, etc." convention.
>
> * Adjust the dir-iterator API and apply it to the local clone
> optimization codepath.
>
> * We have been trying out a few language features outside c89; the
> coding guidelines document did not talk about them and instead had
> a blanket ban against them.
>
> * A test helper has been introduced to optimize preparation of test
> repositories with many simple commits, and a handful of test
> scripts have been updated to use it.
>
>
>Fixes since v2.22
>-----------------
>
> * A relative pathname given to "git init --template=<path> <repo>"
> ought to be relative to the directory "git init" gets invoked in,
> but it instead was made relative to the repository, which has been
> corrected.
>
> * "git worktree add" used to fail when another worktree connected to
> the same repository was corrupt, which has been corrected.
>
> * The ownership rule for the file descriptor to fast-import remote
> backend was mixed up, leading to an unrelated file descriptor getting
> closed, which has been fixed.
>
> * A "merge -c" instruction during "git rebase --rebase-merges" should
> give the user a chance to edit the log message, even when there is
> otherwise no need to create a new merge and replace the existing
> one (i.e. fast-forward instead), but did not. Which has been
> corrected.
>
> * Code cleanup and futureproof.
>
> * More parameter validation.
>
> * "git update-server-info" used to leave stale packfiles in its
> output, which has been corrected.
>
> * The server side support for "git fetch" used to show incorrect
> value for the HEAD symbolic ref when the namespace feature is in
> use, which has been corrected.
>
> * "git am -i --resolved" segfaulted after trying to see a commit as
> if it were a tree, which has been corrected.
>
> * "git bundle verify" needs to see if prerequisite objects exist in
> the receiving repository, but the command did not check if we are
> in a repository upfront, which has been corrected.
>
> * "git merge --squash" is designed to update the working tree and the
> index without creating the commit, and this cannot be countermanded
> by adding the "--commit" option; the command now refuses to work
> when both options are given.
>
> * The data collected by fsmonitor was not properly written back to
> the on-disk index file, breaking t7519 tests occasionally, which
> has been corrected.
>
> * Update to Unicode 12.1 width table.
>
> * The command line to invoke a "git cat-file" command from inside
> "git p4" was not properly quoted to protect a caret and running a
> broken command on Windows, which has been corrected.
>
> * "git request-pull" learned to warn when the ref we ask them to pull
> from in the local repository and in the published repository are
> different.
>
> * When creating a partial clone, the object filtering criteria is
> recorded for the origin of the clone, but this incorrectly used a
> hardcoded name "origin" to name that remote; it has been corrected
> to honor the "--origin <name>" option.
>
> * "git fetch" into a lazy clone forgot to fetch base objects that are
> necessary to complete delta in a thin packfile, which has been
> corrected.
>
> * The filter_data used in the list-objects-filter (which manages a
> lazily sparse clone repository) did not use the dynamic array API
> correctly---'nr' is supposed to point at one past the last element
> of the array in use. This has been corrected.
>
> * The description about slashes in gitignore patterns (used to
> indicate things like "anchored to this level only" and "only
> matches directories") has been revamped.
>
> * The URL decoding code has been updated to avoid going past the end
> of the string while parsing %-<hex>-<hex> sequence.
>
> * The list of for-each like macros used by clang-format has been
> updated.
>
> * "git branch --list" learned to show branches that are checked out
> in other worktrees connected to the same repository prefixed with
> '+', similar to the way the currently checked out branch is shown
> with '*' in front.
> (merge 6e9381469e nb/branch-show-other-worktrees-head later to maint).
>
> * Code restructuring during 2.20 period broke fetching tags via
> "import" based transports.
>
> * The commit-graph file is now part of the "files that the runtime
> may keep open file descriptors on, all of which would need to be
> closed when done with the object store", and the file descriptor to
> an existing commit-graph file now is closed before "gc" finalizes a
> new instance to replace it.
>
> * "git checkout -p" needs to selectively apply a patch in reverse,
> which did not work well.
>
> * Code clean-up to avoid signed integer wraparounds during binary search.
>
> * "git interpret-trailers" always treated '#' as the comment
> character, regardless of core.commentChar setting, which has been
> corrected.
>
> * "git stash show 23" used to work, but no more after getting
> rewritten in C; this regression has been corrected.
>
> * "git rebase --abort" used to leave refs/rewritten/ when concluding
> "git rebase -r", which has been corrected.
>
> * An incorrect list of options was cached after command line
> completion failed (e.g. trying to complete a command that requires
> a repository outside one), which has been corrected.
>
> * The code to parse scaled numbers out of configuration files has
> been made more robust and also easier to follow.
>
> * The codepath to compute delta islands used to spew progress output
> without giving the callers any way to squelch it, which has been
> fixed.
>
> * Protocol capabilities that go over wire should never be translated,
> but it was incorrectly marked for translation, which has been
> corrected. The output of protocol capabilities for debugging has
> been tweaked a bit.
>
> * Use "Erase in Line" CSI sequence that is already used in the editor
> support to clear cruft in the progress output.
>
> * "git submodule foreach" did not protect command line options passed
> to the command to be run in each submodule correctly, when the
> "--recursive" option was in use.
>
> * The configuration variable rebase.rescheduleFailedExec should be
> effective only while running an interactive rebase and should not
> affect anything when running a non-interactive one, which was not
> the case. This has been corrected.
>
> * The "git clone" documentation refers to command line options in its
> description in the short form; they have been replaced with long
> forms to make them more recognisable.
>
> * Generation of pack bitmaps are now disabled when .keep files exist,
> as these are mutually exclusive features.
> (merge 7328482253 ew/repack-with-bitmaps-by-default later to maint).
>
> * "git rm" to resolve a conflicted path leaked an internal message
> "needs merge" before actually removing the path, which was
> confusing. This has been corrected.
>
> * "git stash --keep-index" did not work correctly on paths that have
> been removed, which has been fixed.
> (merge b932f6a5e8 tg/stash-keep-index-with-removed-paths later to maint).
>
> * Window 7 update ;-)
>
> * A codepath that reads from GPG for signed object verification read
> past the end of allocated buffer, which has been fixed.
>
> * "git clean" silently skipped a path when it cannot lstat() it; now
> it gives a warning.
>
> * "git push --atomic" that goes over the transport-helper (namely,
> the smart http transport) failed to prevent refs to be pushed when
> it can locally tell that one of the ref update will fail without
> having to consult the other end, which has been corrected.
>
> * The internal diff machinery can be made to read out of bounds while
> looking for --function-context line in a corner case, which has been
> corrected.
> (merge b777f3fd61 jk/xdiff-clamp-funcname-context-index later to maint).
>
> * Other code cleanup, docfix, build fix, etc.
> (merge fbec05c210 cc/test-oidmap later to maint).
> (merge 7a06fb038c jk/no-system-includes-in-dot-c later to maint).
> (merge 81ed2b405c cb/xdiff-no-system-includes-in-dot-c later to maint).
> (merge d61e6ce1dd sg/fsck-config-in-doc later to maint).
>
>----------------------------------------------------------------
>
>Changes since v2.22.0 are as follows:
>
>Ariadne Conill (3):
> log: add warning for unspecified log.mailmap setting
> documentation: mention --no-use-mailmap and log.mailmap false setting
> tests: defang pager tests by explicitly disabling the log.mailmap warning
>
>Barret Rhoden (8):
> fsck: rename and touch up init_skiplist()
> Move oidset_parse_file() to oidset.c
> blame: use a helper function in blame_chunk()
> blame: add the ability to ignore commits and their changes
> blame: add config options for the output of ignored or unblamable lines
> blame: optionally track line fingerprints during fill_blame_origin()
> blame: use the fingerprint heuristic to match ignored lines
> blame: add a test to cover blame_coalesce()
>
>Beat Bolli (2):
> unicode: update the width tables to Unicode 12.1
> grep: print the pcre2_jit_on value
>
>Ben Avison (1):
> clone: add `--remote-submodules` flag
>
>Boxuan Li (2):
> userdiff: add Octave
> userdiff: fix grammar and style issues
>
>Carlo Marcelo Arenas Belón (6):
> fsmonitor: avoid signed integer overflow / infinite loop
> wrapper: avoid undefined behaviour in macOS
> trace2: correct typo in technical documentation
> xdiff: drop system includes in xutils.c
> xdiff: remove duplicate headers from xhistogram.c
> xdiff: remove duplicate headers from xpatience.c
>
>Cesar Eduardo Barros (1):
> mingw: embed a manifest to trick UAC into Doing The Right Thing
>
>Chris Mayo (1):
> send-email: update documentation of required Perl modules
>
>Christian Couder (7):
> t/helper: add test-oidmap.c
> t: add t0016-oidmap.sh
> oidmap: use sha1hash() instead of static hash() function
> test-hashmap: remove 'hash' command
> doc: improve usage string in MyFirstContribution
> test-oidmap: remove 'add' subcommand
> t0016: add 'remove' subcommand test
>
>Daniel Ferreira (1):
> dir-iterator: add tests for dir-iterator API
>
>Denton Liu (5):
> git-format-patch.txt: document --no-notes option
> format-patch: teach format.notes config option
> config: learn the "onbranch:" includeIf condition
> config/alias.txt: change " and ' to `
> config/alias.txt: document alias accepting non-command first word
>
>Derrick Stolee (51):
> commit-graph: fix the_repository reference
> revision: use generation for A..B --topo-order queries
> revision: keep topo-walk free of unintersting commits
> sha1-file: split OBJECT_INFO_FOR_PREFETCH
> repack: refactor pack deletion for future use
> Docs: rearrange subcommands for multi-pack-index
> multi-pack-index: prepare for 'expire' subcommand
> midx: simplify computation of pack name lengths
> midx: refactor permutation logic and pack sorting
> multi-pack-index: implement 'expire' subcommand
> multi-pack-index: prepare 'repack' subcommand
> midx: implement midx_repack()
> multi-pack-index: test expire while adding packs
> midx: add test that 'expire' respects .keep files
> t5319-multi-pack-index.sh: test batch size zero
> commit-graph: return with errors during write
> commit-graph: collapse parameters into flags
> commit-graph: remove Future Work section
> commit-graph: create write_commit_graph_context
> commit-graph: extract fill_oids_from_packs()
> commit-graph: extract fill_oids_from_commit_hex()
> commit-graph: extract fill_oids_from_all_packs()
> commit-graph: extract count_distinct_commits()
> commit-graph: extract copy_oids_to_commits()
> commit-graph: extract write_commit_graph_file()
> commit-graph: use raw_object_store when closing
> packfile: close commit-graph in close_all_packs
> packfile: rename close_all_packs to close_object_store
> commit-graph: document commit-graph chains
> commit-graph: prepare for commit-graph chains
> commit-graph: rename commit_compare to oid_compare
> commit-graph: load commit-graph chains
> commit-graph: add base graphs chunk
> commit-graph: rearrange chunk count logic
> commit-graph: write commit-graph chains
> commit-graph: add --split option to builtin
> commit-graph: merge commit-graph chains
> commit-graph: allow cross-alternate chains
> commit-graph: expire commit-graph files
> commit-graph: create options for split files
> commit-graph: verify chains with --shallow mode
> commit-graph: clean up chains after flattened write
> commit-graph: test octopus merges with --split
> commit-graph: test --split across alternate without --split
> commit-graph: normalize commit-graph filenames
> commit-graph: test verify across alternates
> fetch: add --[no-]show-forced-updates argument
> fetch: warn about forced updates in branch listing
> pull: add --[no-]show-forced-updates passthrough
> t5319: use 'test-tool path-utils' instead of 'ls -l'
> commit-graph: fix bug around octopus merges
>
>Dimitriy Ryazantcev (1):
> l10n: localizable upload progress messages
>
>Doug Ilijev (1):
> README: fix rendering of text in angle brackets
>
>Dr. Adam Nielsen (1):
> gitignore.txt: make slash-rules more readable
>
>Edmundo Carmona Antoranz (1):
> builtin/merge.c - cleanup of code in for-cycle that tests strategies
>
>Elijah Newren (6):
> t9350: fix encoding test to actually test reencoding
> fast-import: support 'encoding' commit header
> fast-export: avoid stripping encoding header if we cannot reencode
> fast-export: differentiate between explicitly UTF-8 and implicitly UTF-8
> fast-export: do automatic reencoding of commit messages only if requested
> merge-recursive: avoid directory rename detection in recursive case
>
>Emily Shaffer (7):
> documentation: add tutorial for first contribution
> documentation: add anchors to MyFirstContribution
> grep: fail if call could output and name is null
> doc: hint about GIT_DEBUGGER in CodingGuidelines
> doc: add some nit fixes to MyFirstContribution
> rev-list: teach --no-object-names to enable piping
> transport-helper: enforce atomic in push_refs_with_push
>
>Eric Wong (3):
> update-server-info: avoid needless overwrites
> server-info: do not list unlinked packs
> repack: disable bitmaps-by-default if .keep files exist
>
>Felipe Contreras (5):
> t5801 (remote-helpers): cleanup refspec stuff
> t5801 (remote-helpers): add test to fetch tags
> fetch: trivial cleanup
> fetch: make the code more understandable
> fetch: fix regression with transport helpers
>
>Jakub Wilk (1):
> doc: don't use git.kernel.org as example gitweb URL
>
>Jean-Noël Avila (1):
> l10n: reformat some localized strings for v2.23.0
>
>Jeff Hostetler (13):
> cache-tree/blame: avoid reusing the DEBUG constant
> msvc: mark a variable as non-const
> msvc: do not re-declare the timespec struct
> msvc: define ftello()
> msvc: fix detect_msys_tty()
> msvc: update Makefile to allow for spaces in the compiler path
> status: add status.aheadbehind setting
> status: warn when a/b calculation takes too long
> status: ignore status.aheadbehind in porcelain formats
> msvc: support building Git using MS Visual C++
> msvc: add a compile-time flag to allow detailed heap debugging
> msvc: do not pretend to support all signals
> msvc: ignore .dll and incremental compile output
>
>Jeff King (57):
> cmd_{read,write}_tree: rename "unused" variable that is used
> builtin: consistently pass cmd_* prefix to parse_options
> submodule: drop unused prefix parameter from some functions
> clone: drop dest parameter from copy_alternates()
> read-cache: drop unused parameter from threaded load
> wt-status: drop unused status parameter
> mktree: drop unused length parameter
> name-rev: drop unused parameters from is_better_name()
> pack-objects: drop unused rev_info parameters
> receive-pack: drop unused "commands" from prepare_shallow_update()
> remove_all_fetch_refspecs(): drop unused "remote" parameter
> rev-list: drop unused void pointer from finish_commit()
> show-branch: drop unused parameter from show_independent()
> verify-commit: simplify parameters to run_gpg_verify()
> help_unknown_ref(): duplicate collected refnames
> help_unknown_ref(): check for refname ambiguity
> upload-pack: strip namespace from symref data
> am: simplify prompt response handling
> am: read interactive input from stdin
> am: drop tty requirement for --interactive
> am: fix --interactive HEAD tree resolution
> interpret-trailers: load default config
> verify-tag: drop signal.h include
> wt-status.h: drop stdio.h include
> describe: fix accidental oid/hash type-punning
> upload-pack: rename a "sha1" variable to "oid"
> pack-bitmap-write: convert some helpers to use object_id
> pack-objects: convert packlist_find() to use object_id
> pack-objects: convert locate_object_entry_hash() to object_id
> object: convert lookup_unknown_object() to use object_id
> object: convert lookup_object() to use object_id
> object: convert internal hash_obj() to object_id
> object: convert create_object() to use object_id
> khash: drop broken oid_map typedef
> khash: rename kh_oid_t to kh_oid_set
> delta-islands: convert island_marks khash to use oids
> pack-bitmap: convert khash_sha1 maps into kh_oid_map
> khash: drop sha1-specific map types
> khash: rename oid helper functions
> hash.h: move object_id definition from cache.h
> hashmap: convert sha1hash() to oidhash()
> delta-islands: respect progress flag
> blame: drop some unused function parameters
> object-store.h: move for_each_alternate_ref() from transport.h
> check_everything_connected: assume alternate ref tips are valid
> test-lib: introduce test_commit_bulk
> t5310: increase the number of bitmapped commits
> t3311: use test_commit_bulk
> t5702: use test_commit_bulk
> t5703: use test_commit_bulk
> t6200: use test_commit_bulk
> xdiff: clamp function context indices in post-image
> t: sort output of hashmap iteration
> t7700: clean up .keep file in bitmap-writing test
> repack: silence warnings when auto-enabled bitmaps cannot be built
> repack: simplify handling of auto-bitmaps and .keep files
> t0000: reword comments for "local" test
>
>Johannes Schindelin (47):
> 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
> bisect--helper: verify HEAD could be parsed before continuing
> fill_stat_cache_info(): prepare for an fsmonitor fix
> mark_fsmonitor_valid(): mark the index as changed if needed
> bundle verify: error out if called without an object database
> poll (mingw): allow compiling with GCC 8 and DEVELOPER=1
> kwset: allow building with GCC 8
> winansi: simplify loading the GetCurrentConsoleFontEx() function
> config: avoid calling `labs()` on too-large data type
> t3404: fix a typo
> mingw: fix a typo in the msysGit-specific section
> Mark .bat files as requiring CR/LF endings
> t0001 (mingw): do not expect a specific order of stdout/stderr
> obstack: fix compiler warning
> mingw: replace mingw_startup() hack
> msvc: fix dependencies of compat/msvc.c
> t0001: fix on case-insensitive filesystems
> msvc: avoid debug assertion windows in Debug Mode
> mingw: enable stack smashing protector
> mingw: get pw_name in UTF-8 format
> mingw: use Unicode functions explicitly
> rebase --am: ignore rebase.rescheduleFailedExec
> mingw: fix possible buffer overrun when calling `GetUserNameW()`
> diff: munmap() file contents before running external diff
> mingw: support spawning programs containing spaces in their names
> clean: show an error message when the path is too long
> rebase: fix white-space
> git: mark cmd_rebase as requiring a worktree
> Vcproj.pm: auto-generate GUIDs
> Vcproj.pm: do not configure VCWebServiceProxyGeneratorTool
> Vcproj.pm: urlencode '<' and '>' when generating VC projects
> contrib/buildsystems: ignore irrelevant files in Generators/
> contrib/buildsystems: error out on unknown option
> contrib/buildsystems: handle libiconv, too
> contrib/buildsystems: also handle -lexpat
> contrib/buildsystems: handle options starting with a slash
> contrib/buildsystems: add a backend for modern Visual Studio versions
> msvc: add a Makefile target to pre-generate the Visual Studio solution
> vcxproj: also link-or-copy builtins
> .gitignore: ignore Visual Studio's temporary/generated files
> bin-wrappers: append `.exe` to target paths if necessary
> git: avoid calling aliased builtins via their dashed form
> config: work around bug with includeif:onbranch and early config
>
>Johannes Sixt (5):
> userdiff: two simplifications of patterns for rust
> t7610-mergetool: do not place pipelines headed by `yes` in subshells
> t7610-mergetool: use test_cmp instead of test $(cat file) = $txt
> mergetool: dissect strings with shell variable magic instead of `expr`
> mergetool: use shell variable magic instead of `awk`
>
>John Lin (1):
> status: remove the empty line after hints
>
>Jonathan Nieder (1):
> t: decrease nesting in test_oid_to_path
>
>Jonathan Tan (5):
> t5616: refactor packfile replacement
> index-pack: prefetch missing REF_DELTA bases
> t5616: use correct flag to check object is missing
> t5616: cover case of client having delta base
> t5551: test usage of chunked encoding explicitly
>
>Josh Steadmon (1):
> trace2: correct trace2 field name documentation
>
>Junio C Hamano (19):
> The first batch after 2.22
> The second batch
> The third batch
> The fourth batch
> The fifth batch
> transport-helper: avoid var decl in for () loop control
> rm: resolving by removal is not a warning-worthy event
> CodingGuidelines: spell out post-C89 rules
> The sixth batch
> The seventh batch
> Flush fixes up to the third batch post 2.22.0
> Merge fixes made on the 'master' front
> Git 2.23-rc0
> test-dir-iterator: do not assume errno values
> A few more last-minute fixes
> log: flip the --mailmap default unconditionally
> log: really flip the --mailmap default
> Git 2.23-rc1
> Git 2.23-rc2
>
>Karsten Blees (2):
> gettext: always use UTF-8 on native Windows
> mingw: initialize HOME on startup
>
>Marc-André Lureau (1):
> userdiff: add built-in pattern for rust
>
>Mark Rushakoff (1):
> doc: typo: s/can not/cannot/ and s/is does/does/
>
>Martin Ågren (3):
> ref-filter: fix memory leak in `free_array_item()`
> RelNotes/2.21.1: typofix
> RelNotes/2.23.0: fix a few typos and other minor issues
>
>Matheus Tavares (8):
> clone: better handle symlinked files at .git/objects/
> dir-iterator: use warning_errno when possible
> dir-iterator: refactor state machine model
> dir-iterator: add flags parameter to dir_iterator_begin
> clone: copy hidden paths at local clone
> clone: extract function from copy_or_link_directory
> clone: use dir-iterator to avoid explicit dir traversal
> clone: replace strcmp by fspathcmp
>
>Matthew DeVore (5):
> list-objects-filter-options: error is localizeable
> list-objects-filter: correct usage of ALLOC_GROW
> url: do not read past end of buffer
> url: do not allow %00 to represent NUL in URLs
> ref-filter: sort detached HEAD lines firstly
>
>Mazo, Andrey (8):
> git-p4: detect/prevent infinite loop in gitCommitByP4Change()
> git-p4: add failing test for "git-p4: match branches case insensitively if configured"
> git-p4: match branches case insensitively if configured
> git-p4: don't groom exclude path list on every commit
> git-p4: add failing test for "don't exclude other files with same prefix"
> git-p4: don't exclude other files with same prefix
> git-p4: add failing test for "git-p4: respect excluded paths when detecting branches"
> git-p4: respect excluded paths when detecting branches
>
>Michael Osipov (1):
> configure: Detect linking style for HP aCC on HP-UX
>
>Michael Platings (2):
> blame: add a fingerprint heuristic to match ignored lines
> t8014: remove unnecessary braces
>
>Miguel Ojeda (1):
> clang-format: use git grep to generate the ForEachMacros list
>
>Mike Hommey (2):
> dup() the input fd for fast-import used for remote helpers
> Use xmmap_gently instead of xmmap in use_pack
>
>Mike Mueller (1):
> p4 unshelve: fix "Not a valid object name HEAD0" on Windows
>
>Morian Sonnet (1):
> submodule foreach: fix recursion of options
>
>Nguyễn Thái Ngọc Duy (63):
> git-checkout.txt: spell out --no-option
> git-checkout.txt: fix one syntax line
> doc: document --overwrite-ignore
> git-checkout.txt: fix monospace typeset
> t: rename t2014-switch.sh to t2014-checkout-switch.sh
> checkout: advice how to get out of detached HEAD mode
> checkout: inform the user when removing branch state
> checkout: keep most #include sorted
> checkout: factor out some code in parse_branchname_arg()
> checkout: make "opts" in cmd_checkout() a pointer
> checkout: move 'confict_style' and 'dwim_..' to checkout_opts
> checkout: split options[] array in three pieces
> checkout: split part of it to new command 'switch'
> switch: better names for -b and -B
> switch: add --discard-changes
> switch: remove -l
> switch: stop accepting pathspec
> switch: reject "do nothing" case
> switch: only allow explicit detached HEAD
> switch: add short option for --detach
> switch: implicit dwim, use --no-guess to disable it
> switch: no worktree status unless real branch switch happens
> switch: reject if some operation is in progress
> switch: make --orphan switch to an empty tree
> t: add tests for switch
> completion: support switch
> doc: promote "git switch"
> checkout: split part of it to new command 'restore'
> restore: take tree-ish from --source option instead
> restore: make pathspec mandatory
> restore: disable overlay mode by default
> checkout: factor out worktree checkout code
> restore: add --worktree and --staged
> restore: reject invalid combinations with --staged
> restore: default to --source=HEAD when only --staged is specified
> restore: replace --force with --ignore-unmerged
> restore: support --patch
> t: add tests for restore
> completion: support restore
> user-manual.txt: prefer 'merge --abort' over 'reset --hard'
> doc: promote "git restore"
> help: move git-diff and git-reset to different groups
> Declare both git-switch and git-restore experimental
> merge: remove drop_save() in favor of remove_merge_branch_state()
> init: make --template path relative to $CWD
> worktree add: sanitize worktree names
> worktree add: be tolerant of corrupt worktrees
> merge: add --quit
> completion: do not cache if --git-completion-helper fails
> fetch: only run 'gc' once when fetching multiple remotes
> t2027: use test_must_be_empty
> switch: allow to switch in the middle of bisect
> completion: disable dwim on "git switch -d"
> fetch-pack: move capability names out of i18n strings
> fetch-pack: print all relevant supported capabilities with -v -v
> fetch-pack: print server version at the top in -v -v
> sha1-file.c: remove the_repo from read_object_with_reference()
> tree-walk.c: remove the_repo from fill_tree_descriptor()
> tree-walk.c: remove the_repo from get_tree_entry()
> tree-walk.c: remove the_repo from get_tree_entry_follow_symlinks()
> match-trees.c: remove the_repo from shift_tree*()
> Use the right 'struct repository' instead of the_repository
> t7814: do not generate same commits in different repos
>
>Nickolai Belakovski (3):
> ref-filter: add worktreepath atom
> branch: update output to include worktree info
> branch: add worktree info on verbose output
>
>Paolo Bonzini (2):
> request-pull: quote regex metacharacters in local ref
> request-pull: warn if the remote object is not the same as the local one
>
>Philip Oakley (15):
> git.c: show usage for accessing the git(1) help page
> Doc: git.txt: remove backticks from link and add git-scm.com/docs
> doc branch: provide examples for listing remote tracking branches
> msvc: include sigset_t definition
> msvc: define O_ACCMODE
> msvc: add pragmas for common warnings
> Vcproj.pm: list git.exe first to be startup project
> contrib/buildsystems: ignore invalidcontinue.obj
> contrib/buildsystems: fix misleading error message
> contrib/buildsystems: handle quoted spaces in filenames
> contrib/buildsystems: ignore gettext stuff
> contrib/buildsystems: redirect errors of the dry run into a log file
> contrib/buildsystems: optionally capture the dry-run in a file
> contrib/buildsystems: handle the curl library option
> .gitignore: touch up the entries regarding Visual Studio
>
>Phillip Wood (12):
> rebase: fix a memory leak
> rebase: warn if state directory cannot be removed
> sequencer: return errors from sequencer_remove_state()
> rebase --abort/--quit: cleanup refs/rewritten
> rebase -r: always reword merge -c
> add -p: fix checkout -p with pathological context
> show --continue/skip etc. consistently in synopsis
> sequencer: always allow tab after command name
> sequencer: factor out todo command name parsing
> status: do not report errors in sequencer/todo
> git-prompt: improve cherry-pick/revert detection
> t3420: remove progress lines before comparing output
>
>Quentin Nerden (2):
> docs: git-clone: refer to long form of options
> docs: git-clone: list short form of options first
>
>Ramsay Jones (1):
> env--helper: mark a file-local symbol as static
>
>René Scharfe (10):
> cleanup: fix possible overflow errors in binary search, part 2
> coccinelle: use COPY_ARRAY for copying arrays
> use COPY_ARRAY for copying arrays
> config: use unsigned_mult_overflows to check for overflows
> config: don't multiply in parse_unit_factor()
> config: simplify parsing of unit factors
> commit-graph: release strbufs after use
> dir-iterator: release strbuf after use
> test-dir-iterator: use path argument directly
> sha1-file: release strbuf after use
>
>Robert Morgan (1):
> gpg(docs): use correct --verify syntax
>
>Rohit Ashiwal (5):
> sequencer: add advice for revert
> sequencer: rename reset_for_rollback to reset_merge
> sequencer: use argv_array in reset_merge
> cherry-pick/revert: add --skip option
> cherry-pick/revert: advise using --skip
>
>SZEDER Gábor (12):
> t3404: modernize here doc style
> t3404: make the 'rebase.missingCommitsCheck=ignore' test more focused
> pager: add a helper function to clear the last line in the terminal
> t5551: use 'test_i18ngrep' to check translated output
> rebase: fix garbled progress display with '-x'
> progress: use term_clear_line()
> Document that 'git -C ""' works and doesn't change directory
> ci: don't update Homebrew
> ci: disable Homebrew's auto cleanup
> ci/lib.sh: update a comment about installed P4 and Git-LFS versions
> travis-ci: build with GCC 4.8 as well
> Documentation/git-fsck.txt: include fsck.* config variables
>
>Simon Williams (1):
> git-p4: allow unshelving of branched files
>
>Stephen Boyd (2):
> format-patch: inform user that patch-id generation is unstable
> format-patch: make --base patch-id output stable
>
>Steven Roberts (1):
> gpg-interface: do not scan past the end of buffer
>
>Taylor Blau (1):
> ref-filter.c: find disjoint pattern prefixes
>
>Thomas Gummerer (16):
> stash: fix show referencing stash index
> apply: replace marc.info link with public-inbox
> apply: only pass required data to skip_tree_prefix
> apply: only pass required data to git_header_name
> apply: only pass required data to check_header_line
> apply: only pass required data to find_name_*
> apply: only pass required data to gitdiff_* functions
> apply: make parse_git_diff_header public
> range-diff: fix function parameter indentation
> range-diff: split lines manually
> range-diff: don't remove funcname from inner diff
> range-diff: suppress line count in outer diff
> range-diff: add section header instead of diff header
> range-diff: add filename to inner diff
> range-diff: add headers to the outer hunk header
> stash: fix handling removed files with --keep-index
>
>Tigran Mkrtchyan (1):
> tag: add tag.gpgSign config option to force all tags be GPG-signed
>
>Varun Naik (1):
> read-cache.c: do not die if mmap fails
>
>Vishal Verma (1):
> merge: refuse --commit with --squash
>
>William Chargin (1):
> restore: fix typo in docs
>
>Xin Li (1):
> clone: respect user supplied origin name when setting up partial clone
>
>brian m. carlson (10):
> t: add helper to convert object IDs to paths
> t1410: make hash size independent
> t1450: make hash size independent
> t5000: make hash independent
> t6030: make test work with SHA-256
> t0027: make hash size independent
> t0090: make test pass with SHA-256
> t1007: remove SHA1 prerequisites
> t1710: make hash independent
> t2203: avoid hard-coded object ID values
>
>Ævar Arnfjörð Bjarmason (21):
> send-email: move the read_config() function above getopts
> send-email: rename the @bcclist variable for consistency
> send-email: do defaults -> config -> getopt in that order
> tests: add a special setup where prerequisites fail
> Makefile: remove the NO_R_TO_GCC_LINKER flag
> send-email: remove cargo-culted multi-patch pattern in tests
> send-email: fix broken transferEncoding tests
> send-email: document --no-[to|cc|bcc]
> hash-object doc: stop mentioning git-cvsimport
> send-email: fix regression in sendemail.identity parsing
> Revert "test-lib: whitelist GIT_TR2_* in the environment"
> config tests: simplify include cycle test
> env--helper: new undocumented builtin wrapping git_env_*()
> config.c: refactor die_bad_number() to not call gettext() early
> t6040 test: stop using global "script" variable
> tests: make GIT_TEST_GETTEXT_POISON a boolean
> tests README: re-flow a previously changed paragraph
> tests: replace test_tristate with "git env--helper"
> tests: make GIT_TEST_FAIL_PREREQS a boolean
> tests: mark two failing tests under FAIL_PREREQS
> clone: test for our behavior on odd objects/* content
>
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 488 bytes --]
^ permalink raw reply [relevance 0%]
* [ANNOUNCE] Git v2.23.0-rc2
@ 2019-08-09 19:29 3% Junio C Hamano
2019-08-09 21:20 0% ` Bhaskar Chowdhury
2019-08-09 21:31 0% ` Git for Windows v2.23.0-rc2, was " Johannes Schindelin
0 siblings, 2 replies; 42+ results
From: Junio C Hamano @ 2019-08-09 19:29 UTC (permalink / raw)
To: git; +Cc: Linux Kernel, git-packagers
A release candidate Git v2.23.0-rc2 is now available for testing
at the usual places. It is comprised of 483 non-merge commits
since v2.22.0, contributed by 67 people, 24 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.23.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.22.0 are as follows.
Welcome to the Git development community!
Ariadne Conill, Barret Rhoden, Ben Avison, Daniel Ferreira,
Doug Ilijev, Dr. Adam Nielsen, Jakub Wilk, John Lin, Mark
Rushakoff, Matheus Tavares, Mazo, Andrey, Michael Osipov,
Michael Platings, Miguel Ojeda, Mike Mueller, Morian Sonnet,
Quentin Nerden, Robert Morgan, Simon Williams, Steven Roberts,
Tigran Mkrtchyan, Varun Naik, Vishal Verma, and Xin Li.
Returning contributors who helped this release are as follows.
Thanks for your continued support.
Ævar Arnfjörð Bjarmason, Beat Bolli, Boxuan Li, brian
m. carlson, Carlo Marcelo Arenas Belón, Cesar Eduardo Barros,
Chris Mayo, Christian Couder, Denton Liu, Derrick Stolee,
Dimitriy Ryazantcev, Edmundo Carmona Antoranz, Elijah Newren,
Emily Shaffer, Eric Wong, Felipe Contreras, Jean-Noël Avila,
Jeff Hostetler, Jeff King, Johannes Schindelin, Johannes Sixt,
Jonathan Nieder, Jonathan Tan, Josh Steadmon, Junio C Hamano,
Karsten Blees, Marc-André Lureau, Martin Ågren, Matthew DeVore,
Mike Hommey, Nguyễn Thái Ngọc Duy, Nickolai Belakovski,
Paolo Bonzini, Philip Oakley, Phillip Wood, Ramsay Jones,
René Scharfe, Rohit Ashiwal, Stephen Boyd, SZEDER Gábor,
Taylor Blau, Thomas Gummerer, and William Chargin.
----------------------------------------------------------------
Git 2.23 Release Notes (draft)
==============================
Updates since v2.22
-------------------
Backward compatibility note
* The "--base" option of "format-patch" computed the patch-ids for
prerequisite patches in an unstable way, which has been updated to
compute in a way that is compatible with "git patch-id --stable".
* The "git log" command by default behaves as if the --mailmap option
was given.
UI, Workflows & Features
* The "git fast-export/import" pair has been taught to handle commits
with log messages in encoding other than UTF-8 better.
* In recent versions of Git, per-worktree refs are exposed in
refs/worktrees/<wtname>/ hierarchy, which means that worktree names
must be a valid refname component. The code now sanitizes the names
given to worktrees, to make sure these refs are well-formed.
* "git merge" learned "--quit" option that cleans up the in-progress
merge while leaving the working tree and the index still in a mess.
* "git format-patch" learns a configuration to set the default for
its --notes=<ref> option.
* The code to show args with potential typo that cannot be
interpreted as a commit-ish has been improved.
* "git clone --recurse-submodules" learned to set up the submodules
to ignore commit object names recorded in the superproject gitlink
and instead use the commits that happen to be at the tip of the
remote-tracking branches from the get-go, by passing the new
"--remote-submodules" option.
* The pattern "git diff/grep" use to extract funcname and words
boundary for Matlab has been extend to cover Octave, which is more
or less equivalent.
* "git help git" was hard to discover (well, at least for some
people).
* The pattern "git diff/grep" use to extract funcname and words
boundary for Rust has been added.
* "git status" can be told a non-standard default value for the
"--[no-]ahead-behind" option with a new configuration variable
status.aheadBehind.
* "git fetch" and "git pull" reports when a fetch results in
non-fast-forward updates to let the user notice unusual situation.
The commands learned "--no-show-forced-updates" option to disable
this safety feature.
* Two new commands "git switch" and "git restore" are introduced to
split "checking out a branch to work on advancing its history" and
"checking out paths out of the index and/or a tree-ish to work on
advancing the current history" out of the single "git checkout"
command.
* "git branch --list" learned to always output the detached HEAD as
the first item (when the HEAD is detached, of course), regardless
of the locale.
* The conditional inclusion mechanism learned to base the choice on
the branch the HEAD currently is on.
* "git rev-list --objects" learned the "--no-object-names" option to
squelch the path to the object that is used as a grouping hint for
pack-objects.
* A new tag.gpgSign configuration variable turns "git tag -a" into
"git tag -s".
* "git multi-pack-index" learned expire and repack subcommands.
* "git blame" learned to "ignore" commits in the history, whose
effects (as well as their presence) get ignored.
* "git cherry-pick/revert" learned a new "--skip" action.
* The tips of refs from the alternate object store can be used as
starting point for reachability computation now.
* Extra blank lines in "git status" output have been reduced.
* The commits in a repository can be described by multiple
commit-graph files now, which allows the commit-graph files to be
updated incrementally.
* "git range-diff" output has been tweaked for easier identification
of which part of what file the patch shown is about.
Performance, Internal Implementation, Development Support etc.
* Update supporting parts of "git rebase" to remove code that should
no longer be used.
* Developer support to emulate unsatisfied prerequisites in tests to
ensure that the remainder of the tests still succeeds when tests
with prerequisites are skipped.
* "git update-server-info" learned not to rewrite the file with the
same contents.
* The way of specifying the path to find dynamic libraries at runtime
has been simplified. The old default to pass -R/path/to/dir has been
replaced with the new default to pass -Wl,-rpath,/path/to/dir,
which is the more recent GCC uses. Those who need to build with an
old GCC can still use "CC_LD_DYNPATH=-R"
* Prepare use of reachability index in topological walker that works
on a range (A..B).
* A new tutorial targeting specifically aspiring git-core
developers has been added.
* Auto-detect how to tell HP-UX aCC where to use dynamically linked
libraries from at runtime.
* "git mergetool" and its tests now spawn fewer subprocesses.
* Dev support update to help tracing out tests.
* Support to build with MSVC has been updated.
* "git fetch" that grabs from a group of remotes learned to run the
auto-gc only once at the very end.
* A handful of Windows build patches have been upstreamed.
* The code to read state files used by the sequencer machinery for
"git status" has been made more robust against a corrupt or stale
state files.
* "git for-each-ref" with multiple patterns have been optimized.
* The tree-walk API learned to pass an in-core repository
instance throughout more codepaths.
* When one step in multi step cherry-pick or revert is reset or
committed, the command line prompt script failed to notice the
current status, which has been improved.
* Many GIT_TEST_* environment variables control various aspects of
how our tests are run, but a few followed "non-empty is true, empty
or unset is false" while others followed the usual "there are a few
ways to spell true, like yes, on, etc., and also ways to spell
false, like no, off, etc." convention.
* Adjust the dir-iterator API and apply it to the local clone
optimization codepath.
* We have been trying out a few language features outside c89; the
coding guidelines document did not talk about them and instead had
a blanket ban against them.
* A test helper has been introduced to optimize preparation of test
repositories with many simple commits, and a handful of test
scripts have been updated to use it.
Fixes since v2.22
-----------------
* A relative pathname given to "git init --template=<path> <repo>"
ought to be relative to the directory "git init" gets invoked in,
but it instead was made relative to the repository, which has been
corrected.
* "git worktree add" used to fail when another worktree connected to
the same repository was corrupt, which has been corrected.
* The ownership rule for the file descriptor to fast-import remote
backend was mixed up, leading to an unrelated file descriptor getting
closed, which has been fixed.
* A "merge -c" instruction during "git rebase --rebase-merges" should
give the user a chance to edit the log message, even when there is
otherwise no need to create a new merge and replace the existing
one (i.e. fast-forward instead), but did not. Which has been
corrected.
* Code cleanup and futureproof.
* More parameter validation.
* "git update-server-info" used to leave stale packfiles in its
output, which has been corrected.
* The server side support for "git fetch" used to show incorrect
value for the HEAD symbolic ref when the namespace feature is in
use, which has been corrected.
* "git am -i --resolved" segfaulted after trying to see a commit as
if it were a tree, which has been corrected.
* "git bundle verify" needs to see if prerequisite objects exist in
the receiving repository, but the command did not check if we are
in a repository upfront, which has been corrected.
* "git merge --squash" is designed to update the working tree and the
index without creating the commit, and this cannot be countermanded
by adding the "--commit" option; the command now refuses to work
when both options are given.
* The data collected by fsmonitor was not properly written back to
the on-disk index file, breaking t7519 tests occasionally, which
has been corrected.
* Update to Unicode 12.1 width table.
* The command line to invoke a "git cat-file" command from inside
"git p4" was not properly quoted to protect a caret and running a
broken command on Windows, which has been corrected.
* "git request-pull" learned to warn when the ref we ask them to pull
from in the local repository and in the published repository are
different.
* When creating a partial clone, the object filtering criteria is
recorded for the origin of the clone, but this incorrectly used a
hardcoded name "origin" to name that remote; it has been corrected
to honor the "--origin <name>" option.
* "git fetch" into a lazy clone forgot to fetch base objects that are
necessary to complete delta in a thin packfile, which has been
corrected.
* The filter_data used in the list-objects-filter (which manages a
lazily sparse clone repository) did not use the dynamic array API
correctly---'nr' is supposed to point at one past the last element
of the array in use. This has been corrected.
* The description about slashes in gitignore patterns (used to
indicate things like "anchored to this level only" and "only
matches directories") has been revamped.
* The URL decoding code has been updated to avoid going past the end
of the string while parsing %-<hex>-<hex> sequence.
* The list of for-each like macros used by clang-format has been
updated.
* "git branch --list" learned to show branches that are checked out
in other worktrees connected to the same repository prefixed with
'+', similar to the way the currently checked out branch is shown
with '*' in front.
(merge 6e9381469e nb/branch-show-other-worktrees-head later to maint).
* Code restructuring during 2.20 period broke fetching tags via
"import" based transports.
* The commit-graph file is now part of the "files that the runtime
may keep open file descriptors on, all of which would need to be
closed when done with the object store", and the file descriptor to
an existing commit-graph file now is closed before "gc" finalizes a
new instance to replace it.
* "git checkout -p" needs to selectively apply a patch in reverse,
which did not work well.
* Code clean-up to avoid signed integer wraparounds during binary search.
* "git interpret-trailers" always treated '#' as the comment
character, regardless of core.commentChar setting, which has been
corrected.
* "git stash show 23" used to work, but no more after getting
rewritten in C; this regression has been corrected.
* "git rebase --abort" used to leave refs/rewritten/ when concluding
"git rebase -r", which has been corrected.
* An incorrect list of options was cached after command line
completion failed (e.g. trying to complete a command that requires
a repository outside one), which has been corrected.
* The code to parse scaled numbers out of configuration files has
been made more robust and also easier to follow.
* The codepath to compute delta islands used to spew progress output
without giving the callers any way to squelch it, which has been
fixed.
* Protocol capabilities that go over wire should never be translated,
but it was incorrectly marked for translation, which has been
corrected. The output of protocol capabilities for debugging has
been tweaked a bit.
* Use "Erase in Line" CSI sequence that is already used in the editor
support to clear cruft in the progress output.
* "git submodule foreach" did not protect command line options passed
to the command to be run in each submodule correctly, when the
"--recursive" option was in use.
* The configuration variable rebase.rescheduleFailedExec should be
effective only while running an interactive rebase and should not
affect anything when running a non-interactive one, which was not
the case. This has been corrected.
* The "git clone" documentation refers to command line options in its
description in the short form; they have been replaced with long
forms to make them more recognisable.
* Generation of pack bitmaps are now disabled when .keep files exist,
as these are mutually exclusive features.
(merge 7328482253 ew/repack-with-bitmaps-by-default later to maint).
* "git rm" to resolve a conflicted path leaked an internal message
"needs merge" before actually removing the path, which was
confusing. This has been corrected.
* "git stash --keep-index" did not work correctly on paths that have
been removed, which has been fixed.
(merge b932f6a5e8 tg/stash-keep-index-with-removed-paths later to maint).
* Window 7 update ;-)
* A codepath that reads from GPG for signed object verification read
past the end of allocated buffer, which has been fixed.
* "git clean" silently skipped a path when it cannot lstat() it; now
it gives a warning.
* "git push --atomic" that goes over the transport-helper (namely,
the smart http transport) failed to prevent refs to be pushed when
it can locally tell that one of the ref update will fail without
having to consult the other end, which has been corrected.
* The internal diff machinery can be made to read out of bounds while
looking for --function-context line in a corner case, which has been
corrected.
(merge b777f3fd61 jk/xdiff-clamp-funcname-context-index later to maint).
* Other code cleanup, docfix, build fix, etc.
(merge fbec05c210 cc/test-oidmap later to maint).
(merge 7a06fb038c jk/no-system-includes-in-dot-c later to maint).
(merge 81ed2b405c cb/xdiff-no-system-includes-in-dot-c later to maint).
(merge d61e6ce1dd sg/fsck-config-in-doc later to maint).
----------------------------------------------------------------
Changes since v2.22.0 are as follows:
Ariadne Conill (3):
log: add warning for unspecified log.mailmap setting
documentation: mention --no-use-mailmap and log.mailmap false setting
tests: defang pager tests by explicitly disabling the log.mailmap warning
Barret Rhoden (8):
fsck: rename and touch up init_skiplist()
Move oidset_parse_file() to oidset.c
blame: use a helper function in blame_chunk()
blame: add the ability to ignore commits and their changes
blame: add config options for the output of ignored or unblamable lines
blame: optionally track line fingerprints during fill_blame_origin()
blame: use the fingerprint heuristic to match ignored lines
blame: add a test to cover blame_coalesce()
Beat Bolli (2):
unicode: update the width tables to Unicode 12.1
grep: print the pcre2_jit_on value
Ben Avison (1):
clone: add `--remote-submodules` flag
Boxuan Li (2):
userdiff: add Octave
userdiff: fix grammar and style issues
Carlo Marcelo Arenas Belón (6):
fsmonitor: avoid signed integer overflow / infinite loop
wrapper: avoid undefined behaviour in macOS
trace2: correct typo in technical documentation
xdiff: drop system includes in xutils.c
xdiff: remove duplicate headers from xhistogram.c
xdiff: remove duplicate headers from xpatience.c
Cesar Eduardo Barros (1):
mingw: embed a manifest to trick UAC into Doing The Right Thing
Chris Mayo (1):
send-email: update documentation of required Perl modules
Christian Couder (7):
t/helper: add test-oidmap.c
t: add t0016-oidmap.sh
oidmap: use sha1hash() instead of static hash() function
test-hashmap: remove 'hash' command
doc: improve usage string in MyFirstContribution
test-oidmap: remove 'add' subcommand
t0016: add 'remove' subcommand test
Daniel Ferreira (1):
dir-iterator: add tests for dir-iterator API
Denton Liu (5):
git-format-patch.txt: document --no-notes option
format-patch: teach format.notes config option
config: learn the "onbranch:" includeIf condition
config/alias.txt: change " and ' to `
config/alias.txt: document alias accepting non-command first word
Derrick Stolee (51):
commit-graph: fix the_repository reference
revision: use generation for A..B --topo-order queries
revision: keep topo-walk free of unintersting commits
sha1-file: split OBJECT_INFO_FOR_PREFETCH
repack: refactor pack deletion for future use
Docs: rearrange subcommands for multi-pack-index
multi-pack-index: prepare for 'expire' subcommand
midx: simplify computation of pack name lengths
midx: refactor permutation logic and pack sorting
multi-pack-index: implement 'expire' subcommand
multi-pack-index: prepare 'repack' subcommand
midx: implement midx_repack()
multi-pack-index: test expire while adding packs
midx: add test that 'expire' respects .keep files
t5319-multi-pack-index.sh: test batch size zero
commit-graph: return with errors during write
commit-graph: collapse parameters into flags
commit-graph: remove Future Work section
commit-graph: create write_commit_graph_context
commit-graph: extract fill_oids_from_packs()
commit-graph: extract fill_oids_from_commit_hex()
commit-graph: extract fill_oids_from_all_packs()
commit-graph: extract count_distinct_commits()
commit-graph: extract copy_oids_to_commits()
commit-graph: extract write_commit_graph_file()
commit-graph: use raw_object_store when closing
packfile: close commit-graph in close_all_packs
packfile: rename close_all_packs to close_object_store
commit-graph: document commit-graph chains
commit-graph: prepare for commit-graph chains
commit-graph: rename commit_compare to oid_compare
commit-graph: load commit-graph chains
commit-graph: add base graphs chunk
commit-graph: rearrange chunk count logic
commit-graph: write commit-graph chains
commit-graph: add --split option to builtin
commit-graph: merge commit-graph chains
commit-graph: allow cross-alternate chains
commit-graph: expire commit-graph files
commit-graph: create options for split files
commit-graph: verify chains with --shallow mode
commit-graph: clean up chains after flattened write
commit-graph: test octopus merges with --split
commit-graph: test --split across alternate without --split
commit-graph: normalize commit-graph filenames
commit-graph: test verify across alternates
fetch: add --[no-]show-forced-updates argument
fetch: warn about forced updates in branch listing
pull: add --[no-]show-forced-updates passthrough
t5319: use 'test-tool path-utils' instead of 'ls -l'
commit-graph: fix bug around octopus merges
Dimitriy Ryazantcev (1):
l10n: localizable upload progress messages
Doug Ilijev (1):
README: fix rendering of text in angle brackets
Dr. Adam Nielsen (1):
gitignore.txt: make slash-rules more readable
Edmundo Carmona Antoranz (1):
builtin/merge.c - cleanup of code in for-cycle that tests strategies
Elijah Newren (6):
t9350: fix encoding test to actually test reencoding
fast-import: support 'encoding' commit header
fast-export: avoid stripping encoding header if we cannot reencode
fast-export: differentiate between explicitly UTF-8 and implicitly UTF-8
fast-export: do automatic reencoding of commit messages only if requested
merge-recursive: avoid directory rename detection in recursive case
Emily Shaffer (7):
documentation: add tutorial for first contribution
documentation: add anchors to MyFirstContribution
grep: fail if call could output and name is null
doc: hint about GIT_DEBUGGER in CodingGuidelines
doc: add some nit fixes to MyFirstContribution
rev-list: teach --no-object-names to enable piping
transport-helper: enforce atomic in push_refs_with_push
Eric Wong (3):
update-server-info: avoid needless overwrites
server-info: do not list unlinked packs
repack: disable bitmaps-by-default if .keep files exist
Felipe Contreras (5):
t5801 (remote-helpers): cleanup refspec stuff
t5801 (remote-helpers): add test to fetch tags
fetch: trivial cleanup
fetch: make the code more understandable
fetch: fix regression with transport helpers
Jakub Wilk (1):
doc: don't use git.kernel.org as example gitweb URL
Jean-Noël Avila (1):
l10n: reformat some localized strings for v2.23.0
Jeff Hostetler (13):
cache-tree/blame: avoid reusing the DEBUG constant
msvc: mark a variable as non-const
msvc: do not re-declare the timespec struct
msvc: define ftello()
msvc: fix detect_msys_tty()
msvc: update Makefile to allow for spaces in the compiler path
status: add status.aheadbehind setting
status: warn when a/b calculation takes too long
status: ignore status.aheadbehind in porcelain formats
msvc: support building Git using MS Visual C++
msvc: add a compile-time flag to allow detailed heap debugging
msvc: do not pretend to support all signals
msvc: ignore .dll and incremental compile output
Jeff King (57):
cmd_{read,write}_tree: rename "unused" variable that is used
builtin: consistently pass cmd_* prefix to parse_options
submodule: drop unused prefix parameter from some functions
clone: drop dest parameter from copy_alternates()
read-cache: drop unused parameter from threaded load
wt-status: drop unused status parameter
mktree: drop unused length parameter
name-rev: drop unused parameters from is_better_name()
pack-objects: drop unused rev_info parameters
receive-pack: drop unused "commands" from prepare_shallow_update()
remove_all_fetch_refspecs(): drop unused "remote" parameter
rev-list: drop unused void pointer from finish_commit()
show-branch: drop unused parameter from show_independent()
verify-commit: simplify parameters to run_gpg_verify()
help_unknown_ref(): duplicate collected refnames
help_unknown_ref(): check for refname ambiguity
upload-pack: strip namespace from symref data
am: simplify prompt response handling
am: read interactive input from stdin
am: drop tty requirement for --interactive
am: fix --interactive HEAD tree resolution
interpret-trailers: load default config
verify-tag: drop signal.h include
wt-status.h: drop stdio.h include
describe: fix accidental oid/hash type-punning
upload-pack: rename a "sha1" variable to "oid"
pack-bitmap-write: convert some helpers to use object_id
pack-objects: convert packlist_find() to use object_id
pack-objects: convert locate_object_entry_hash() to object_id
object: convert lookup_unknown_object() to use object_id
object: convert lookup_object() to use object_id
object: convert internal hash_obj() to object_id
object: convert create_object() to use object_id
khash: drop broken oid_map typedef
khash: rename kh_oid_t to kh_oid_set
delta-islands: convert island_marks khash to use oids
pack-bitmap: convert khash_sha1 maps into kh_oid_map
khash: drop sha1-specific map types
khash: rename oid helper functions
hash.h: move object_id definition from cache.h
hashmap: convert sha1hash() to oidhash()
delta-islands: respect progress flag
blame: drop some unused function parameters
object-store.h: move for_each_alternate_ref() from transport.h
check_everything_connected: assume alternate ref tips are valid
test-lib: introduce test_commit_bulk
t5310: increase the number of bitmapped commits
t3311: use test_commit_bulk
t5702: use test_commit_bulk
t5703: use test_commit_bulk
t6200: use test_commit_bulk
xdiff: clamp function context indices in post-image
t: sort output of hashmap iteration
t7700: clean up .keep file in bitmap-writing test
repack: silence warnings when auto-enabled bitmaps cannot be built
repack: simplify handling of auto-bitmaps and .keep files
t0000: reword comments for "local" test
Johannes Schindelin (47):
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
bisect--helper: verify HEAD could be parsed before continuing
fill_stat_cache_info(): prepare for an fsmonitor fix
mark_fsmonitor_valid(): mark the index as changed if needed
bundle verify: error out if called without an object database
poll (mingw): allow compiling with GCC 8 and DEVELOPER=1
kwset: allow building with GCC 8
winansi: simplify loading the GetCurrentConsoleFontEx() function
config: avoid calling `labs()` on too-large data type
t3404: fix a typo
mingw: fix a typo in the msysGit-specific section
Mark .bat files as requiring CR/LF endings
t0001 (mingw): do not expect a specific order of stdout/stderr
obstack: fix compiler warning
mingw: replace mingw_startup() hack
msvc: fix dependencies of compat/msvc.c
t0001: fix on case-insensitive filesystems
msvc: avoid debug assertion windows in Debug Mode
mingw: enable stack smashing protector
mingw: get pw_name in UTF-8 format
mingw: use Unicode functions explicitly
rebase --am: ignore rebase.rescheduleFailedExec
mingw: fix possible buffer overrun when calling `GetUserNameW()`
diff: munmap() file contents before running external diff
mingw: support spawning programs containing spaces in their names
clean: show an error message when the path is too long
rebase: fix white-space
git: mark cmd_rebase as requiring a worktree
Vcproj.pm: auto-generate GUIDs
Vcproj.pm: do not configure VCWebServiceProxyGeneratorTool
Vcproj.pm: urlencode '<' and '>' when generating VC projects
contrib/buildsystems: ignore irrelevant files in Generators/
contrib/buildsystems: error out on unknown option
contrib/buildsystems: handle libiconv, too
contrib/buildsystems: also handle -lexpat
contrib/buildsystems: handle options starting with a slash
contrib/buildsystems: add a backend for modern Visual Studio versions
msvc: add a Makefile target to pre-generate the Visual Studio solution
vcxproj: also link-or-copy builtins
.gitignore: ignore Visual Studio's temporary/generated files
bin-wrappers: append `.exe` to target paths if necessary
git: avoid calling aliased builtins via their dashed form
config: work around bug with includeif:onbranch and early config
Johannes Sixt (5):
userdiff: two simplifications of patterns for rust
t7610-mergetool: do not place pipelines headed by `yes` in subshells
t7610-mergetool: use test_cmp instead of test $(cat file) = $txt
mergetool: dissect strings with shell variable magic instead of `expr`
mergetool: use shell variable magic instead of `awk`
John Lin (1):
status: remove the empty line after hints
Jonathan Nieder (1):
t: decrease nesting in test_oid_to_path
Jonathan Tan (5):
t5616: refactor packfile replacement
index-pack: prefetch missing REF_DELTA bases
t5616: use correct flag to check object is missing
t5616: cover case of client having delta base
t5551: test usage of chunked encoding explicitly
Josh Steadmon (1):
trace2: correct trace2 field name documentation
Junio C Hamano (19):
The first batch after 2.22
The second batch
The third batch
The fourth batch
The fifth batch
transport-helper: avoid var decl in for () loop control
rm: resolving by removal is not a warning-worthy event
CodingGuidelines: spell out post-C89 rules
The sixth batch
The seventh batch
Flush fixes up to the third batch post 2.22.0
Merge fixes made on the 'master' front
Git 2.23-rc0
test-dir-iterator: do not assume errno values
A few more last-minute fixes
log: flip the --mailmap default unconditionally
log: really flip the --mailmap default
Git 2.23-rc1
Git 2.23-rc2
Karsten Blees (2):
gettext: always use UTF-8 on native Windows
mingw: initialize HOME on startup
Marc-André Lureau (1):
userdiff: add built-in pattern for rust
Mark Rushakoff (1):
doc: typo: s/can not/cannot/ and s/is does/does/
Martin Ågren (3):
ref-filter: fix memory leak in `free_array_item()`
RelNotes/2.21.1: typofix
RelNotes/2.23.0: fix a few typos and other minor issues
Matheus Tavares (8):
clone: better handle symlinked files at .git/objects/
dir-iterator: use warning_errno when possible
dir-iterator: refactor state machine model
dir-iterator: add flags parameter to dir_iterator_begin
clone: copy hidden paths at local clone
clone: extract function from copy_or_link_directory
clone: use dir-iterator to avoid explicit dir traversal
clone: replace strcmp by fspathcmp
Matthew DeVore (5):
list-objects-filter-options: error is localizeable
list-objects-filter: correct usage of ALLOC_GROW
url: do not read past end of buffer
url: do not allow %00 to represent NUL in URLs
ref-filter: sort detached HEAD lines firstly
Mazo, Andrey (8):
git-p4: detect/prevent infinite loop in gitCommitByP4Change()
git-p4: add failing test for "git-p4: match branches case insensitively if configured"
git-p4: match branches case insensitively if configured
git-p4: don't groom exclude path list on every commit
git-p4: add failing test for "don't exclude other files with same prefix"
git-p4: don't exclude other files with same prefix
git-p4: add failing test for "git-p4: respect excluded paths when detecting branches"
git-p4: respect excluded paths when detecting branches
Michael Osipov (1):
configure: Detect linking style for HP aCC on HP-UX
Michael Platings (2):
blame: add a fingerprint heuristic to match ignored lines
t8014: remove unnecessary braces
Miguel Ojeda (1):
clang-format: use git grep to generate the ForEachMacros list
Mike Hommey (2):
dup() the input fd for fast-import used for remote helpers
Use xmmap_gently instead of xmmap in use_pack
Mike Mueller (1):
p4 unshelve: fix "Not a valid object name HEAD0" on Windows
Morian Sonnet (1):
submodule foreach: fix recursion of options
Nguyễn Thái Ngọc Duy (63):
git-checkout.txt: spell out --no-option
git-checkout.txt: fix one syntax line
doc: document --overwrite-ignore
git-checkout.txt: fix monospace typeset
t: rename t2014-switch.sh to t2014-checkout-switch.sh
checkout: advice how to get out of detached HEAD mode
checkout: inform the user when removing branch state
checkout: keep most #include sorted
checkout: factor out some code in parse_branchname_arg()
checkout: make "opts" in cmd_checkout() a pointer
checkout: move 'confict_style' and 'dwim_..' to checkout_opts
checkout: split options[] array in three pieces
checkout: split part of it to new command 'switch'
switch: better names for -b and -B
switch: add --discard-changes
switch: remove -l
switch: stop accepting pathspec
switch: reject "do nothing" case
switch: only allow explicit detached HEAD
switch: add short option for --detach
switch: implicit dwim, use --no-guess to disable it
switch: no worktree status unless real branch switch happens
switch: reject if some operation is in progress
switch: make --orphan switch to an empty tree
t: add tests for switch
completion: support switch
doc: promote "git switch"
checkout: split part of it to new command 'restore'
restore: take tree-ish from --source option instead
restore: make pathspec mandatory
restore: disable overlay mode by default
checkout: factor out worktree checkout code
restore: add --worktree and --staged
restore: reject invalid combinations with --staged
restore: default to --source=HEAD when only --staged is specified
restore: replace --force with --ignore-unmerged
restore: support --patch
t: add tests for restore
completion: support restore
user-manual.txt: prefer 'merge --abort' over 'reset --hard'
doc: promote "git restore"
help: move git-diff and git-reset to different groups
Declare both git-switch and git-restore experimental
merge: remove drop_save() in favor of remove_merge_branch_state()
init: make --template path relative to $CWD
worktree add: sanitize worktree names
worktree add: be tolerant of corrupt worktrees
merge: add --quit
completion: do not cache if --git-completion-helper fails
fetch: only run 'gc' once when fetching multiple remotes
t2027: use test_must_be_empty
switch: allow to switch in the middle of bisect
completion: disable dwim on "git switch -d"
fetch-pack: move capability names out of i18n strings
fetch-pack: print all relevant supported capabilities with -v -v
fetch-pack: print server version at the top in -v -v
sha1-file.c: remove the_repo from read_object_with_reference()
tree-walk.c: remove the_repo from fill_tree_descriptor()
tree-walk.c: remove the_repo from get_tree_entry()
tree-walk.c: remove the_repo from get_tree_entry_follow_symlinks()
match-trees.c: remove the_repo from shift_tree*()
Use the right 'struct repository' instead of the_repository
t7814: do not generate same commits in different repos
Nickolai Belakovski (3):
ref-filter: add worktreepath atom
branch: update output to include worktree info
branch: add worktree info on verbose output
Paolo Bonzini (2):
request-pull: quote regex metacharacters in local ref
request-pull: warn if the remote object is not the same as the local one
Philip Oakley (15):
git.c: show usage for accessing the git(1) help page
Doc: git.txt: remove backticks from link and add git-scm.com/docs
doc branch: provide examples for listing remote tracking branches
msvc: include sigset_t definition
msvc: define O_ACCMODE
msvc: add pragmas for common warnings
Vcproj.pm: list git.exe first to be startup project
contrib/buildsystems: ignore invalidcontinue.obj
contrib/buildsystems: fix misleading error message
contrib/buildsystems: handle quoted spaces in filenames
contrib/buildsystems: ignore gettext stuff
contrib/buildsystems: redirect errors of the dry run into a log file
contrib/buildsystems: optionally capture the dry-run in a file
contrib/buildsystems: handle the curl library option
.gitignore: touch up the entries regarding Visual Studio
Phillip Wood (12):
rebase: fix a memory leak
rebase: warn if state directory cannot be removed
sequencer: return errors from sequencer_remove_state()
rebase --abort/--quit: cleanup refs/rewritten
rebase -r: always reword merge -c
add -p: fix checkout -p with pathological context
show --continue/skip etc. consistently in synopsis
sequencer: always allow tab after command name
sequencer: factor out todo command name parsing
status: do not report errors in sequencer/todo
git-prompt: improve cherry-pick/revert detection
t3420: remove progress lines before comparing output
Quentin Nerden (2):
docs: git-clone: refer to long form of options
docs: git-clone: list short form of options first
Ramsay Jones (1):
env--helper: mark a file-local symbol as static
René Scharfe (10):
cleanup: fix possible overflow errors in binary search, part 2
coccinelle: use COPY_ARRAY for copying arrays
use COPY_ARRAY for copying arrays
config: use unsigned_mult_overflows to check for overflows
config: don't multiply in parse_unit_factor()
config: simplify parsing of unit factors
commit-graph: release strbufs after use
dir-iterator: release strbuf after use
test-dir-iterator: use path argument directly
sha1-file: release strbuf after use
Robert Morgan (1):
gpg(docs): use correct --verify syntax
Rohit Ashiwal (5):
sequencer: add advice for revert
sequencer: rename reset_for_rollback to reset_merge
sequencer: use argv_array in reset_merge
cherry-pick/revert: add --skip option
cherry-pick/revert: advise using --skip
SZEDER Gábor (12):
t3404: modernize here doc style
t3404: make the 'rebase.missingCommitsCheck=ignore' test more focused
pager: add a helper function to clear the last line in the terminal
t5551: use 'test_i18ngrep' to check translated output
rebase: fix garbled progress display with '-x'
progress: use term_clear_line()
Document that 'git -C ""' works and doesn't change directory
ci: don't update Homebrew
ci: disable Homebrew's auto cleanup
ci/lib.sh: update a comment about installed P4 and Git-LFS versions
travis-ci: build with GCC 4.8 as well
Documentation/git-fsck.txt: include fsck.* config variables
Simon Williams (1):
git-p4: allow unshelving of branched files
Stephen Boyd (2):
format-patch: inform user that patch-id generation is unstable
format-patch: make --base patch-id output stable
Steven Roberts (1):
gpg-interface: do not scan past the end of buffer
Taylor Blau (1):
ref-filter.c: find disjoint pattern prefixes
Thomas Gummerer (16):
stash: fix show referencing stash index
apply: replace marc.info link with public-inbox
apply: only pass required data to skip_tree_prefix
apply: only pass required data to git_header_name
apply: only pass required data to check_header_line
apply: only pass required data to find_name_*
apply: only pass required data to gitdiff_* functions
apply: make parse_git_diff_header public
range-diff: fix function parameter indentation
range-diff: split lines manually
range-diff: don't remove funcname from inner diff
range-diff: suppress line count in outer diff
range-diff: add section header instead of diff header
range-diff: add filename to inner diff
range-diff: add headers to the outer hunk header
stash: fix handling removed files with --keep-index
Tigran Mkrtchyan (1):
tag: add tag.gpgSign config option to force all tags be GPG-signed
Varun Naik (1):
read-cache.c: do not die if mmap fails
Vishal Verma (1):
merge: refuse --commit with --squash
William Chargin (1):
restore: fix typo in docs
Xin Li (1):
clone: respect user supplied origin name when setting up partial clone
brian m. carlson (10):
t: add helper to convert object IDs to paths
t1410: make hash size independent
t1450: make hash size independent
t5000: make hash independent
t6030: make test work with SHA-256
t0027: make hash size independent
t0090: make test pass with SHA-256
t1007: remove SHA1 prerequisites
t1710: make hash independent
t2203: avoid hard-coded object ID values
Ævar Arnfjörð Bjarmason (21):
send-email: move the read_config() function above getopts
send-email: rename the @bcclist variable for consistency
send-email: do defaults -> config -> getopt in that order
tests: add a special setup where prerequisites fail
Makefile: remove the NO_R_TO_GCC_LINKER flag
send-email: remove cargo-culted multi-patch pattern in tests
send-email: fix broken transferEncoding tests
send-email: document --no-[to|cc|bcc]
hash-object doc: stop mentioning git-cvsimport
send-email: fix regression in sendemail.identity parsing
Revert "test-lib: whitelist GIT_TR2_* in the environment"
config tests: simplify include cycle test
env--helper: new undocumented builtin wrapping git_env_*()
config.c: refactor die_bad_number() to not call gettext() early
t6040 test: stop using global "script" variable
tests: make GIT_TEST_GETTEXT_POISON a boolean
tests README: re-flow a previously changed paragraph
tests: replace test_tristate with "git env--helper"
tests: make GIT_TEST_FAIL_PREREQS a boolean
tests: mark two failing tests under FAIL_PREREQS
clone: test for our behavior on odd objects/* content
^ permalink raw reply [relevance 3%]
* Re: amend warnings with no changes staged
2019-08-06 2:16 7% ` Jonathan Nieder
2019-08-06 2:47 0% ` Junio C Hamano
@ 2019-08-06 4:19 0% ` Jeff King
1 sibling, 0 replies; 42+ results
From: Jeff King @ 2019-08-06 4:19 UTC (permalink / raw)
To: Jonathan Nieder; +Cc: Lukas Gross, git
On Mon, Aug 05, 2019 at 07:16:18PM -0700, Jonathan Nieder wrote:
> Lukas Gross wrote:
>
> > I had intended to stage commits but forgot to do so. Git responded
> > with a normal commit creation message, so I pushed to the remote to
> > begin a CI build. When the build failed for the same reason, I
> > realized I had forgotten to stage the changes. An additional line in
> > the response to the effect of “Warning: did you mean to amend with no
> > changes?” would be very helpful to shorten this feedback loop.
>
> On second thought:
>
> $ git commit --amend --no-edit
> [detached HEAD 33a3db8805] Git 2.23-rc1
> Author: Junio C Hamano <gitster@pobox.com>
> Date: Fri Aug 2 13:12:24 2019 -0700
> 2 files changed, 2 insertions(+), 1 deletion(-)
> $
>
> Some non-judgemental descriptive output like
>
> $ git commit --amend --no-edit
> No changes.
> $
>
> would address this case, without bothering people who are doing it
> intentionally. So I think there's room for a simple improvement here.
>
> Care to take a stab at it? builtin/commit.c would be the place to
> start.
I'm not clear on the situation from your second change. There are two
sets of changes to talk about here: the changes between the new commit
and its parent, and the changes between the original commit and the
amended version.
The output in your first example is showing the differences to the
parent. Do you mean in the second example that there are no changes to
the parent, and thus we say "No changes"? If not, then what happened to
that output? :)
And if so, then I don't think it is solving Lukas's problem. I imagine
the issue to be (because I have done this myself many times):
git commit -m 'buggy commit'
echo fix >>file.c
git commit --amend ;# oops, should have been "-a"
git push
But perhaps that gets to the heart of the matter. Could we perhaps be
providing a more detailed summary of what happened for an --amend? I.e.,
to summarize _both_ sets of changes (and if one set is empty, say so)?
I'm not quite sure how to make that readable. Something like:
$ git commit --amend
[master 5787bce] some commit subject
Date: Tue Aug 6 00:03:28 2019 -0400
Changes introduced by this commit (diff HEAD^):
1 file changed, 1 insertion(+)
create mode 100644 added-by-broken-commit
Changes from the amend commit (diff HEAD@{1}):
1 file changed, 1 insertion(+)
create mode 100644 added-during-amend
is pretty ugly. And anyway, because it's just the diffstat total, it's
hard to see whether it contains your changes or not (i.e., would you
notice if you forgot to stage 3 lines from some random file). OTOH, if
the common case we care about is just "you didn't stage anything as part
of the amend", then it would be enough to let you know (without making a
judgement about whether it's an error, since it may well be that you
were simply rewording the commit message).
-Peff
^ permalink raw reply [relevance 0%]
* Re: amend warnings with no changes staged
2019-08-06 2:47 0% ` Junio C Hamano
@ 2019-08-06 3:00 0% ` Jonathan Nieder
0 siblings, 0 replies; 42+ results
From: Jonathan Nieder @ 2019-08-06 3:00 UTC (permalink / raw)
To: Junio C Hamano; +Cc: Lukas Gross, git
Junio C Hamano wrote:
> Jonathan Nieder <jrnieder@gmail.com> writes:
>> Lukas Gross wrote:
>>> I had intended to stage commits but forgot to do so. Git responded
>>> with a normal commit creation message, so I pushed to the remote to
>>> begin a CI build. When the build failed for the same reason, I
>>> realized
[...]
>> $ git commit --amend --no-edit
>> [detached HEAD 33a3db8805] Git 2.23-rc1
>> Author: Junio C Hamano <gitster@pobox.com>
>> Date: Fri Aug 2 13:12:24 2019 -0700
>> 2 files changed, 2 insertions(+), 1 deletion(-)
>> $
>>
>> Some non-judgemental descriptive output like
>>
>> $ git commit --amend --no-edit
>> No changes.
>> $
>>
>> would address this case, without bothering people who are doing it
>> intentionally. So I think there's room for a simple improvement here.
>
> I do that to refresh the committer timestamp.
I do, too. The proposal is, paraphrasing,
$ git commit --amend --no-edit
Ah, I see that you want me to refresh the committer timestamp.
Done, as requested.
$
In other words:
[...]
> I am not
> yet convinced that "--amend --no-edit will become a no-op" is the
> final solution we want.
Not this.
Hoping that clarifies,
Jonathan
^ permalink raw reply [relevance 0%]
* Re: amend warnings with no changes staged
2019-08-06 2:16 7% ` Jonathan Nieder
@ 2019-08-06 2:47 0% ` Junio C Hamano
2019-08-06 3:00 0% ` Jonathan Nieder
2019-08-06 4:19 0% ` Jeff King
1 sibling, 1 reply; 42+ results
From: Junio C Hamano @ 2019-08-06 2:47 UTC (permalink / raw)
To: Jonathan Nieder; +Cc: Lukas Gross, git
Jonathan Nieder <jrnieder@gmail.com> writes:
> Lukas Gross wrote:
>
>> I had intended to stage commits but forgot to do so. Git responded
>> with a normal commit creation message, so I pushed to the remote to
>> begin a CI build. When the build failed for the same reason, I
>> realized I had forgotten to stage the changes. An additional line in
>> the response to the effect of “Warning: did you mean to amend with no
>> changes?” would be very helpful to shorten this feedback loop.
>
> On second thought:
>
> $ git commit --amend --no-edit
> [detached HEAD 33a3db8805] Git 2.23-rc1
> Author: Junio C Hamano <gitster@pobox.com>
> Date: Fri Aug 2 13:12:24 2019 -0700
> 2 files changed, 2 insertions(+), 1 deletion(-)
> $
>
> Some non-judgemental descriptive output like
>
> $ git commit --amend --no-edit
> No changes.
> $
>
> would address this case, without bothering people who are doing it
> intentionally. So I think there's room for a simple improvement here.
I do that to refresh the committer timestamp. Do I now have to say
something silly like
$ GIT_EDITOR=true git commit --amend
to defeat the above (mis)feature, or is there a cleaner workaround?
Obviously I'd prefer to see a solution that does not force existing
users to work around the new behaviour ;-)
> Care to take a stab at it? builtin/commit.c would be the place to
> start.
I'd suggest not to start it before we know what we want. I am not
yet convinced that "--amend --no-edit will become a no-op" is the
final solution we want.
^ permalink raw reply [relevance 0%]
* Re: amend warnings with no changes staged
@ 2019-08-06 2:16 7% ` Jonathan Nieder
2019-08-06 2:47 0% ` Junio C Hamano
2019-08-06 4:19 0% ` Jeff King
0 siblings, 2 replies; 42+ results
From: Jonathan Nieder @ 2019-08-06 2:16 UTC (permalink / raw)
To: Lukas Gross; +Cc: git
Lukas Gross wrote:
> I had intended to stage commits but forgot to do so. Git responded
> with a normal commit creation message, so I pushed to the remote to
> begin a CI build. When the build failed for the same reason, I
> realized I had forgotten to stage the changes. An additional line in
> the response to the effect of “Warning: did you mean to amend with no
> changes?” would be very helpful to shorten this feedback loop.
On second thought:
$ git commit --amend --no-edit
[detached HEAD 33a3db8805] Git 2.23-rc1
Author: Junio C Hamano <gitster@pobox.com>
Date: Fri Aug 2 13:12:24 2019 -0700
2 files changed, 2 insertions(+), 1 deletion(-)
$
Some non-judgemental descriptive output like
$ git commit --amend --no-edit
No changes.
$
would address this case, without bothering people who are doing it
intentionally. So I think there's room for a simple improvement here.
Care to take a stab at it? builtin/commit.c would be the place to
start.
Thanks and sorry for the roller-coaster,
Jonathan
^ permalink raw reply [relevance 7%]
* [ANNOUNCE] Git v2.23.0-rc1
@ 2019-08-02 22:06 3% Junio C Hamano
0 siblings, 0 replies; 42+ results
From: Junio C Hamano @ 2019-08-02 22:06 UTC (permalink / raw)
To: git; +Cc: Linux Kernel, git-packagers
A release candidate Git v2.23.0-rc1 is now available for testing
at the usual places. It is comprised of 471 non-merge commits
since v2.22.0, contributed by 63 people, 23 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.23.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.22.0 are as follows.
Welcome to the Git development community!
Ariadne Conill, Barret Rhoden, Ben Avison, Daniel Ferreira, Doug
Ilijev, Dr. Adam Nielsen, Jakub Wilk, John Lin, Matheus Tavares,
Mazo, Andrey, Michael Osipov, Michael Platings, Miguel Ojeda,
Mike Mueller, Morian Sonnet, Quentin Nerden, Robert Morgan,
Simon Williams, Steven Roberts, Tigran Mkrtchyan, Varun Naik,
Vishal Verma, and Xin Li.
Returning contributors who helped this release are as follows.
Thanks for your continued support.
Ævar Arnfjörð Bjarmason, Beat Bolli, Boxuan Li, brian
m. carlson, Carlo Marcelo Arenas Belón, Cesar Eduardo Barros,
Chris Mayo, Christian Couder, Denton Liu, Derrick Stolee,
Dimitriy Ryazantcev, Edmundo Carmona Antoranz, Elijah Newren,
Emily Shaffer, Eric Wong, Felipe Contreras, Jeff Hostetler,
Jeff King, Johannes Schindelin, Johannes Sixt, Jonathan Tan,
Josh Steadmon, Junio C Hamano, Karsten Blees, Marc-André Lureau,
Martin Ågren, Matthew DeVore, Mike Hommey, Nguyễn Thái Ngọc
Duy, Nickolai Belakovski, Paolo Bonzini, Philip Oakley, Phillip
Wood, Ramsay Jones, René Scharfe, Rohit Ashiwal, Stephen Boyd,
SZEDER Gábor, Taylor Blau, and Thomas Gummerer.
----------------------------------------------------------------
Git 2.23 Release Notes (draft)
==============================
Updates since v2.22
-------------------
Backward compatibility note
* The "--base" option of "format-patch" computed the patch-ids for
prerequisite patches in an unstable way, which has been updated to
compute in a way that is compatible with "git patch-id --stable".
* The "git log" command by default behaves as if the --mailmap option
was given.
UI, Workflows & Features
* The "git fast-export/import" pair has been taught to handle commits
with log messages in encoding other than UTF-8 better.
* In recent versions of Git, per-worktree refs are exposed in
refs/worktrees/<wtname>/ hierarchy, which means that worktree names
must be a valid refname component. The code now sanitizes the names
given to worktrees, to make sure these refs are well-formed.
* "git merge" learned "--quit" option that cleans up the in-progress
merge while leaving the working tree and the index still in a mess.
* "git format-patch" learns a configuration to set the default for
its --notes=<ref> option.
* The code to show args with potential typo that cannot be
interpreted as a commit-ish has been improved.
* "git clone --recurse-submodules" learned to set up the submodules
to ignore commit object names recorded in the superproject gitlink
and instead use the commits that happen to be at the tip of the
remote-tracking branches from the get-go, by passing the new
"--remote-submodules" option.
* The pattern "git diff/grep" use to extract funcname and words
boundary for Matlab has been extend to cover Octave, which is more
or less equivalent.
* "git help git" was hard to discover (well, at least for some
people).
* The pattern "git diff/grep" use to extract funcname and words
boundary for Rust has been added.
* "git status" can be told a non-standard default value for the
"--[no-]ahead-behind" option with a new configuration variable
status.aheadBehind.
* "git fetch" and "git pull" reports when a fetch results in
non-fast-forward updates to let the user notice unusual situation.
The commands learned "--no-show-forced-updates" option to disable
this safety feature.
* Two new commands "git switch" and "git restore" are introduced to
split "checking out a branch to work on advancing its history" and
"checking out paths out of the index and/or a tree-ish to work on
advancing the current history" out of the single "git checkout"
command.
* "git branch --list" learned to always output the detached HEAD as
the first item (when the HEAD is detached, of course), regardless
of the locale.
* The conditional inclusion mechanism learned to base the choice on
the branch the HEAD currently is on.
* "git rev-list --objects" learned the "--no-object-names" option to
squelch the path to the object that is used as a grouping hint for
pack-objects.
* A new tag.gpgSign configuration variable turns "git tag -a" into
"git tag -s".
* "git multi-pack-index" learned expire and repack subcommands.
* "git blame" learned to "ignore" commits in the history, whose
effects (as well as their presence) get ignored.
* "git cherry-pick/revert" learned a new "--skip" action.
* The tips of refs from the alternate object store can be used as
starting point for reachability computation now.
* Extra blank lines in "git status" output have been reduced.
* The commits in a repository can be described by multiple
commit-graph files now, which allows the commit-graph files to be
updated incrementally.
* "git range-diff" output has been tweaked for easier identification
of which part of what file the patch shown is about.
Performance, Internal Implementation, Development Support etc.
* Update supporting parts of "git rebase" to remove code that should
no longer be used.
* Developer support to emulate unsatisfied prerequisites in tests to
ensure that the remainder of the tests still succeeds when tests
with prerequisites are skipped.
* "git update-server-info" learned not to rewrite the file with the
same contents.
* The way of specifying the path to find dynamic libraries at runtime
has been simplified. The old default to pass -R/path/to/dir has been
replaced with the new default to pass -Wl,-rpath,/path/to/dir,
which is the more recent GCC uses. Those who need to build with an
old GCC can still use "CC_LD_DYNPATH=-R"
* Prepare use of reachability index in topological walker that works
on a range (A..B).
* A new tutorial targeting specifically aspiring git-core
developers has been added.
* Auto-detect how to tell HP-UX aCC where to use dynamically linked
libraries from at runtime.
* "git mergetool" and its tests now spawn fewer subprocesses.
* Dev support update to help tracing out tests.
* Support to build with MSVC has been updated.
* "git fetch" that grabs from a group of remotes learned to run the
auto-gc only once at the very end.
* A handful of Windows build patches have been upstreamed.
* The code to read state files used by the sequencer machinery for
"git status" has been made more robust against a corrupt or stale
state files.
* "git for-each-ref" with multiple patterns have been optimized.
* The tree-walk API learned to pass an in-core repository
instance throughout more codepaths.
* When one step in multi step cherry-pick or revert is reset or
committed, the command line prompt script failed to notice the
current status, which has been improved.
* Many GIT_TEST_* environment variables control various aspects of
how our tests are run, but a few followed "non-empty is true, empty
or unset is false" while others followed the usual "there are a few
ways to spell true, like yes, on, etc., and also ways to spell
false, like no, off, etc." convention.
* Adjust the dir-iterator API and apply it to the local clone
optimization codepath.
* We have been trying out a few language features outside c89; the
coding guidelines document did not talk about them and instead had
a blanket ban against them.
* A test helper has been introduced to optimize preparation of test
repositories with many simple commits, and a handful of test
scripts have been updated to use it.
Fixes since v2.22
-----------------
* A relative pathname given to "git init --template=<path> <repo>"
ought to be relative to the directory "git init" gets invoked in,
but it instead was made relative to the repository, which has been
corrected.
* "git worktree add" used to fail when another worktree connected to
the same repository was corrupt, which has been corrected.
* The ownership rule for the file descriptor to fast-import remote
backend was mixed up, leading to an unrelated file descriptor getting
closed, which has been fixed.
* A "merge -c" instruction during "git rebase --rebase-merges" should
give the user a chance to edit the log message, even when there is
otherwise no need to create a new merge and replace the existing
one (i.e. fast-forward instead), but did not. Which has been
corrected.
* Code cleanup and futureproof.
* More parameter validation.
* "git update-server-info" used to leave stale packfiles in its
output, which has been corrected.
* The server side support for "git fetch" used to show incorrect
value for the HEAD symbolic ref when the namespace feature is in
use, which has been corrected.
* "git am -i --resolved" segfaulted after trying to see a commit as
if it were a tree, which has been corrected.
* "git bundle verify" needs to see if prerequisite objects exist in
the receiving repository, but the command did not check if we are
in a repository upfront, which has been corrected.
* "git merge --squash" is designed to update the working tree and the
index without creating the commit, and this cannot be countermanded
by adding the "--commit" option; the command now refuses to work
when both options are given.
* The data collected by fsmonitor was not properly written back to
the on-disk index file, breaking t7519 tests occasionally, which
has been corrected.
* Update to Unicode 12.1 width table.
* The command line to invoke a "git cat-file" command from inside
"git p4" was not properly quoted to protect a caret and running a
broken command on Windows, which has been corrected.
* "git request-pull" learned to warn when the ref we ask them to pull
from in the local repository and in the published repository are
different.
* When creating a partial clone, the object filtering criteria is
recorded for the origin of the clone, but this incorrectly used a
hardcoded name "origin" to name that remote; it has been corrected
to honor the "--origin <name>" option.
* "git fetch" into a lazy clone forgot to fetch base objects that are
necessary to complete delta in a thin packfile, which has been
corrected.
* The filter_data used in the list-objects-filter (which manages a
lazily sparse clone repository) did not use the dynamic array API
correctly---'nr' is supposed to point at one past the last element
of the array in use. This has been corrected.
* The description about slashes in gitignore patterns (used to
indicate things like "anchored to this level only" and "only
matches directories") has been revamped.
* The URL decoding code has been updated to avoid going past the end
of the string while parsing %-<hex>-<hex> sequence.
* The list of for-each like macros used by clang-format has been
updated.
* "git branch --list" learned to show branches that are checked out
in other worktrees connected to the same repository prefixed with
'+', similar to the way the currently checked out branch is shown
with '*' in front.
(merge 6e9381469e nb/branch-show-other-worktrees-head later to maint).
* Code restructuring during 2.20 period broke fetching tags via
"import" based transports.
* The commit-graph file is now part of the "files that the runtime
may keep open file descriptors on, all of which would need to be
closed when done with the object store", and the file descriptor to
an existing commit-graph file now is closed before "gc" finalizes a
new instance to replace it.
* "git checkout -p" needs to selectively apply a patch in reverse,
which did not work well.
* Code clean-up to avoid signed integer wraparounds during binary search.
* "git interpret-trailers" always treated '#' as the comment
character, regardless of core.commentChar setting, which has been
corrected.
* "git stash show 23" used to work, but no more after getting
rewritten in C; this regression has been corrected.
* "git rebase --abort" used to leave refs/rewritten/ when concluding
"git rebase -r", which has been corrected.
* An incorrect list of options was cached after command line
completion failed (e.g. trying to complete a command that requires
a repository outside one), which has been corrected.
* The code to parse scaled numbers out of configuration files has
been made more robust and also easier to follow.
* The codepath to compute delta islands used to spew progress output
without giving the callers any way to squelch it, which has been
fixed.
* Protocol capabilities that go over wire should never be translated,
but it was incorrectly marked for translation, which has been
corrected. The output of protocol capabilities for debugging has
been tweaked a bit.
* Use "Erase in Line" CSI sequence that is already used in the editor
support to clear cruft in the progress output.
* "git submodule foreach" did not protect command line options passed
to the command to be run in each submodule correctly, when the
"--recursive" option was in use.
* The configuration variable rebase.rescheduleFailedExec should be
effective only while running an interactive rebase and should not
affect anything when running a non-interactive one, which was not
the case. This has been corrected.
* The "git clone" documentation refers to command line options in its
description in the short form; they have been replaced with long
forms to make them more recognisable.
* Generation of pack bitmaps are now disabled when .keep files exist,
as these are mutually exclusive features.
(merge 7328482253 ew/repack-with-bitmaps-by-default later to maint).
* "git rm" to resolve a conflicted path leaked an internal message
"needs merge" before actually removing the path, which was
confusing. This has been corrected.
* "git stash --keep-index" did not work correctly on paths that have
been removed, which has been fixed.
(merge b932f6a5e8 tg/stash-keep-index-with-removed-paths later to maint).
* Window 7 update ;-)
* A codepath that reads from GPG for signed object verification read
past the end of allocated buffer, which has been fixed.
* "git clean" silently skipped a path when it cannot lstat() it; now
it gives a warning.
* "git push --atomic" that goes over the transport-helper (namely,
the smart http transport) failed to prevent refs to be pushed when
it can locally tell that one of the ref update will fail without
having to consult the other end, which has been corrected.
* The internal diff machinery can be made to read out of bounds while
looking for --function-context line in a corner case, which has been
corrected.
(merge b777f3fd61 jk/xdiff-clamp-funcname-context-index later to maint).
* Other code cleanup, docfix, build fix, etc.
(merge fbec05c210 cc/test-oidmap later to maint).
(merge 7a06fb038c jk/no-system-includes-in-dot-c later to maint).
(merge 81ed2b405c cb/xdiff-no-system-includes-in-dot-c later to maint).
(merge d61e6ce1dd sg/fsck-config-in-doc later to maint).
----------------------------------------------------------------
Changes since v2.22.0 are as follows:
Ariadne Conill (3):
log: add warning for unspecified log.mailmap setting
documentation: mention --no-use-mailmap and log.mailmap false setting
tests: defang pager tests by explicitly disabling the log.mailmap warning
Barret Rhoden (8):
fsck: rename and touch up init_skiplist()
Move oidset_parse_file() to oidset.c
blame: use a helper function in blame_chunk()
blame: add the ability to ignore commits and their changes
blame: add config options for the output of ignored or unblamable lines
blame: optionally track line fingerprints during fill_blame_origin()
blame: use the fingerprint heuristic to match ignored lines
blame: add a test to cover blame_coalesce()
Beat Bolli (2):
unicode: update the width tables to Unicode 12.1
grep: print the pcre2_jit_on value
Ben Avison (1):
clone: add `--remote-submodules` flag
Boxuan Li (2):
userdiff: add Octave
userdiff: fix grammar and style issues
Carlo Marcelo Arenas Belón (6):
fsmonitor: avoid signed integer overflow / infinite loop
wrapper: avoid undefined behaviour in macOS
trace2: correct typo in technical documentation
xdiff: drop system includes in xutils.c
xdiff: remove duplicate headers from xhistogram.c
xdiff: remove duplicate headers from xpatience.c
Cesar Eduardo Barros (1):
mingw: embed a manifest to trick UAC into Doing The Right Thing
Chris Mayo (1):
send-email: update documentation of required Perl modules
Christian Couder (7):
t/helper: add test-oidmap.c
t: add t0016-oidmap.sh
oidmap: use sha1hash() instead of static hash() function
test-hashmap: remove 'hash' command
doc: improve usage string in MyFirstContribution
test-oidmap: remove 'add' subcommand
t0016: add 'remove' subcommand test
Daniel Ferreira (1):
dir-iterator: add tests for dir-iterator API
Denton Liu (5):
git-format-patch.txt: document --no-notes option
format-patch: teach format.notes config option
config: learn the "onbranch:" includeIf condition
config/alias.txt: change " and ' to `
config/alias.txt: document alias accepting non-command first word
Derrick Stolee (50):
commit-graph: fix the_repository reference
revision: use generation for A..B --topo-order queries
revision: keep topo-walk free of unintersting commits
sha1-file: split OBJECT_INFO_FOR_PREFETCH
repack: refactor pack deletion for future use
Docs: rearrange subcommands for multi-pack-index
multi-pack-index: prepare for 'expire' subcommand
midx: simplify computation of pack name lengths
midx: refactor permutation logic and pack sorting
multi-pack-index: implement 'expire' subcommand
multi-pack-index: prepare 'repack' subcommand
midx: implement midx_repack()
multi-pack-index: test expire while adding packs
midx: add test that 'expire' respects .keep files
t5319-multi-pack-index.sh: test batch size zero
commit-graph: return with errors during write
commit-graph: collapse parameters into flags
commit-graph: remove Future Work section
commit-graph: create write_commit_graph_context
commit-graph: extract fill_oids_from_packs()
commit-graph: extract fill_oids_from_commit_hex()
commit-graph: extract fill_oids_from_all_packs()
commit-graph: extract count_distinct_commits()
commit-graph: extract copy_oids_to_commits()
commit-graph: extract write_commit_graph_file()
commit-graph: use raw_object_store when closing
packfile: close commit-graph in close_all_packs
packfile: rename close_all_packs to close_object_store
commit-graph: document commit-graph chains
commit-graph: prepare for commit-graph chains
commit-graph: rename commit_compare to oid_compare
commit-graph: load commit-graph chains
commit-graph: add base graphs chunk
commit-graph: rearrange chunk count logic
commit-graph: write commit-graph chains
commit-graph: add --split option to builtin
commit-graph: merge commit-graph chains
commit-graph: allow cross-alternate chains
commit-graph: expire commit-graph files
commit-graph: create options for split files
commit-graph: verify chains with --shallow mode
commit-graph: clean up chains after flattened write
commit-graph: test octopus merges with --split
commit-graph: test --split across alternate without --split
commit-graph: normalize commit-graph filenames
commit-graph: test verify across alternates
fetch: add --[no-]show-forced-updates argument
fetch: warn about forced updates in branch listing
pull: add --[no-]show-forced-updates passthrough
t5319: use 'test-tool path-utils' instead of 'ls -l'
Dimitriy Ryazantcev (1):
l10n: localizable upload progress messages
Doug Ilijev (1):
README: fix rendering of text in angle brackets
Dr. Adam Nielsen (1):
gitignore.txt: make slash-rules more readable
Edmundo Carmona Antoranz (1):
builtin/merge.c - cleanup of code in for-cycle that tests strategies
Elijah Newren (5):
t9350: fix encoding test to actually test reencoding
fast-import: support 'encoding' commit header
fast-export: avoid stripping encoding header if we cannot reencode
fast-export: differentiate between explicitly UTF-8 and implicitly UTF-8
fast-export: do automatic reencoding of commit messages only if requested
Emily Shaffer (7):
documentation: add tutorial for first contribution
documentation: add anchors to MyFirstContribution
grep: fail if call could output and name is null
doc: hint about GIT_DEBUGGER in CodingGuidelines
doc: add some nit fixes to MyFirstContribution
rev-list: teach --no-object-names to enable piping
transport-helper: enforce atomic in push_refs_with_push
Eric Wong (3):
update-server-info: avoid needless overwrites
server-info: do not list unlinked packs
repack: disable bitmaps-by-default if .keep files exist
Felipe Contreras (5):
t5801 (remote-helpers): cleanup refspec stuff
t5801 (remote-helpers): add test to fetch tags
fetch: trivial cleanup
fetch: make the code more understandable
fetch: fix regression with transport helpers
Jakub Wilk (1):
doc: don't use git.kernel.org as example gitweb URL
Jeff Hostetler (13):
cache-tree/blame: avoid reusing the DEBUG constant
msvc: mark a variable as non-const
msvc: do not re-declare the timespec struct
msvc: define ftello()
msvc: fix detect_msys_tty()
msvc: update Makefile to allow for spaces in the compiler path
status: add status.aheadbehind setting
status: warn when a/b calculation takes too long
status: ignore status.aheadbehind in porcelain formats
msvc: support building Git using MS Visual C++
msvc: add a compile-time flag to allow detailed heap debugging
msvc: do not pretend to support all signals
msvc: ignore .dll and incremental compile output
Jeff King (56):
cmd_{read,write}_tree: rename "unused" variable that is used
builtin: consistently pass cmd_* prefix to parse_options
submodule: drop unused prefix parameter from some functions
clone: drop dest parameter from copy_alternates()
read-cache: drop unused parameter from threaded load
wt-status: drop unused status parameter
mktree: drop unused length parameter
name-rev: drop unused parameters from is_better_name()
pack-objects: drop unused rev_info parameters
receive-pack: drop unused "commands" from prepare_shallow_update()
remove_all_fetch_refspecs(): drop unused "remote" parameter
rev-list: drop unused void pointer from finish_commit()
show-branch: drop unused parameter from show_independent()
verify-commit: simplify parameters to run_gpg_verify()
help_unknown_ref(): duplicate collected refnames
help_unknown_ref(): check for refname ambiguity
upload-pack: strip namespace from symref data
am: simplify prompt response handling
am: read interactive input from stdin
am: drop tty requirement for --interactive
am: fix --interactive HEAD tree resolution
interpret-trailers: load default config
verify-tag: drop signal.h include
wt-status.h: drop stdio.h include
describe: fix accidental oid/hash type-punning
upload-pack: rename a "sha1" variable to "oid"
pack-bitmap-write: convert some helpers to use object_id
pack-objects: convert packlist_find() to use object_id
pack-objects: convert locate_object_entry_hash() to object_id
object: convert lookup_unknown_object() to use object_id
object: convert lookup_object() to use object_id
object: convert internal hash_obj() to object_id
object: convert create_object() to use object_id
khash: drop broken oid_map typedef
khash: rename kh_oid_t to kh_oid_set
delta-islands: convert island_marks khash to use oids
pack-bitmap: convert khash_sha1 maps into kh_oid_map
khash: drop sha1-specific map types
khash: rename oid helper functions
hash.h: move object_id definition from cache.h
hashmap: convert sha1hash() to oidhash()
delta-islands: respect progress flag
blame: drop some unused function parameters
object-store.h: move for_each_alternate_ref() from transport.h
check_everything_connected: assume alternate ref tips are valid
test-lib: introduce test_commit_bulk
t5310: increase the number of bitmapped commits
t3311: use test_commit_bulk
t5702: use test_commit_bulk
t5703: use test_commit_bulk
t6200: use test_commit_bulk
xdiff: clamp function context indices in post-image
t: sort output of hashmap iteration
t7700: clean up .keep file in bitmap-writing test
repack: silence warnings when auto-enabled bitmaps cannot be built
repack: simplify handling of auto-bitmaps and .keep files
Johannes Schindelin (47):
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
bisect--helper: verify HEAD could be parsed before continuing
fill_stat_cache_info(): prepare for an fsmonitor fix
mark_fsmonitor_valid(): mark the index as changed if needed
bundle verify: error out if called without an object database
poll (mingw): allow compiling with GCC 8 and DEVELOPER=1
kwset: allow building with GCC 8
winansi: simplify loading the GetCurrentConsoleFontEx() function
config: avoid calling `labs()` on too-large data type
t3404: fix a typo
mingw: fix a typo in the msysGit-specific section
Mark .bat files as requiring CR/LF endings
t0001 (mingw): do not expect a specific order of stdout/stderr
obstack: fix compiler warning
mingw: replace mingw_startup() hack
msvc: fix dependencies of compat/msvc.c
t0001: fix on case-insensitive filesystems
msvc: avoid debug assertion windows in Debug Mode
mingw: enable stack smashing protector
mingw: get pw_name in UTF-8 format
mingw: use Unicode functions explicitly
rebase --am: ignore rebase.rescheduleFailedExec
mingw: fix possible buffer overrun when calling `GetUserNameW()`
diff: munmap() file contents before running external diff
mingw: support spawning programs containing spaces in their names
clean: show an error message when the path is too long
rebase: fix white-space
git: mark cmd_rebase as requiring a worktree
Vcproj.pm: auto-generate GUIDs
Vcproj.pm: do not configure VCWebServiceProxyGeneratorTool
Vcproj.pm: urlencode '<' and '>' when generating VC projects
contrib/buildsystems: ignore irrelevant files in Generators/
contrib/buildsystems: error out on unknown option
contrib/buildsystems: handle libiconv, too
contrib/buildsystems: also handle -lexpat
contrib/buildsystems: handle options starting with a slash
contrib/buildsystems: add a backend for modern Visual Studio versions
msvc: add a Makefile target to pre-generate the Visual Studio solution
vcxproj: also link-or-copy builtins
.gitignore: ignore Visual Studio's temporary/generated files
bin-wrappers: append `.exe` to target paths if necessary
git: avoid calling aliased builtins via their dashed form
config: work around bug with includeif:onbranch and early config
Johannes Sixt (5):
userdiff: two simplifications of patterns for rust
t7610-mergetool: do not place pipelines headed by `yes` in subshells
t7610-mergetool: use test_cmp instead of test $(cat file) = $txt
mergetool: dissect strings with shell variable magic instead of `expr`
mergetool: use shell variable magic instead of `awk`
John Lin (1):
status: remove the empty line after hints
Jonathan Tan (5):
t5616: refactor packfile replacement
index-pack: prefetch missing REF_DELTA bases
t5616: use correct flag to check object is missing
t5616: cover case of client having delta base
t5551: test usage of chunked encoding explicitly
Josh Steadmon (1):
trace2: correct trace2 field name documentation
Junio C Hamano (18):
The first batch after 2.22
The second batch
The third batch
The fourth batch
The fifth batch
transport-helper: avoid var decl in for () loop control
rm: resolving by removal is not a warning-worthy event
CodingGuidelines: spell out post-C89 rules
The sixth batch
The seventh batch
Flush fixes up to the third batch post 2.22.0
Merge fixes made on the 'master' front
Git 2.23-rc0
test-dir-iterator: do not assume errno values
A few more last-minute fixes
log: flip the --mailmap default unconditionally
log: really flip the --mailmap default
Git 2.23-rc1
Karsten Blees (2):
gettext: always use UTF-8 on native Windows
mingw: initialize HOME on startup
Marc-André Lureau (1):
userdiff: add built-in pattern for rust
Martin Ågren (3):
ref-filter: fix memory leak in `free_array_item()`
RelNotes/2.21.1: typofix
RelNotes/2.23.0: fix a few typos and other minor issues
Matheus Tavares (8):
clone: better handle symlinked files at .git/objects/
dir-iterator: use warning_errno when possible
dir-iterator: refactor state machine model
dir-iterator: add flags parameter to dir_iterator_begin
clone: copy hidden paths at local clone
clone: extract function from copy_or_link_directory
clone: use dir-iterator to avoid explicit dir traversal
clone: replace strcmp by fspathcmp
Matthew DeVore (5):
list-objects-filter-options: error is localizeable
list-objects-filter: correct usage of ALLOC_GROW
url: do not read past end of buffer
url: do not allow %00 to represent NUL in URLs
ref-filter: sort detached HEAD lines firstly
Mazo, Andrey (8):
git-p4: detect/prevent infinite loop in gitCommitByP4Change()
git-p4: add failing test for "git-p4: match branches case insensitively if configured"
git-p4: match branches case insensitively if configured
git-p4: don't groom exclude path list on every commit
git-p4: add failing test for "don't exclude other files with same prefix"
git-p4: don't exclude other files with same prefix
git-p4: add failing test for "git-p4: respect excluded paths when detecting branches"
git-p4: respect excluded paths when detecting branches
Michael Osipov (1):
configure: Detect linking style for HP aCC on HP-UX
Michael Platings (2):
blame: add a fingerprint heuristic to match ignored lines
t8014: remove unnecessary braces
Miguel Ojeda (1):
clang-format: use git grep to generate the ForEachMacros list
Mike Hommey (2):
dup() the input fd for fast-import used for remote helpers
Use xmmap_gently instead of xmmap in use_pack
Mike Mueller (1):
p4 unshelve: fix "Not a valid object name HEAD0" on Windows
Morian Sonnet (1):
submodule foreach: fix recursion of options
Nguyễn Thái Ngọc Duy (63):
git-checkout.txt: spell out --no-option
git-checkout.txt: fix one syntax line
doc: document --overwrite-ignore
git-checkout.txt: fix monospace typeset
t: rename t2014-switch.sh to t2014-checkout-switch.sh
checkout: advice how to get out of detached HEAD mode
checkout: inform the user when removing branch state
checkout: keep most #include sorted
checkout: factor out some code in parse_branchname_arg()
checkout: make "opts" in cmd_checkout() a pointer
checkout: move 'confict_style' and 'dwim_..' to checkout_opts
checkout: split options[] array in three pieces
checkout: split part of it to new command 'switch'
switch: better names for -b and -B
switch: add --discard-changes
switch: remove -l
switch: stop accepting pathspec
switch: reject "do nothing" case
switch: only allow explicit detached HEAD
switch: add short option for --detach
switch: implicit dwim, use --no-guess to disable it
switch: no worktree status unless real branch switch happens
switch: reject if some operation is in progress
switch: make --orphan switch to an empty tree
t: add tests for switch
completion: support switch
doc: promote "git switch"
checkout: split part of it to new command 'restore'
restore: take tree-ish from --source option instead
restore: make pathspec mandatory
restore: disable overlay mode by default
checkout: factor out worktree checkout code
restore: add --worktree and --staged
restore: reject invalid combinations with --staged
restore: default to --source=HEAD when only --staged is specified
restore: replace --force with --ignore-unmerged
restore: support --patch
t: add tests for restore
completion: support restore
user-manual.txt: prefer 'merge --abort' over 'reset --hard'
doc: promote "git restore"
help: move git-diff and git-reset to different groups
Declare both git-switch and git-restore experimental
merge: remove drop_save() in favor of remove_merge_branch_state()
init: make --template path relative to $CWD
worktree add: sanitize worktree names
worktree add: be tolerant of corrupt worktrees
merge: add --quit
completion: do not cache if --git-completion-helper fails
fetch: only run 'gc' once when fetching multiple remotes
t2027: use test_must_be_empty
switch: allow to switch in the middle of bisect
completion: disable dwim on "git switch -d"
fetch-pack: move capability names out of i18n strings
fetch-pack: print all relevant supported capabilities with -v -v
fetch-pack: print server version at the top in -v -v
sha1-file.c: remove the_repo from read_object_with_reference()
tree-walk.c: remove the_repo from fill_tree_descriptor()
tree-walk.c: remove the_repo from get_tree_entry()
tree-walk.c: remove the_repo from get_tree_entry_follow_symlinks()
match-trees.c: remove the_repo from shift_tree*()
Use the right 'struct repository' instead of the_repository
t7814: do not generate same commits in different repos
Nickolai Belakovski (3):
ref-filter: add worktreepath atom
branch: update output to include worktree info
branch: add worktree info on verbose output
Paolo Bonzini (2):
request-pull: quote regex metacharacters in local ref
request-pull: warn if the remote object is not the same as the local one
Philip Oakley (15):
git.c: show usage for accessing the git(1) help page
Doc: git.txt: remove backticks from link and add git-scm.com/docs
doc branch: provide examples for listing remote tracking branches
msvc: include sigset_t definition
msvc: define O_ACCMODE
msvc: add pragmas for common warnings
Vcproj.pm: list git.exe first to be startup project
contrib/buildsystems: ignore invalidcontinue.obj
contrib/buildsystems: fix misleading error message
contrib/buildsystems: handle quoted spaces in filenames
contrib/buildsystems: ignore gettext stuff
contrib/buildsystems: redirect errors of the dry run into a log file
contrib/buildsystems: optionally capture the dry-run in a file
contrib/buildsystems: handle the curl library option
.gitignore: touch up the entries regarding Visual Studio
Phillip Wood (12):
rebase: fix a memory leak
rebase: warn if state directory cannot be removed
sequencer: return errors from sequencer_remove_state()
rebase --abort/--quit: cleanup refs/rewritten
rebase -r: always reword merge -c
add -p: fix checkout -p with pathological context
show --continue/skip etc. consistently in synopsis
sequencer: always allow tab after command name
sequencer: factor out todo command name parsing
status: do not report errors in sequencer/todo
git-prompt: improve cherry-pick/revert detection
t3420: remove progress lines before comparing output
Quentin Nerden (2):
docs: git-clone: refer to long form of options
docs: git-clone: list short form of options first
Ramsay Jones (1):
env--helper: mark a file-local symbol as static
René Scharfe (6):
cleanup: fix possible overflow errors in binary search, part 2
coccinelle: use COPY_ARRAY for copying arrays
use COPY_ARRAY for copying arrays
config: use unsigned_mult_overflows to check for overflows
config: don't multiply in parse_unit_factor()
config: simplify parsing of unit factors
Robert Morgan (1):
gpg(docs): use correct --verify syntax
Rohit Ashiwal (5):
sequencer: add advice for revert
sequencer: rename reset_for_rollback to reset_merge
sequencer: use argv_array in reset_merge
cherry-pick/revert: add --skip option
cherry-pick/revert: advise using --skip
SZEDER Gábor (12):
t3404: modernize here doc style
t3404: make the 'rebase.missingCommitsCheck=ignore' test more focused
pager: add a helper function to clear the last line in the terminal
t5551: use 'test_i18ngrep' to check translated output
rebase: fix garbled progress display with '-x'
progress: use term_clear_line()
Document that 'git -C ""' works and doesn't change directory
ci: don't update Homebrew
ci: disable Homebrew's auto cleanup
ci/lib.sh: update a comment about installed P4 and Git-LFS versions
travis-ci: build with GCC 4.8 as well
Documentation/git-fsck.txt: include fsck.* config variables
Simon Williams (1):
git-p4: allow unshelving of branched files
Stephen Boyd (2):
format-patch: inform user that patch-id generation is unstable
format-patch: make --base patch-id output stable
Steven Roberts (1):
gpg-interface: do not scan past the end of buffer
Taylor Blau (1):
ref-filter.c: find disjoint pattern prefixes
Thomas Gummerer (16):
stash: fix show referencing stash index
apply: replace marc.info link with public-inbox
apply: only pass required data to skip_tree_prefix
apply: only pass required data to git_header_name
apply: only pass required data to check_header_line
apply: only pass required data to find_name_*
apply: only pass required data to gitdiff_* functions
apply: make parse_git_diff_header public
range-diff: fix function parameter indentation
range-diff: split lines manually
range-diff: don't remove funcname from inner diff
range-diff: suppress line count in outer diff
range-diff: add section header instead of diff header
range-diff: add filename to inner diff
range-diff: add headers to the outer hunk header
stash: fix handling removed files with --keep-index
Tigran Mkrtchyan (1):
tag: add tag.gpgSign config option to force all tags be GPG-signed
Varun Naik (1):
read-cache.c: do not die if mmap fails
Vishal Verma (1):
merge: refuse --commit with --squash
Xin Li (1):
clone: respect user supplied origin name when setting up partial clone
brian m. carlson (10):
t: add helper to convert object IDs to paths
t1410: make hash size independent
t1450: make hash size independent
t5000: make hash independent
t6030: make test work with SHA-256
t0027: make hash size independent
t0090: make test pass with SHA-256
t1007: remove SHA1 prerequisites
t1710: make hash independent
t2203: avoid hard-coded object ID values
Ævar Arnfjörð Bjarmason (21):
send-email: move the read_config() function above getopts
send-email: rename the @bcclist variable for consistency
send-email: do defaults -> config -> getopt in that order
tests: add a special setup where prerequisites fail
Makefile: remove the NO_R_TO_GCC_LINKER flag
send-email: remove cargo-culted multi-patch pattern in tests
send-email: fix broken transferEncoding tests
send-email: document --no-[to|cc|bcc]
hash-object doc: stop mentioning git-cvsimport
send-email: fix regression in sendemail.identity parsing
Revert "test-lib: whitelist GIT_TR2_* in the environment"
config tests: simplify include cycle test
env--helper: new undocumented builtin wrapping git_env_*()
config.c: refactor die_bad_number() to not call gettext() early
t6040 test: stop using global "script" variable
tests: make GIT_TEST_GETTEXT_POISON a boolean
tests README: re-flow a previously changed paragraph
tests: replace test_tristate with "git env--helper"
tests: make GIT_TEST_FAIL_PREREQS a boolean
tests: mark two failing tests under FAIL_PREREQS
clone: test for our behavior on odd objects/* content
^ permalink raw reply [relevance 3%]
* [ANNOUNCE] Git v2.23.0-rc0
@ 2019-07-29 21:49 2% Junio C Hamano
0 siblings, 0 replies; 42+ results
From: Junio C Hamano @ 2019-07-29 21:49 UTC (permalink / raw)
To: git; +Cc: Linux Kernel, git-packagers
An early preview release Git v2.23.0-rc0 is now available for
testing at the usual places. It is comprised of 420 non-merge
commits since v2.22.0, contributed by 62 people, 23 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.23.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.22.0 are as follows.
Welcome to the Git development community!
Ariadne Conill, Barret Rhoden, Ben Avison, Daniel Ferreira, Doug
Ilijev, Dr. Adam Nielsen, Jakub Wilk, John Lin, Matheus Tavares,
Mazo, Andrey, Michael Osipov, Michael Platings, Miguel Ojeda,
Mike Mueller, Morian Sonnet, Quentin Nerden, Robert Morgan,
Simon Williams, Steven Roberts, Tigran Mkrtchyan, Varun Naik,
Vishal Verma, and Xin Li.
Returning contributors who helped this release are as follows.
Thanks for your continued support.
Ævar Arnfjörð Bjarmason, Beat Bolli, Boxuan Li, Carlo Marcelo
Arenas Belón, Cesar Eduardo Barros, Chris Mayo, Christian
Couder, Denton Liu, Derrick Stolee, Dimitriy Ryazantcev,
Edmundo Carmona Antoranz, Elijah Newren, Emily Shaffer, Eric
Wong, Felipe Contreras, Jeff Hostetler, Jeff King, Johannes
Schindelin, Johannes Sixt, Jonathan Tan, Josh Steadmon, Junio
C Hamano, Karsten Blees, Marc-André Lureau, Martin Ågren,
Matthew DeVore, Mike Hommey, Nguyễn Thái Ngọc Duy, Nickolai
Belakovski, Paolo Bonzini, Philip Oakley, Phillip Wood, Ramsay
Jones, René Scharfe, Rohit Ashiwal, Stephen Boyd, SZEDER Gábor,
Taylor Blau, and Thomas Gummerer.
----------------------------------------------------------------
Git 2.23 Release Notes (draft)
==============================
Updates since v2.22
-------------------
Backward compatibility note
* The "--base" option of "format-patch" computed the patch-ids for
prerequisite patches in an unstable way, which has been updated to
compute in a way that is compatible with "git patch-id --stable".
UI, Workflows & Features
* The "git fast-export/import" pair has been taught to handle commits
with log messages in encoding other than UTF-8 better.
* In recent versions of Git, per-worktree refs are exposed in
refs/worktrees/<wtname>/ hierarchy, which means that worktree names
must be a valid refname component. The code now sanitizes the names
given to worktrees, to make sure these refs are well-formed.
* "git merge" learned "--quit" option that cleans up the in-progress
merge while leaving the working tree and the index still in a mess.
* "git format-patch" learns a configuration to set the default for
its --notes=<ref> option.
* The code to show args with potential typo that cannot be
interpreted as a commit-ish has been improved.
* "git clone --recurse-submodules" learned to set up the submodules
to ignore commit object names recorded in the superproject gitlink
and instead use the commits that happen to be at the tip of the
remote-tracking branches from the get-go, by passing the new
"--remote-submodules" option.
* The pattern "git diff/grep" use to extract funcname and words
boundary for Matlab has been extend to cover Octave, which is more
or less equivalent.
* "git help git" was hard to discover (well, at least for some
people).
* The pattern "git diff/grep" use to extract funcname and words
boundary for Rust has been added.
* "git status" can be told a non-standard default value for the
"--[no-]ahead-behind" option with a new configuration variable
status.aheadBehind.
* "git fetch" and "git pull" reports when a fetch results in
non-fast-forward updates to let the user notice unusual situation.
The commands learned "--no-shown-forced-updates" option to disable
this safety feature.
* Two new commands "git switch" and "git restore" are introduced to
split "checking out a branch to work on advancing its history" and
"checking out paths out of the index and/or a tree-ish to work on
advancing the current history" out of the single "git checkout"
command.
* "git branch --list" learned to always output the detached HEAD as
the first item (when the HEAD is detached, of course), regardless
of the locale.
* The conditional inclusion mechanism learned to base the choice on
the branch the HEAD currently is on.
* "git rev-list --objects" learned with "--no-object-names" option to
squelch the path to the object that is used as a grouping hint for
pack-objects.
* A new tag.gpgSign configuration variable turns "git tag -a" into
"git tag -s".
* "git multi-pack-index" learned expire and repack subcommands.
* "git blame" learned to "ignore" commits in the history, whose
effects (as well as their presence) get ignored.
* "git cherry-pick/revert" learned a new "--skip" action.
* The tips of refs from the alternate object store can be used as
starting point for reachability computation now.
* Extra blank lines in "git status" output have been reduced.
* The commits in a repository can be described by multiple
commit-graph files now, which allows the commit-graph files to be
updated incrementally.
* The "git log" command learns to issue a warning when log.mailmap
configuration is not set and --[no-]mailmap option is not used, to
prepare users for future versions of Git that uses the mailmap by
default.
* "git range-diff" output has been tweaked for easier identification
of which part of what file the patch shown is about.
Performance, Internal Implementation, Development Support etc.
* Update supporting parts of "git rebase" to remove code that should
no longer be used.
* Developer support to emulate unsatisfied prerequisites in tests to
ensure that the remainer of the tests still succeeds when tests
with prerequisites are skipped.
* "git update-server-info" learned not to rewrite the file with the
same contents.
* The way of specifying the path to find dynamic libraries at runtime
has been simplified. The old default to pass -R/path/to/dir has been
replaced with the new default to pass -Wl,-rpath,/path/to/dir,
which is the more recent GCC uses. Those who need to build with an
old GCC can still use "CC_LD_DYNPATH=-R"
* Prepare use of reachability index in topological walker that works
on a range (A..B).
* A new tutorial targetting specifically aspiring git-core
developers has been added.
* Auto-detect how to tell HP-UX aCC where to use dynamically linked
libraries from at runtime.
* "git mergetool" and its tests now spawn fewer subprocesses.
* Dev support update to help tracing out tests.
* Support to build with MSVC has been updated.
* "git fetch" that grabs from a group of remotes learned to run the
auto-gc only once at the very end.
* A handful of Windows build patches have been upstreamed.
* The code to read state files used by the sequencer machinery for
"git status" has been made more robust against a corrupt or stale
state files.
* "git for-each-ref" with multiple patterns have been optimized.
* The tree-walk API learned to pass an in-core repository
instance throughout more codepaths.
* When one step in multi step cherry-pick or revert is reset or
committed, the command line prompt script failed to notice the
current status, which has been improved.
* Many GIT_TEST_* environment variables control various aspects of
how our tests are run, but a few followed "non-empty is true, empty
or unset is false" while others followed the usual "there are a few
ways to spell true, like yes, on, etc., and also ways to spell
false, like no, off, etc." convention.
* Adjust the dir-iterator API and apply it to the local clone
optimization codepath.
* We have been trying out a few language features outside c89; the
coding guidelines document did not talk about them and instead had
a blanket ban against them.
(merge cc0c42975a jc/post-c89-rules-doc later to maint).
* A test helper has been introduced to optimize preparation of test
repositories with many simple commits, and a handful of test
scripts have been updated to use it.
Fixes since v2.22
-----------------
* A relative pathname given to "git init --template=<path> <repo>"
ought to be relative to the directory "git init" gets invoked in,
but it instead was made relative to the repository, which has been
corrected.
(merge e1df7fe43f nd/init-relative-template-fix later to maint).
* "git worktree add" used to fail when another worktree connected to
the same repository was corrupt, which has been corrected.
(merge 105df73e71 nd/corrupt-worktrees later to maint).
* The ownership rule for the file descriptor to fast-import remote
backend was mixed up, leading to unrelated file descriptor getting
closed, which has been fixed.
(merge 3203566a71 mh/import-transport-fd-fix later to maint).
* A "merge -c" instruction during "git rebase --rebase-merges" should
give the user a chance to edit the log message, even when there is
otherwise no need to create a new merge and replace the existing
one (i.e. fast-forward instead), but did not. Which has been
corrected.
* Code cleanup and futureproof.
(merge 31f5256c82 ds/object-info-for-prefetch-fix later to maint).
* More parameter validation.
(merge de99eb0c24 es/grep-require-name-when-needed later to maint).
* "git update-server-info" used to leave stale packfiles in its
output, which has been corrected.
(merge e941c48d49 ew/server-info-remove-crufts later to maint).
* The server side support for "git fetch" used to show incorrect
value for the HEAD symbolic ref when the namespace feature is in
use, which has been corrected.
(merge 533e088250 jk/HEAD-symref-in-xfer-namespaces later to maint).
* "git am -i --resolved" segfaulted after trying to see a commit as
if it were a tree, which has been corrected.
(merge 7663e438c5 jk/am-i-resolved-fix later to maint).
* "git bundle verify" needs to see if prerequisite objects exist in
the receiving repository, but the command did not check if we are
in a repository upfront, which has been corrected.
(merge 3bbbe467f2 js/bundle-verify-require-object-store later to maint).
* "git merge --squash" is designed to update the working tree and the
index without creating the commit, and this cannot be countermanded
by adding the "--commit" option; the command now refuses to work
when both options are given.
(merge 1d14d0c994 vv/merge-squash-with-explicit-commit later to maint).
* The data collected by fsmonitor was not properly written back to
the on-disk index file, breaking t7519 tests occasionally, which
has been corrected.
(merge b5a8169752 js/fsmonitor-unflake later to maint).
* Update to Unicode 12.1 width table.
(merge 5817f9caa3 bb/unicode-12.1-reiwa later to maint).
* The command line to invoke a "git cat-file" command from inside
"git p4" was not properly quoted to protect a caret and running a
broken command on Windows, which has been corrected.
(merge c3f2358de3 mm/p4-unshelve-windows-fix later to maint).
* "git request-pull" learned to warn when the ref we ask them to pull
from in the local repository and in the published repository are
different.
(merge 0454220d66 pb/request-pull-verify-remote-ref later to maint).
* When creating a partial clone, the object filtering criteria is
recorded for the origin of the clone, but this incorrectly used a
hardcoded name "origin" to name that remote; it has been corrected
to honor the "--origin <name>" option.
(merge 1c4a9f9114 xl/record-partial-clone-origin later to maint).
* "git fetch" into a lazy clone forgot to fetch base objects that are
necessary to complete delta in a thin packfile, which has been
corrected.
(merge 810e19322d jt/partial-clone-missing-ref-delta-base later to maint).
* The filter_data used in the list-objects-filter (which manages a
lazily sparse clone repository) did not use the dynamic array API
correctly---'nr' is supposed to point at one past the last element
of the array in use. This has been corrected.
(merge 7140600e2e md/list-objects-filter-memfix later to maint).
* The description about slashes in gitignore patterns (used to
indicate things like "anchored to this level only" and "only
matches directories") has been revamped.
(merge 1a58bad014 an/ignore-doc-update later to maint).
* The URL decoding code has been updated to avoid going past the end
of the string while parsing %-<hex>-<hex> sequence.
(merge d37dc239a4 md/url-parse-harden later to maint).
* The list of for-each like macros used by clang-format has been
updated.
(merge fc7e03aace mo/clang-format-for-each-update later to maint).
* "git branch --list" learned to show branches that are checked out
in other worktrees connected to the same repository prefixed with
'+', similar to the way the currently checked out branch is shown
with '*' in front.
(merge 6e9381469e nb/branch-show-other-worktrees-head later to maint).
* Code restructuring during 2.20 period broke fetching tags via
"import" based transports.
(merge f80d922355 fc/fetch-with-import-fix later to maint).
* The commit-graph file is now part of the "files that the runtime
may keep open file descriptors on, all of which would need to be
closed when done with the object store", and the file descriptor to
an existing commit-graph file now is closed before "gc" finalizes a
new instance to replace it.
(merge 2d511cfc0b ds/close-object-store later to maint).
* "git checkout -p" needs to selectively apply a patch in reverse,
which did not work well.
(merge 2bd69b9024 pw/add-p-recount later to maint).
* Code clean-up to avoid signed integer wraparounds during binary search.
(merge 568a05c5ec rs/avoid-overflow-in-midpoint-computation later to maint).
* "git interpret-trailers" always treated '#' as the comment
character, regardless of core.commentChar setting, which has been
corrected.
(merge 29c83fc23f jk/trailers-use-config later to maint).
* "git stash show 23" used to work, but no more after getting
rewritten in C; this regression has been corrected.
(merge 63b50c8ffe tg/stash-ref-by-index-fix later to maint).
* "git rebase --abort" used to leave refs/rewritten/ when concluding
"git rebase -r", which has been corrected.
(merge d559f502c5 pw/rebase-abort-clean-rewritten later to maint).
* An incorrect list of options was cached after command line
completion failed (e.g. trying to complete a command that requires
a repository outside one), which has been corrected.
(merge 69702523af nd/completion-no-cache-failure later to maint).
* The code to parse scaled numbers out of configuration files has
been made more robust and also easier to follow.
(merge 39c575c969 rs/config-unit-parsing later to maint).
* The codepath to compute delta islands used to spew progress output
without giving the callers any way to squelch it, which has been
fixed.
(merge bdbdf42f8a jk/delta-islands-progress-fix later to maint).
* Protocol capabilities that go over wire should never be translated,
but it was incorrectly marked for translation, which has been
corrected. The output of protocol capabilities for debugging has
been tweaked a bit.
* Use "Erase in Line" CSI sequence that is already used in the editor
support to clear cruft in the progress output.
(merge 5b12e3123b sg/rebase-progress later to maint).
* "git submodule foreach" did not protect command line options passed
to the command to be run in each submodule correctly, when the
"--recursive" option was in use.
(merge 30db18b148 ms/submodule-foreach-fix later to maint).
* The configuration variable rebase.rescheduleFailedExec should be
effective only while running an interactive rebase and should not
affect anything when running an non-interactive one, which was not
the case. This has been corrected.
(merge 906b63942a js/rebase-reschedule-applies-only-to-interactive later to maint).
* The "git clone" documentation refers to command line options in its
description in the short form; they have been replaced with long
forms to make them more recognisable.
(merge bfc8c84ed5 qn/clone-doc-use-long-form later to maint).
* Generation of pack bitmaps are now disabled when .keep files exist,
as these are mutually exclusive features.
(merge 7328482253 ew/repack-with-bitmaps-by-default later to maint).
* "git rm" to resolve a conflicted path leaked an internal message
"needs merge" before actually removing the path, which was
confusing. This has been corrected.
(merge b2b1f615ce jc/denoise-rm-to-resolve later to maint).
* "git stash --keep-index" did not work correctly on paths that have
been removed, which has been fixed.
(merge b932f6a5e8 tg/stash-keep-index-with-removed-paths later to maint).
* Window 7 update ;-)
(merge eb7c786314 js/mingw-spawn-with-spaces-in-path later to maint).
* A codepath that reads from GPG for signed object verification read
past the end of allocated buffer, which has been fixed.
(merge 64c45dc72e sr/gpg-interface-stop-at-the-end later to maint).
* "git clean" silently skipped a path when it cannot lstat() it; now
it gives a warning.
(merge b09364c47a js/clean-report-too-long-a-path later to maint).
* "git push --atomic" that goes over the transport-helper (namely,
the smart http transport) failed to prevent refs to be pushed when
it can locally tell that one of the ref update will fail without
having to consult the other end, which has been corrected.
(merge 2581ea3d31 es/local-atomic-push-failure-with-http later to maint).
* The internal diff machinery can be made to read out of bounds while
looking for --funcion-context line in a corner case, which has been
corrected.
(merge b777f3fd61 jk/xdiff-clamp-funcname-context-index later to maint).
* Other code cleanup, docfix, build fix, etc.
(merge f547101b26 es/git-debugger-doc later to maint).
(merge 7877ac3d7b js/bisect-helper-check-get-oid-return-value later to maint).
(merge 0108f47eb3 sw/git-p4-unshelve-branched-files later to maint).
(merge 9df8f734fd cm/send-email-document-req-modules later to maint).
(merge afc3bf6eb1 ab/hash-object-doc later to maint).
(merge 1fde99cfc7 po/doc-branch later to maint).
(merge 459842e1c2 dl/config-alias-doc later to maint).
(merge 5d137fc2c7 cb/fsmonitor-intfix later to maint).
(merge 921d49be86 rs/copy-array later to maint).
(merge cc8d872e69 js/t3404-typofix later to maint).
(merge 729a9b558b cb/mkstemps-uint-type-fix later to maint).
(merge 9dae4fe79f js/gcc-8-and-9 later to maint).
(merge ed33bd8f30 js/t0001-case-insensitive later to maint).
(merge dfa880e336 jw/gitweb-sample-update later to maint).
(merge e532a90a9f sg/t5551-fetch-smart-error-is-translated later to maint).
(merge 8d45ad8c29 jt/t5551-test-chunked later to maint).
(merge 1a64e07d23 sg/git-C-empty-doc later to maint).
(merge 37a2e35395 sg/ci-brew-gcc-workaround later to maint).
(merge 24df0d49c4 js/trace2-signo-typofix later to maint).
(merge fbec05c210 cc/test-oidmap later to maint).
(merge 7926cee904 di/readme-markup-fix later to maint).
(merge 02638d1e11 vn/xmmap-gently later to maint).
(merge f7bf24d4dd rm/gpg-program-doc-fix later to maint).
(merge 3aef54e8b8 js/unmap-before-ext-diff later to maint).
----------------------------------------------------------------
Changes since v2.22.0 are as follows:
Ariadne Conill (3):
log: add warning for unspecified log.mailmap setting
documentation: mention --no-use-mailmap and log.mailmap false setting
tests: defang pager tests by explicitly disabling the log.mailmap warning
Barret Rhoden (8):
fsck: rename and touch up init_skiplist()
Move oidset_parse_file() to oidset.c
blame: use a helper function in blame_chunk()
blame: add the ability to ignore commits and their changes
blame: add config options for the output of ignored or unblamable lines
blame: optionally track line fingerprints during fill_blame_origin()
blame: use the fingerprint heuristic to match ignored lines
blame: add a test to cover blame_coalesce()
Beat Bolli (2):
unicode: update the width tables to Unicode 12.1
grep: print the pcre2_jit_on value
Ben Avison (1):
clone: add `--remote-submodules` flag
Boxuan Li (2):
userdiff: add Octave
userdiff: fix grammar and style issues
Carlo Marcelo Arenas Belón (3):
fsmonitor: avoid signed integer overflow / infinite loop
wrapper: avoid undefined behaviour in macOS
trace2: correct typo in technical documentation
Cesar Eduardo Barros (1):
mingw: embed a manifest to trick UAC into Doing The Right Thing
Chris Mayo (1):
send-email: update documentation of required Perl modules
Christian Couder (7):
t/helper: add test-oidmap.c
t: add t0016-oidmap.sh
oidmap: use sha1hash() instead of static hash() function
test-hashmap: remove 'hash' command
doc: improve usage string in MyFirstContribution
test-oidmap: remove 'add' subcommand
t0016: add 'remove' subcommand test
Daniel Ferreira (1):
dir-iterator: add tests for dir-iterator API
Denton Liu (5):
git-format-patch.txt: document --no-notes option
format-patch: teach format.notes config option
config: learn the "onbranch:" includeIf condition
config/alias.txt: change " and ' to `
config/alias.txt: document alias accepting non-command first word
Derrick Stolee (50):
commit-graph: fix the_repository reference
revision: use generation for A..B --topo-order queries
revision: keep topo-walk free of unintersting commits
sha1-file: split OBJECT_INFO_FOR_PREFETCH
repack: refactor pack deletion for future use
Docs: rearrange subcommands for multi-pack-index
multi-pack-index: prepare for 'expire' subcommand
midx: simplify computation of pack name lengths
midx: refactor permutation logic and pack sorting
multi-pack-index: implement 'expire' subcommand
multi-pack-index: prepare 'repack' subcommand
midx: implement midx_repack()
multi-pack-index: test expire while adding packs
midx: add test that 'expire' respects .keep files
t5319-multi-pack-index.sh: test batch size zero
commit-graph: return with errors during write
commit-graph: collapse parameters into flags
commit-graph: remove Future Work section
commit-graph: create write_commit_graph_context
commit-graph: extract fill_oids_from_packs()
commit-graph: extract fill_oids_from_commit_hex()
commit-graph: extract fill_oids_from_all_packs()
commit-graph: extract count_distinct_commits()
commit-graph: extract copy_oids_to_commits()
commit-graph: extract write_commit_graph_file()
commit-graph: use raw_object_store when closing
packfile: close commit-graph in close_all_packs
packfile: rename close_all_packs to close_object_store
commit-graph: document commit-graph chains
commit-graph: prepare for commit-graph chains
commit-graph: rename commit_compare to oid_compare
commit-graph: load commit-graph chains
commit-graph: add base graphs chunk
commit-graph: rearrange chunk count logic
commit-graph: write commit-graph chains
commit-graph: add --split option to builtin
commit-graph: merge commit-graph chains
commit-graph: allow cross-alternate chains
commit-graph: expire commit-graph files
commit-graph: create options for split files
commit-graph: verify chains with --shallow mode
commit-graph: clean up chains after flattened write
commit-graph: test octopus merges with --split
commit-graph: test --split across alternate without --split
commit-graph: normalize commit-graph filenames
commit-graph: test verify across alternates
fetch: add --[no-]show-forced-updates argument
fetch: warn about forced updates in branch listing
pull: add --[no-]show-forced-updates passthrough
t5319: use 'test-tool path-utils' instead of 'ls -l'
Dimitriy Ryazantcev (1):
l10n: localizable upload progress messages
Doug Ilijev (1):
README: fix rendering of text in angle brackets
Dr. Adam Nielsen (1):
gitignore.txt: make slash-rules more readable
Edmundo Carmona Antoranz (1):
builtin/merge.c - cleanup of code in for-cycle that tests strategies
Elijah Newren (5):
t9350: fix encoding test to actually test reencoding
fast-import: support 'encoding' commit header
fast-export: avoid stripping encoding header if we cannot reencode
fast-export: differentiate between explicitly UTF-8 and implicitly UTF-8
fast-export: do automatic reencoding of commit messages only if requested
Emily Shaffer (7):
documentation: add tutorial for first contribution
documentation: add anchors to MyFirstContribution
grep: fail if call could output and name is null
doc: hint about GIT_DEBUGGER in CodingGuidelines
doc: add some nit fixes to MyFirstContribution
rev-list: teach --no-object-names to enable piping
transport-helper: enforce atomic in push_refs_with_push
Eric Wong (3):
update-server-info: avoid needless overwrites
server-info: do not list unlinked packs
repack: disable bitmaps-by-default if .keep files exist
Felipe Contreras (5):
t5801 (remote-helpers): cleanup refspec stuff
t5801 (remote-helpers): add test to fetch tags
fetch: trivial cleanup
fetch: make the code more understandable
fetch: fix regression with transport helpers
Jakub Wilk (1):
doc: don't use git.kernel.org as example gitweb URL
Jeff Hostetler (13):
cache-tree/blame: avoid reusing the DEBUG constant
msvc: mark a variable as non-const
msvc: do not re-declare the timespec struct
msvc: define ftello()
msvc: fix detect_msys_tty()
msvc: update Makefile to allow for spaces in the compiler path
status: add status.aheadbehind setting
status: warn when a/b calculation takes too long
status: ignore status.aheadbehind in porcelain formats
msvc: support building Git using MS Visual C++
msvc: add a compile-time flag to allow detailed heap debugging
msvc: do not pretend to support all signals
msvc: ignore .dll and incremental compile output
Jeff King (50):
cmd_{read,write}_tree: rename "unused" variable that is used
builtin: consistently pass cmd_* prefix to parse_options
submodule: drop unused prefix parameter from some functions
clone: drop dest parameter from copy_alternates()
read-cache: drop unused parameter from threaded load
wt-status: drop unused status parameter
mktree: drop unused length parameter
name-rev: drop unused parameters from is_better_name()
pack-objects: drop unused rev_info parameters
receive-pack: drop unused "commands" from prepare_shallow_update()
remove_all_fetch_refspecs(): drop unused "remote" parameter
rev-list: drop unused void pointer from finish_commit()
show-branch: drop unused parameter from show_independent()
verify-commit: simplify parameters to run_gpg_verify()
help_unknown_ref(): duplicate collected refnames
help_unknown_ref(): check for refname ambiguity
upload-pack: strip namespace from symref data
am: simplify prompt response handling
am: read interactive input from stdin
am: drop tty requirement for --interactive
am: fix --interactive HEAD tree resolution
interpret-trailers: load default config
describe: fix accidental oid/hash type-punning
upload-pack: rename a "sha1" variable to "oid"
pack-bitmap-write: convert some helpers to use object_id
pack-objects: convert packlist_find() to use object_id
pack-objects: convert locate_object_entry_hash() to object_id
object: convert lookup_unknown_object() to use object_id
object: convert lookup_object() to use object_id
object: convert internal hash_obj() to object_id
object: convert create_object() to use object_id
khash: drop broken oid_map typedef
khash: rename kh_oid_t to kh_oid_set
delta-islands: convert island_marks khash to use oids
pack-bitmap: convert khash_sha1 maps into kh_oid_map
khash: drop sha1-specific map types
khash: rename oid helper functions
hash.h: move object_id definition from cache.h
hashmap: convert sha1hash() to oidhash()
delta-islands: respect progress flag
blame: drop some unused function parameters
object-store.h: move for_each_alternate_ref() from transport.h
check_everything_connected: assume alternate ref tips are valid
test-lib: introduce test_commit_bulk
t5310: increase the number of bitmapped commits
t3311: use test_commit_bulk
t5702: use test_commit_bulk
t5703: use test_commit_bulk
t6200: use test_commit_bulk
xdiff: clamp function context indices in post-image
Johannes Schindelin (32):
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
bisect--helper: verify HEAD could be parsed before continuing
fill_stat_cache_info(): prepare for an fsmonitor fix
mark_fsmonitor_valid(): mark the index as changed if needed
bundle verify: error out if called without an object database
poll (mingw): allow compiling with GCC 8 and DEVELOPER=1
kwset: allow building with GCC 8
winansi: simplify loading the GetCurrentConsoleFontEx() function
config: avoid calling `labs()` on too-large data type
t3404: fix a typo
mingw: fix a typo in the msysGit-specific section
Mark .bat files as requiring CR/LF endings
t0001 (mingw): do not expect a specific order of stdout/stderr
obstack: fix compiler warning
mingw: replace mingw_startup() hack
msvc: fix dependencies of compat/msvc.c
t0001: fix on case-insensitive filesystems
msvc: avoid debug assertion windows in Debug Mode
mingw: enable stack smashing protector
mingw: get pw_name in UTF-8 format
mingw: use Unicode functions explicitly
rebase --am: ignore rebase.rescheduleFailedExec
mingw: fix possible buffer overrun when calling `GetUserNameW()`
diff: munmap() file contents before running external diff
mingw: support spawning programs containing spaces in their names
clean: show an error message when the path is too long
rebase: fix white-space
git: mark cmd_rebase as requiring a worktree
Johannes Sixt (5):
userdiff: two simplifications of patterns for rust
t7610-mergetool: do not place pipelines headed by `yes` in subshells
t7610-mergetool: use test_cmp instead of test $(cat file) = $txt
mergetool: dissect strings with shell variable magic instead of `expr`
mergetool: use shell variable magic instead of `awk`
John Lin (1):
status: remove the empty line after hints
Jonathan Tan (5):
t5616: refactor packfile replacement
index-pack: prefetch missing REF_DELTA bases
t5616: use correct flag to check object is missing
t5616: cover case of client having delta base
t5551: test usage of chunked encoding explicitly
Josh Steadmon (1):
trace2: correct trace2 field name documentation
Junio C Hamano (13):
The first batch after 2.22
The second batch
The third batch
The fourth batch
The fifth batch
transport-helper: avoid var decl in for () loop control
rm: resolving by removal is not a warning-worthy event
CodingGuidelines: spell out post-C89 rules
The sixth batch
The seventh batch
Flush fixes up to the third batch post 2.22.0
Merge fixes made on the 'master' front
Git 2.23-rc0
Karsten Blees (2):
gettext: always use UTF-8 on native Windows
mingw: initialize HOME on startup
Marc-André Lureau (1):
userdiff: add built-in pattern for rust
Martin Ågren (1):
ref-filter: fix memory leak in `free_array_item()`
Matheus Tavares (8):
clone: better handle symlinked files at .git/objects/
dir-iterator: use warning_errno when possible
dir-iterator: refactor state machine model
dir-iterator: add flags parameter to dir_iterator_begin
clone: copy hidden paths at local clone
clone: extract function from copy_or_link_directory
clone: use dir-iterator to avoid explicit dir traversal
clone: replace strcmp by fspathcmp
Matthew DeVore (5):
list-objects-filter-options: error is localizeable
list-objects-filter: correct usage of ALLOC_GROW
url: do not read past end of buffer
url: do not allow %00 to represent NUL in URLs
ref-filter: sort detached HEAD lines firstly
Mazo, Andrey (8):
git-p4: detect/prevent infinite loop in gitCommitByP4Change()
git-p4: add failing test for "git-p4: match branches case insensitively if configured"
git-p4: match branches case insensitively if configured
git-p4: don't groom exclude path list on every commit
git-p4: add failing test for "don't exclude other files with same prefix"
git-p4: don't exclude other files with same prefix
git-p4: add failing test for "git-p4: respect excluded paths when detecting branches"
git-p4: respect excluded paths when detecting branches
Michael Osipov (1):
configure: Detect linking style for HP aCC on HP-UX
Michael Platings (2):
blame: add a fingerprint heuristic to match ignored lines
t8014: remove unnecessary braces
Miguel Ojeda (1):
clang-format: use git grep to generate the ForEachMacros list
Mike Hommey (2):
dup() the input fd for fast-import used for remote helpers
Use xmmap_gently instead of xmmap in use_pack
Mike Mueller (1):
p4 unshelve: fix "Not a valid object name HEAD0" on Windows
Morian Sonnet (1):
submodule foreach: fix recursion of options
Nguyễn Thái Ngọc Duy (63):
git-checkout.txt: spell out --no-option
git-checkout.txt: fix one syntax line
doc: document --overwrite-ignore
git-checkout.txt: fix monospace typeset
t: rename t2014-switch.sh to t2014-checkout-switch.sh
checkout: advice how to get out of detached HEAD mode
checkout: inform the user when removing branch state
checkout: keep most #include sorted
checkout: factor out some code in parse_branchname_arg()
checkout: make "opts" in cmd_checkout() a pointer
checkout: move 'confict_style' and 'dwim_..' to checkout_opts
checkout: split options[] array in three pieces
checkout: split part of it to new command 'switch'
switch: better names for -b and -B
switch: add --discard-changes
switch: remove -l
switch: stop accepting pathspec
switch: reject "do nothing" case
switch: only allow explicit detached HEAD
switch: add short option for --detach
switch: implicit dwim, use --no-guess to disable it
switch: no worktree status unless real branch switch happens
switch: reject if some operation is in progress
switch: make --orphan switch to an empty tree
t: add tests for switch
completion: support switch
doc: promote "git switch"
checkout: split part of it to new command 'restore'
restore: take tree-ish from --source option instead
restore: make pathspec mandatory
restore: disable overlay mode by default
checkout: factor out worktree checkout code
restore: add --worktree and --staged
restore: reject invalid combinations with --staged
restore: default to --source=HEAD when only --staged is specified
restore: replace --force with --ignore-unmerged
restore: support --patch
t: add tests for restore
completion: support restore
user-manual.txt: prefer 'merge --abort' over 'reset --hard'
doc: promote "git restore"
help: move git-diff and git-reset to different groups
Declare both git-switch and git-restore experimental
merge: remove drop_save() in favor of remove_merge_branch_state()
init: make --template path relative to $CWD
worktree add: sanitize worktree names
worktree add: be tolerant of corrupt worktrees
merge: add --quit
completion: do not cache if --git-completion-helper fails
fetch: only run 'gc' once when fetching multiple remotes
t2027: use test_must_be_empty
switch: allow to switch in the middle of bisect
completion: disable dwim on "git switch -d"
fetch-pack: move capability names out of i18n strings
fetch-pack: print all relevant supported capabilities with -v -v
fetch-pack: print server version at the top in -v -v
sha1-file.c: remove the_repo from read_object_with_reference()
tree-walk.c: remove the_repo from fill_tree_descriptor()
tree-walk.c: remove the_repo from get_tree_entry()
tree-walk.c: remove the_repo from get_tree_entry_follow_symlinks()
match-trees.c: remove the_repo from shift_tree*()
Use the right 'struct repository' instead of the_repository
t7814: do not generate same commits in different repos
Nickolai Belakovski (3):
ref-filter: add worktreepath atom
branch: update output to include worktree info
branch: add worktree info on verbose output
Paolo Bonzini (2):
request-pull: quote regex metacharacters in local ref
request-pull: warn if the remote object is not the same as the local one
Philip Oakley (6):
git.c: show usage for accessing the git(1) help page
Doc: git.txt: remove backticks from link and add git-scm.com/docs
doc branch: provide examples for listing remote tracking branches
msvc: include sigset_t definition
msvc: define O_ACCMODE
msvc: add pragmas for common warnings
Phillip Wood (12):
rebase: fix a memory leak
rebase: warn if state directory cannot be removed
sequencer: return errors from sequencer_remove_state()
rebase --abort/--quit: cleanup refs/rewritten
rebase -r: always reword merge -c
add -p: fix checkout -p with pathological context
show --continue/skip etc. consistently in synopsis
sequencer: always allow tab after command name
sequencer: factor out todo command name parsing
status: do not report errors in sequencer/todo
git-prompt: improve cherry-pick/revert detection
t3420: remove progress lines before comparing output
Quentin Nerden (2):
docs: git-clone: refer to long form of options
docs: git-clone: list short form of options first
Ramsay Jones (1):
env--helper: mark a file-local symbol as static
René Scharfe (6):
cleanup: fix possible overflow errors in binary search, part 2
coccinelle: use COPY_ARRAY for copying arrays
use COPY_ARRAY for copying arrays
config: use unsigned_mult_overflows to check for overflows
config: don't multiply in parse_unit_factor()
config: simplify parsing of unit factors
Robert Morgan (1):
gpg(docs): use correct --verify syntax
Rohit Ashiwal (5):
sequencer: add advice for revert
sequencer: rename reset_for_rollback to reset_merge
sequencer: use argv_array in reset_merge
cherry-pick/revert: add --skip option
cherry-pick/revert: advise using --skip
SZEDER Gábor (11):
t3404: modernize here doc style
t3404: make the 'rebase.missingCommitsCheck=ignore' test more focused
pager: add a helper function to clear the last line in the terminal
t5551: use 'test_i18ngrep' to check translated output
rebase: fix garbled progress display with '-x'
progress: use term_clear_line()
Document that 'git -C ""' works and doesn't change directory
ci: don't update Homebrew
ci: disable Homebrew's auto cleanup
ci/lib.sh: update a comment about installed P4 and Git-LFS versions
travis-ci: build with GCC 4.8 as well
Simon Williams (1):
git-p4: allow unshelving of branched files
Stephen Boyd (2):
format-patch: inform user that patch-id generation is unstable
format-patch: make --base patch-id output stable
Steven Roberts (1):
gpg-interface: do not scan past the end of buffer
Taylor Blau (1):
ref-filter.c: find disjoint pattern prefixes
Thomas Gummerer (16):
stash: fix show referencing stash index
apply: replace marc.info link with public-inbox
apply: only pass required data to skip_tree_prefix
apply: only pass required data to git_header_name
apply: only pass required data to check_header_line
apply: only pass required data to find_name_*
apply: only pass required data to gitdiff_* functions
apply: make parse_git_diff_header public
range-diff: fix function parameter indentation
range-diff: split lines manually
range-diff: don't remove funcname from inner diff
range-diff: suppress line count in outer diff
range-diff: add section header instead of diff header
range-diff: add filename to inner diff
range-diff: add headers to the outer hunk header
stash: fix handling removed files with --keep-index
Tigran Mkrtchyan (1):
tag: add tag.gpgSign config option to force all tags be GPG-signed
Varun Naik (1):
read-cache.c: do not die if mmap fails
Vishal Verma (1):
merge: refuse --commit with --squash
Xin Li (1):
clone: respect user supplied origin name when setting up partial clone
Ævar Arnfjörð Bjarmason (21):
send-email: move the read_config() function above getopts
send-email: rename the @bcclist variable for consistency
send-email: do defaults -> config -> getopt in that order
tests: add a special setup where prerequisites fail
Makefile: remove the NO_R_TO_GCC_LINKER flag
send-email: remove cargo-culted multi-patch pattern in tests
send-email: fix broken transferEncoding tests
send-email: document --no-[to|cc|bcc]
hash-object doc: stop mentioning git-cvsimport
send-email: fix regression in sendemail.identity parsing
Revert "test-lib: whitelist GIT_TR2_* in the environment"
config tests: simplify include cycle test
env--helper: new undocumented builtin wrapping git_env_*()
config.c: refactor die_bad_number() to not call gettext() early
t6040 test: stop using global "script" variable
tests: make GIT_TEST_GETTEXT_POISON a boolean
tests README: re-flow a previously changed paragraph
tests: replace test_tristate with "git env--helper"
tests: make GIT_TEST_FAIL_PREREQS a boolean
tests: mark two failing tests under FAIL_PREREQS
clone: test for our behavior on odd objects/* content
^ permalink raw reply [relevance 2%]
Results 1-42 of 42 | reverse | options above
-- pct% links below jump to the message on this page, permalinks otherwise --
2019-07-29 21:49 2% [ANNOUNCE] Git v2.23.0-rc0 Junio C Hamano
2019-08-02 22:06 3% [ANNOUNCE] Git v2.23.0-rc1 Junio C Hamano
2019-08-06 0:28 amend warnings with no changes staged Lukas Gross
2019-08-06 1:30 ` Jonathan Nieder
2019-08-06 1:37 ` Lukas Gross
2019-08-06 2:16 7% ` Jonathan Nieder
2019-08-06 2:47 0% ` Junio C Hamano
2019-08-06 3:00 0% ` Jonathan Nieder
2019-08-06 4:19 0% ` Jeff King
2019-08-09 19:29 3% [ANNOUNCE] Git v2.23.0-rc2 Junio C Hamano
2019-08-09 21:20 0% ` Bhaskar Chowdhury
2019-08-09 21:31 0% ` Git for Windows v2.23.0-rc2, was " Johannes Schindelin
2019-08-15 8:35 git log --graph with a sort of local revision number Uwe Brauer
2019-08-18 19:00 6% ` Rafael Ascensão
2019-08-18 20:46 5% ` Uwe Brauer
2019-08-16 9:16 5% [GIT PULL] l10n updates for 2.23.0 round 2 Jiang Xin
2019-08-16 20:06 0% ` Junio C Hamano
2019-08-16 21:00 4% [ANNOUNCE] Git v2.23.0 Junio C Hamano
2019-08-16 21:30 0% ` Bhaskar Chowdhury
2019-08-18 16:03 7% Missing file in 2.23 (p5302-pack-index.subtests)? Theodore Y. Ts'o
2019-08-26 20:50 0% ` Jeff King
2019-08-26 20:51 0% ` Jeff King
2019-08-27 1:29 5% ` Theodore Y. Ts'o
2019-08-26 2:43 6% [PATCH 00/11] hashmap: bugfixes, safety fixes, and WIP improvements Eric Wong
2019-09-24 1:03 5% ` [PATCH v2 00/19] hashmap bug/safety/ease-of-use fixes Eric Wong
2019-09-26 8:39 0% ` Johannes Schindelin
2019-09-26 13:48 0% ` Phillip Wood
2019-08-28 23:25 7% error: cannot cherry-pick during a revert Mike Hommey
2019-08-29 15:27 0% ` Phillip Wood
2019-10-06 23:30 2% [PATCH v3 00/20] hashmap bug/safety/ease-of-use fixes Eric Wong
2019-10-08 8:58 0% ` Johannes Schindelin
2019-10-18 6:29 1% [ANNOUNCE] Git v2.24.0-rc0 Junio C Hamano
2019-10-24 6:00 1% [ANNOUNCE] Git v2.24.0-rc1 Junio C Hamano
2019-10-30 7:14 1% [ANNOUNCE] Git v2.24.0-rc2 Junio C Hamano
2019-11-04 5:36 1% [ANNOUNCE] Git v2.24.0 Junio C Hamano
2019-11-22 12:37 7% difftool fails with dangling symlinks, writes to targets outside of the repository Philippe
2019-11-29 8:21 6% git-rebase produces incorrect output Pavel Roskin
2019-11-29 13:31 0% ` Philip Oakley
2019-11-30 4:22 0% ` Elijah Newren
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 6% ` Elijah Newren
2019-12-08 7:46 0% ` Elijah Newren
2020-07-01 8:41 Why won't git checkout a branch? Jeffrey Walton
2020-07-01 9:50 ` Andreas Schwab
2020-07-01 10:09 ` Jeffrey Walton
2020-07-01 15:13 7% ` Chris Torek
2021-06-02 4:56 6% Partial Clone, and a strange slow rev-list call on fetch Tao Klerks
2021-06-02 11:18 0% ` Derrick Stolee
2023-01-10 9:02 Bugreport: Prefix - is ignored when sorting (on committerdate) Fredrik Öberg
2023-01-10 10:54 ` Martin Ågren
2023-01-10 12:18 ` Jeff King
2023-01-10 13:05 ` Martin Ågren
2023-01-10 13:33 7% ` Fredrik Öberg
2023-01-10 13:47 0% ` Jeff King
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).