* Re: [BUG] "git range-diff" does not know X^! is a valid range
2024-04-02 17:45 2% [BUG] "git range-diff" does not know X^! is a valid range Junio C Hamano
@ 2024-04-02 20:24 0% ` René Scharfe
0 siblings, 0 replies; 200+ results
From: René Scharfe @ 2024-04-02 20:24 UTC (permalink / raw)
To: Junio C Hamano, git
Am 02.04.24 um 19:45 schrieb Junio C Hamano:
> When cherry-picking an existing commit X to a different base, which
> may have resulted in conflicts that needed a fix-up, you would want
> to be able to compare X~1..X and HEAD~1..HEAD and naturally, we
> would expect "range-diff" to have a handy way to allow giving the
> command without having to type the overly long branch name X twice.
>
> Individual "diff" for these two ranges are easy to obtain without
> repeating X:
>
> $ git diff X^!
> $ git diff HEAD^!
>
> The "git range-diff" however does not understand that X^! is a valid
> range X~1..X. This command throws an error and ...
>
> $ git range-diff refs/merge-fix/ew/khash-to-khashl^! HEAD^!
> fatal: need two commit ranges
Seems to work fine in this example:
$ git range-diff refs/remotes/origin/maint^! HEAD^!
-: ---------- > 1: c2cbfbd2e2 The thirteenth batch
Are your refs valid? Does "git rev-parse" resolve them properly?
is_range_diff_range() uses setup_revisions(); not sure how it could
misparse "X^!". :-?
> ... to add insult to injury, it shows the huge "git range-diff -h"
> output after that.
Yeah, that's annoying in general, I guess to anyone who has seen it
before or knows that -h or --help will list options. Drowns out the
actual signal.
René
^ permalink raw reply [relevance 0%]
* [BUG] "git range-diff" does not know X^! is a valid range
@ 2024-04-02 17:45 2% Junio C Hamano
2024-04-02 20:24 0% ` René Scharfe
0 siblings, 1 reply; 200+ results
From: Junio C Hamano @ 2024-04-02 17:45 UTC (permalink / raw)
To: git
When cherry-picking an existing commit X to a different base, which
may have resulted in conflicts that needed a fix-up, you would want
to be able to compare X~1..X and HEAD~1..HEAD and naturally, we
would expect "range-diff" to have a handy way to allow giving the
command without having to type the overly long branch name X twice.
Individual "diff" for these two ranges are easy to obtain without
repeating X:
$ git diff X^!
$ git diff HEAD^!
The "git range-diff" however does not understand that X^! is a valid
range X~1..X. This command throws an error and ...
$ git range-diff refs/merge-fix/ew/khash-to-khashl^! HEAD^!
fatal: need two commit ranges
... to add insult to injury, it shows the huge "git range-diff -h"
output after that.
Any takers?
^ permalink raw reply [relevance 2%]
* Re: What's cooking in git.git (Apr 2024, #01; Mon, 1)
2024-04-01 23:08 2% ` Junio C Hamano
@ 2024-04-01 23:27 0% ` Taylor Blau
0 siblings, 0 replies; 200+ results
From: Taylor Blau @ 2024-04-01 23:27 UTC (permalink / raw)
To: Junio C Hamano; +Cc: git
On Mon, Apr 01, 2024 at 04:08:01PM -0700, Junio C Hamano wrote:
> Junio C Hamano <gitster@pobox.com> writes:
>
> >>> * tb/pseudo-merge-reachability-bitmap (2024-03-20) 24 commits
> >>> ...
> >> Thanks updating the description. I am waiting to reroll until after it
> >> has received a little bit of review on the technical front.
> >
> > In the meantime I've dropped it as it interacts with tb/midx-write
> > and Eric's khash-to-khashl update.
>
> I think I got merge-fix for integrating this topic with the rest, so
> I'll be resurrecting it and queuing it to 'seen' again.
Thanks. I'll look at what has settled by the time it is ready to be
rerolled and rebase it forward appropriately to try and make your life a
little easier ;-).
Thanks,
Taylor
^ permalink raw reply [relevance 0%]
* Re: What's cooking in git.git (Apr 2024, #01; Mon, 1)
@ 2024-04-01 23:08 2% ` Junio C Hamano
2024-04-01 23:27 0% ` Taylor Blau
0 siblings, 1 reply; 200+ results
From: Junio C Hamano @ 2024-04-01 23:08 UTC (permalink / raw)
To: Taylor Blau; +Cc: git
Junio C Hamano <gitster@pobox.com> writes:
>>> * tb/pseudo-merge-reachability-bitmap (2024-03-20) 24 commits
>>> ...
>> Thanks updating the description. I am waiting to reroll until after it
>> has received a little bit of review on the technical front.
>
> In the meantime I've dropped it as it interacts with tb/midx-write
> and Eric's khash-to-khashl update.
I think I got merge-fix for integrating this topic with the rest, so
I'll be resurrecting it and queuing it to 'seen' again.
^ permalink raw reply [relevance 2%]
* Re: [PATCH 17/16] config: add core.commentString
@ 2024-03-27 16:13 2% ` Junio C Hamano
0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2024-03-27 16:13 UTC (permalink / raw)
To: Jeff King
Cc: Kristoffer Haugsbakk, Dragan Simic, Manlio Perillo,
René Scharfe, Phillip Wood, git
Jeff King <peff@peff.net> writes:
> Note that you graduated kh/doc-commentchar-is-a-byte, which says "this
> ASCII character" early in the description, which will be incorrect if my
> series is merged.
True. I could tweak this patch to force a conflict
core.commentChar::
core.commentString::
Commands such as `commit` and `tag` that let you edit
- messages consider a line that begins with this character
+ messages consider a line that begins with this string
commented, and removes them after the editor returns
(default '#').
and let the rerere database to remember the resolution (which will
tweak "string" back to "character"). But I'll prepare a merge-fix
before I forget, which is a cleaner approach.
> An alternative to using "$var cannot ..." in the error messages (if we
> don't like the all-lowercase variable name) is to just say "comment
> strings cannot ...". That vaguely covers both cases, and the message
> printed by the config code itself does mention the actual variable name
> that triggered the error.
OK, because the error() return from this function will trigger
another die() in the caller, e.g.
error: core.commentchar must have at least one character
fatal: bad config variable 'core.commentchar' in file '.git/config' at line 6
so we can afford to make the "error" side vague, except that the
"fatal" one is also downcased already, so we are not really solving
anything by making the message vague, I would think. The posted
patch as-is is prefectly fine.
Side note:
I wonder if we would later want to somehow _merge_ these two
error messages, i.e. the lower-level will notice and record the
nature of the problem instead of calling error(), and the caller
will use the recorded information while composing the "fatal"
message to die with. I actually do not know if it is a good
idea to begin with. If we want to do it right, the "record"
part probably cannot be a simple "stringify into strbuf" that
will result in lego message that is harder for i18n folks.
$ git diff refs/merge-fix/jk/core-comment-string^!
diff --git a/Documentation/config/core.txt b/Documentation/config/core.txt
index bd033ab100..bbe869c497 100644
--- a/Documentation/config/core.txt
+++ b/Documentation/config/core.txt
@@ -522,7 +522,7 @@ core.editor::
core.commentChar::
core.commentString::
Commands such as `commit` and `tag` that let you edit
- messages consider a line that begins with this ASCII character
+ messages consider a line that begins with this character
commented, and removes them after the editor returns
(default '#').
+
^ permalink raw reply related [relevance 2%]
* Re: [PATCH 02/12] treewide: remove unnecessary includes in source files
@ 2023-12-03 13:15 2% ` Junio C Hamano
0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2023-12-03 13:15 UTC (permalink / raw)
To: Elijah Newren via GitGitGadget; +Cc: git, Elijah Newren
"Elijah Newren via GitGitGadget" <gitgitgadget@gmail.com> writes:
> diff --git a/trace2.c b/trace2.c
> index 6dc74dff4c7..d4220af9ae1 100644
> --- a/trace2.c
> +++ b/trace2.c
> @@ -1,12 +1,8 @@
> #include "git-compat-util.h"
> -#include "config.h"
> -#include "json-writer.h"
> -#include "quote.h"
> #include "repository.h"
> #include "run-command.h"
> #include "sigchain.h"
> #include "thread-utils.h"
> -#include "version.h"
> #include "trace.h"
> #include "trace2.h"
> #include "trace2/tr2_cfg.h"
An in-flight topic seem to want to see git_env_bool() that is
declared in parse.h that is pulled in via inclusion of config.h
hence this hunk breaks 'seen'.
> diff --git a/t/helper/test-trace2.c b/t/helper/test-trace2.c
> index d5ca0046c89..a0032ee3964 100644
> --- a/t/helper/test-trace2.c
> +++ b/t/helper/test-trace2.c
> @@ -2,7 +2,6 @@
> #include "strvec.h"
> #include "run-command.h"
> #include "exec-cmd.h"
> -#include "config.h"
> #include "repository.h"
> #include "trace2.h"
An in-flight topic starts using "struct key_value_info" that is
available via the inclusion of "config.h", hence this hunk breaks
the build of 'seen'.
> diff --git a/t/helper/test-fast-rebase.c b/t/helper/test-fast-rebase.c
> index cac20a72b3f..f9472c99143 100644
> --- a/t/helper/test-fast-rebase.c
> +++ b/t/helper/test-fast-rebase.c
> @@ -24,7 +24,6 @@
> #include "read-cache-ll.h"
> #include "refs.h"
> #include "revision.h"
> -#include "sequencer.h"
> #include "setup.h"
> #include "strvec.h"
> #include "tree.h"
I'll register the following evil merge as the merge-fix/ for this
topic.
In addition, t/helper/test-fast-rebase.c that is touched by this
step will simply disappear with the cc/git-replay topic, so it may
not be a bad idea to exclude it from the patchset.
Thanks.
diff --git a/t/helper/test-trace2.c b/t/helper/test-trace2.c
index 16089f04e1..55c06e4269 100644
--- a/t/helper/test-trace2.c
+++ b/t/helper/test-trace2.c
@@ -1,4 +1,5 @@
#include "test-tool.h"
+#include "config-parse.h"
#include "strvec.h"
#include "run-command.h"
#include "exec-cmd.h"
diff --git a/trace2.c b/trace2.c
index 4fa059199c..452428b09b 100644
--- a/trace2.c
+++ b/trace2.c
@@ -1,4 +1,5 @@
#include "git-compat-util.h"
+#include "parse.h"
#include "repository.h"
#include "run-command.h"
#include "sigchain.h"
^ permalink raw reply related [relevance 2%]
* [PATCH 14/25] documentation: fix choice of article
2023-10-08 6:45 1% ` [PATCH 01/25] documentation: wording improvements Elijah Newren via GitGitGadget
@ 2023-10-08 6:45 4% ` Elijah Newren via GitGitGadget
1 sibling, 0 replies; 200+ results
From: Elijah Newren via GitGitGadget @ 2023-10-08 6:45 UTC (permalink / raw)
To: git; +Cc: Elijah Newren, Elijah Newren
From: Elijah Newren <newren@gmail.com>
Diff best viewed with --color-diff.
Signed-off-by: Elijah Newren <newren@gmail.com>
---
Documentation/config.txt | 2 +-
Documentation/diff-generate-patch.txt | 2 +-
Documentation/howto/maintain-git.txt | 2 +-
Documentation/pretty-options.txt | 2 +-
Documentation/technical/bitmap-format.txt | 2 +-
5 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/Documentation/config.txt b/Documentation/config.txt
index 9273c7f1c65..99affec5a01 100644
--- a/Documentation/config.txt
+++ b/Documentation/config.txt
@@ -103,7 +103,7 @@ was found. See below for examples.
Conditional includes
~~~~~~~~~~~~~~~~~~~~
-You can conditionally include a config file from another by setting a
+You can conditionally include a config file from another by setting an
`includeIf.<condition>.path` variable to the name of the file to be
included.
diff --git a/Documentation/diff-generate-patch.txt b/Documentation/diff-generate-patch.txt
index 65e0b1646e1..4b307cb51bb 100644
--- a/Documentation/diff-generate-patch.txt
+++ b/Documentation/diff-generate-patch.txt
@@ -156,7 +156,7 @@ format, `/dev/null` is used to signal created or deleted
files.
+
However, if the --combined-all-paths option is provided, instead of a
-two-line from-file/to-file you get a N+1 line from-file/to-file header,
+two-line from-file/to-file you get an N+1 line from-file/to-file header,
where N is the number of parents in the merge commit:
--- a/file
diff --git a/Documentation/howto/maintain-git.txt b/Documentation/howto/maintain-git.txt
index 29c473e5e04..013014bbef6 100644
--- a/Documentation/howto/maintain-git.txt
+++ b/Documentation/howto/maintain-git.txt
@@ -411,7 +411,7 @@ Preparing a "merge-fix"
A merge of two topics may not textually conflict but still have
conflict at the semantic level. A classic example is for one topic
-to rename an variable and all its uses, while another topic adds a
+to rename a variable and all its uses, while another topic adds a
new use of the variable under its old name. When these two topics
are merged together, the reference to the variable newly added by
the latter topic will still use the old name in the result.
diff --git a/Documentation/pretty-options.txt b/Documentation/pretty-options.txt
index 335395b727f..15c6f2705d4 100644
--- a/Documentation/pretty-options.txt
+++ b/Documentation/pretty-options.txt
@@ -73,7 +73,7 @@ environment overrides). See linkgit:git-config[1] for more details.
With an optional '<ref>' argument, use the ref to find the notes
to display. The ref can specify the full refname when it begins
with `refs/notes/`; when it begins with `notes/`, `refs/` and otherwise
-`refs/notes/` is prefixed to form a full name of the ref.
+`refs/notes/` is prefixed to form the full name of the ref.
+
Multiple --notes options can be combined to control which notes are
being displayed. Examples: "--notes=foo" will show only notes from
diff --git a/Documentation/technical/bitmap-format.txt b/Documentation/technical/bitmap-format.txt
index 687c58cebcc..f761828f106 100644
--- a/Documentation/technical/bitmap-format.txt
+++ b/Documentation/technical/bitmap-format.txt
@@ -126,7 +126,7 @@ Each entry contains the following:
** {empty}
1-byte XOR-offset: ::
The xor offset used to compress this bitmap. For an entry
- in position `x`, a XOR offset of `y` means that the actual
+ in position `x`, an XOR offset of `y` means that the actual
bitmap representing this commit is composed by XORing the
bitmap for this entry with the bitmap in entry `x-y` (i.e.
the bitmap `y` entries before this one).
--
gitgitgadget
^ permalink raw reply related [relevance 4%]
* [PATCH 01/25] documentation: wording improvements
@ 2023-10-08 6:45 1% ` Elijah Newren via GitGitGadget
2023-10-08 6:45 4% ` [PATCH 14/25] documentation: fix choice of article Elijah Newren via GitGitGadget
1 sibling, 0 replies; 200+ results
From: Elijah Newren via GitGitGadget @ 2023-10-08 6:45 UTC (permalink / raw)
To: git; +Cc: Elijah Newren, Elijah Newren
From: Elijah Newren <newren@gmail.com>
Diff best viewed with --color-diff.
Signed-off-by: Elijah Newren <newren@gmail.com>
---
Documentation/CodingGuidelines | 4 ++--
Documentation/ToolsForGit.txt | 2 +-
Documentation/config.txt | 4 ++--
Documentation/config/apply.txt | 2 +-
Documentation/config/branch.txt | 2 +-
Documentation/config/clone.txt | 4 ++--
Documentation/config/credential.txt | 2 +-
Documentation/config/fetch.txt | 4 ++--
Documentation/config/fsck.txt | 4 ++--
Documentation/config/fsmonitor--daemon.txt | 2 +-
Documentation/config/gc.txt | 2 +-
Documentation/config/gpg.txt | 2 +-
Documentation/config/http.txt | 2 +-
Documentation/config/imap.txt | 2 +-
Documentation/config/mergetool.txt | 2 +-
Documentation/config/pack.txt | 6 +++---
Documentation/config/receive.txt | 2 +-
Documentation/config/safe.txt | 4 ++--
Documentation/config/submodule.txt | 2 +-
Documentation/config/trace2.txt | 2 +-
Documentation/config/transfer.txt | 4 ++--
Documentation/config/user.txt | 2 +-
Documentation/diff-generate-patch.txt | 4 ++--
Documentation/diff-options.txt | 2 +-
Documentation/git-apply.txt | 2 +-
Documentation/git-archive.txt | 16 ++++++++--------
Documentation/git-bugreport.txt | 9 +++++----
Documentation/git-checkout-index.txt | 2 +-
Documentation/git-count-objects.txt | 4 ++--
Documentation/git-credential.txt | 2 +-
Documentation/git-diff-index.txt | 4 ++--
Documentation/git-diff-tree.txt | 2 +-
Documentation/git-fast-import.txt | 2 +-
Documentation/git-hash-object.txt | 8 ++++----
Documentation/git-help.txt | 2 +-
Documentation/git-http-backend.txt | 10 +++++-----
Documentation/git-http-fetch.txt | 2 +-
Documentation/git-http-push.txt | 4 ++--
Documentation/git-index-pack.txt | 10 +++++-----
Documentation/git-init.txt | 2 +-
Documentation/git-ls-files.txt | 6 +++---
Documentation/git-maintenance.txt | 6 +++---
Documentation/git-merge.txt | 2 +-
Documentation/git-mergetool.txt | 2 +-
Documentation/git-mktree.txt | 4 ++--
Documentation/git-range-diff.txt | 2 +-
Documentation/git-read-tree.txt | 2 +-
Documentation/git-remote-ext.txt | 2 +-
Documentation/git-repack.txt | 2 +-
Documentation/git-restore.txt | 2 +-
Documentation/git-rev-list.txt | 2 +-
Documentation/git-rev-parse.txt | 2 +-
Documentation/git-send-email.txt | 4 ++--
Documentation/git-send-pack.txt | 10 +++++-----
Documentation/git-status.txt | 2 +-
Documentation/git-stripspace.txt | 2 +-
Documentation/git-var.txt | 2 +-
Documentation/git-whatchanged.txt | 2 +-
Documentation/gitformat-bundle.txt | 6 +++---
Documentation/githooks.txt | 2 +-
Documentation/gitprotocol-capabilities.txt | 14 +++++++-------
Documentation/gitprotocol-http.txt | 4 ++--
Documentation/gitweb.txt | 4 ++--
Documentation/howto/maintain-git.txt | 4 ++--
Documentation/howto/using-merge-subtree.txt | 2 +-
Documentation/i18n.txt | 2 +-
Documentation/mergetools/vimdiff.txt | 4 ++--
Documentation/technical/api-simple-ipc.txt | 2 +-
Documentation/technical/bitmap-format.txt | 2 +-
Documentation/technical/parallel-checkout.txt | 2 +-
Documentation/technical/partial-clone.txt | 2 +-
Documentation/technical/racy-git.txt | 6 +++---
Documentation/technical/reftable.txt | 2 +-
Documentation/urls.txt | 4 ++--
74 files changed, 134 insertions(+), 133 deletions(-)
diff --git a/Documentation/CodingGuidelines b/Documentation/CodingGuidelines
index 65af8d82ced..99b22ff2345 100644
--- a/Documentation/CodingGuidelines
+++ b/Documentation/CodingGuidelines
@@ -1,5 +1,5 @@
-Like other projects, we also have some guidelines to keep to the
-code. For Git in general, a few rough rules are:
+Like other projects, we also have some guidelines for our code. For
+Git in general, a few rough rules are:
- Most importantly, we never say "It's in POSIX; we'll happily
ignore your needs should your system not conform to it."
diff --git a/Documentation/ToolsForGit.txt b/Documentation/ToolsForGit.txt
index 5060d0d2314..5d01e8191aa 100644
--- a/Documentation/ToolsForGit.txt
+++ b/Documentation/ToolsForGit.txt
@@ -32,7 +32,7 @@ information on using the script.
This is adapted from Linux's suggestion in its CodingStyle document:
-- To follow rules of the CodingGuideline, it's useful to put the following in
+- To follow the rules in CodingGuidelines, it's useful to put the following in
GIT_CHECKOUT/.dir-locals.el, assuming you use cperl-mode:
----
;; note the first part is useful for C editing, too
diff --git a/Documentation/config.txt b/Documentation/config.txt
index 229b63a454c..9273c7f1c65 100644
--- a/Documentation/config.txt
+++ b/Documentation/config.txt
@@ -11,7 +11,7 @@ file. The file `/etc/gitconfig` can be used to store a system-wide
default configuration.
The configuration variables are used by both the Git plumbing
-and the porcelains. The variables are divided into sections, wherein
+and the porcelain commands. The variables are divided into sections, wherein
the fully qualified variable name of the variable itself is the last
dot-separated segment and the section name is everything before the last
dot. The variable names are case-insensitive, allow only alphanumeric
@@ -103,7 +103,7 @@ was found. See below for examples.
Conditional includes
~~~~~~~~~~~~~~~~~~~~
-You can include a config file from another conditionally by setting a
+You can conditionally include a config file from another by setting a
`includeIf.<condition>.path` variable to the name of the file to be
included.
diff --git a/Documentation/config/apply.txt b/Documentation/config/apply.txt
index 8fb8ef763df..3f9ff19db6b 100644
--- a/Documentation/config/apply.txt
+++ b/Documentation/config/apply.txt
@@ -2,7 +2,7 @@ apply.ignoreWhitespace::
When set to 'change', tells 'git apply' to ignore changes in
whitespace, in the same way as the `--ignore-space-change`
option.
- When set to one of: no, none, never, false tells 'git apply' to
+ When set to one of: no, none, never, false, it tells 'git apply' to
respect all whitespace differences.
See linkgit:git-apply[1].
diff --git a/Documentation/config/branch.txt b/Documentation/config/branch.txt
index 445341a906b..2b05ed3574b 100644
--- a/Documentation/config/branch.txt
+++ b/Documentation/config/branch.txt
@@ -36,7 +36,7 @@ branch.sort::
branch.<name>.remote::
When on branch <name>, it tells 'git fetch' and 'git push'
- which remote to fetch from/push to. The remote to push to
+ which remote to fetch from or push to. The remote to push to
may be overridden with `remote.pushDefault` (for all branches).
The remote to push to, for the current branch, may be further
overridden by `branch.<name>.pushRemote`. If no remote is
diff --git a/Documentation/config/clone.txt b/Documentation/config/clone.txt
index 26f4fb137a7..a16b1b6fa34 100644
--- a/Documentation/config/clone.txt
+++ b/Documentation/config/clone.txt
@@ -4,8 +4,8 @@ clone.defaultRemoteName::
option to linkgit:git-clone[1].
clone.rejectShallow::
- Reject to clone a repository if it is a shallow one, can be overridden by
- passing option `--reject-shallow` in command line. See linkgit:git-clone[1]
+ Reject to clone a repository if it is a shallow one; this can be overridden by
+ passing the `--reject-shallow` option on the command line. See linkgit:git-clone[1]
clone.filterSubmodules::
If a partial clone filter is provided (see `--filter` in
diff --git a/Documentation/config/credential.txt b/Documentation/config/credential.txt
index 512f31876e1..075ef8c9750 100644
--- a/Documentation/config/credential.txt
+++ b/Documentation/config/credential.txt
@@ -31,6 +31,6 @@ credentialCache.ignoreSIGHUP::
credentialStore.lockTimeoutMS::
The length of time, in milliseconds, for git-credential-store to retry
- when trying to lock the credentials file. Value 0 means not to retry at
+ when trying to lock the credentials file. A value of 0 means not to retry at
all; -1 means to try indefinitely. Default is 1000 (i.e., retry for
1s).
diff --git a/Documentation/config/fetch.txt b/Documentation/config/fetch.txt
index 568f0f75b30..c1a7cdd6bf4 100644
--- a/Documentation/config/fetch.txt
+++ b/Documentation/config/fetch.txt
@@ -52,8 +52,8 @@ fetch.pruneTags::
fetch.output::
Control how ref update status is printed. Valid values are
- `full` and `compact`. Default value is `full`. See section
- OUTPUT in linkgit:git-fetch[1] for detail.
+ `full` and `compact`. Default value is `full`. See the
+ OUTPUT section in linkgit:git-fetch[1] for detail.
fetch.negotiationAlgorithm::
Control how information about the commits in the local repository
diff --git a/Documentation/config/fsck.txt b/Documentation/config/fsck.txt
index a3c865df567..fec3eefb5b8 100644
--- a/Documentation/config/fsck.txt
+++ b/Documentation/config/fsck.txt
@@ -17,7 +17,7 @@ Unlike variables like `color.ui` and `core.editor` the
`receive.fsck.<msg-id>` and `fetch.fsck.<msg-id>` variables will not
fall back on the `fsck.<msg-id>` configuration if they aren't set. To
uniformly configure the same fsck settings in different circumstances
-all three of them they must all set to the same values.
+all three of them must be set to the same values.
+
When `fsck.<msg-id>` is set, errors can be switched to warnings and
vice versa by configuring the `fsck.<msg-id>` setting where the
@@ -59,7 +59,7 @@ Unlike variables like `color.ui` and `core.editor` the
`receive.fsck.skipList` and `fetch.fsck.skipList` variables will not
fall back on the `fsck.skipList` configuration if they aren't set. To
uniformly configure the same fsck settings in different circumstances
-all three of them they must all set to the same values.
+all three of them must be set to the same values.
+
Older versions of Git (before 2.20) documented that the object names
list should be sorted. This was never a requirement, the object names
diff --git a/Documentation/config/fsmonitor--daemon.txt b/Documentation/config/fsmonitor--daemon.txt
index c225c6c9e74..671f9b94628 100644
--- a/Documentation/config/fsmonitor--daemon.txt
+++ b/Documentation/config/fsmonitor--daemon.txt
@@ -1,5 +1,5 @@
fsmonitor.allowRemote::
- By default, the fsmonitor daemon refuses to work against network-mounted
+ By default, the fsmonitor daemon refuses to work with network-mounted
repositories. Setting `fsmonitor.allowRemote` to `true` overrides this
behavior. Only respected when `core.fsmonitor` is set to `true`.
diff --git a/Documentation/config/gc.txt b/Documentation/config/gc.txt
index ca47eb20088..17e2a8cc176 100644
--- a/Documentation/config/gc.txt
+++ b/Documentation/config/gc.txt
@@ -24,7 +24,7 @@ gc.auto::
default value is 6700.
+
Setting this to 0 disables not only automatic packing based on the
-number of loose objects, but any other heuristic `git gc --auto` will
+number of loose objects, but also any other heuristic `git gc --auto` will
otherwise use to determine if there's work to do, such as
`gc.autoPackLimit`.
diff --git a/Documentation/config/gpg.txt b/Documentation/config/gpg.txt
index 37e2831cd51..a31faab2edd 100644
--- a/Documentation/config/gpg.txt
+++ b/Documentation/config/gpg.txt
@@ -4,7 +4,7 @@ gpg.program::
same command-line interface as GPG, namely, to verify a detached
signature, "`gpg --verify $signature - <$file`" is run, and the
program is expected to signal a good signature by exiting with
- code 0, and to generate an ASCII-armored detached signature, the
+ code 0. To generate an ASCII-armored detached signature, the
standard input of "`gpg -bsau $key`" is fed with the contents to be
signed, and the program is expected to send the result to its
standard output.
diff --git a/Documentation/config/http.txt b/Documentation/config/http.txt
index 51a70781e58..1d805fdddbc 100644
--- a/Documentation/config/http.txt
+++ b/Documentation/config/http.txt
@@ -260,7 +260,7 @@ http.noEPSV::
http.userAgent::
The HTTP USER_AGENT string presented to an HTTP server. The default
- value represents the version of the client Git such as git/1.7.1.
+ value represents the version of the Git client such as git/1.7.1.
This option allows you to override this value to a more common value
such as Mozilla/4.0. This may be necessary, for instance, if
connecting through a firewall that restricts HTTP connections to a set
diff --git a/Documentation/config/imap.txt b/Documentation/config/imap.txt
index 06166fb5c04..fa0dccc3d83 100644
--- a/Documentation/config/imap.txt
+++ b/Documentation/config/imap.txt
@@ -37,7 +37,7 @@ imap.preformattedHTML::
format=fixed email. Default is `false`.
imap.authMethod::
- Specify authenticate method for authentication with IMAP server.
+ Specify the authentication method for authenticating with the IMAP server.
If Git was built with the NO_CURL option, or if your curl version is older
than 7.34.0, or if you're running git-imap-send with the `--no-curl`
option, the only supported method is 'CRAM-MD5'. If this is not set
diff --git a/Documentation/config/mergetool.txt b/Documentation/config/mergetool.txt
index 56a7eeeffb4..e9abde9d60c 100644
--- a/Documentation/config/mergetool.txt
+++ b/Documentation/config/mergetool.txt
@@ -47,7 +47,7 @@ mergetool.meld.useAutoMerge::
mergetool.vimdiff.layout::
The vimdiff backend uses this variable to control how its split
- windows look like. Applies even if you are using Neovim (`nvim`) or
+ windows appear. Applies even if you are using Neovim (`nvim`) or
gVim (`gvim`) as the merge tool. See BACKEND SPECIFIC HINTS section
ifndef::git-mergetool[]
in linkgit:git-mergetool[1].
diff --git a/Documentation/config/pack.txt b/Documentation/config/pack.txt
index 3748136d141..dcd4c871b3a 100644
--- a/Documentation/config/pack.txt
+++ b/Documentation/config/pack.txt
@@ -83,7 +83,7 @@ pack.indexVersion::
the new pack index with capabilities for packs larger than 4 GB
as well as proper protection against the repacking of corrupted
packs. Version 2 is the default. Note that version 2 is enforced
- and this config option ignored whenever the corresponding pack is
+ and this config option is ignored whenever the corresponding pack is
larger than 2 GB.
+
If you have an old Git that does not understand the version 2 `*.idx` file,
@@ -102,8 +102,8 @@ pack.packSizeLimit::
in the creation of multiple packfiles.
+
Note that this option is rarely useful, and may result in a larger total
-on-disk size (because Git will not store deltas between packs), as well
-as worse runtime performance (object lookup within multiple packs is
+on-disk size (because Git will not store deltas between packs) and
+worse runtime performance (object lookup within multiple packs is
slower than a single pack, and optimizations like reachability bitmaps
cannot cope with multiple packs).
+
diff --git a/Documentation/config/receive.txt b/Documentation/config/receive.txt
index 85d5b5a3d2d..ae526cbf584 100644
--- a/Documentation/config/receive.txt
+++ b/Documentation/config/receive.txt
@@ -19,7 +19,7 @@ receive.certNonceSeed::
key.
receive.certNonceSlop::
- When a `git push --signed` sent a push certificate with a
+ When a `git push --signed` sends a push certificate with a
"nonce" that was issued by a receive-pack serving the same
repository within this many seconds, export the "nonce"
found in the certificate to `GIT_PUSH_CERT_NONCE` to the
diff --git a/Documentation/config/safe.txt b/Documentation/config/safe.txt
index bde7f31459b..577df40223a 100644
--- a/Documentation/config/safe.txt
+++ b/Documentation/config/safe.txt
@@ -14,7 +14,7 @@ repository that contains a bare repository and running a Git command
within that directory.
+
This config setting is only respected in protected configuration (see
-<<SCOPES>>). This prevents the untrusted repository from tampering with
+<<SCOPES>>). This prevents untrusted repositories from tampering with
this value.
safe.directory::
@@ -32,7 +32,7 @@ override any such directories specified in the system config), add a
`safe.directory` entry with an empty value.
+
This config setting is only respected in protected configuration (see
-<<SCOPES>>). This prevents the untrusted repository from tampering with this
+<<SCOPES>>). This prevents untrusted repositories from tampering with this
value.
+
The value of this setting is interpolated, i.e. `~/<path>` expands to a
diff --git a/Documentation/config/submodule.txt b/Documentation/config/submodule.txt
index 6490527b45b..665419fa135 100644
--- a/Documentation/config/submodule.txt
+++ b/Documentation/config/submodule.txt
@@ -2,7 +2,7 @@ submodule.<name>.url::
The URL for a submodule. This variable is copied from the .gitmodules
file to the git config via 'git submodule init'. The user can change
the configured URL before obtaining the submodule via 'git submodule
- update'. If neither submodule.<name>.active or submodule.active are
+ update'. If neither submodule.<name>.active nor submodule.active are
set, the presence of this variable is used as a fallback to indicate
whether the submodule is of interest to git commands.
See linkgit:git-submodule[1] and linkgit:gitmodules[5] for details.
diff --git a/Documentation/config/trace2.txt b/Documentation/config/trace2.txt
index fe1642f0d40..3b6bca2b7ae 100644
--- a/Documentation/config/trace2.txt
+++ b/Documentation/config/trace2.txt
@@ -66,6 +66,6 @@ trace2.destinationDebug::
trace2.maxFiles::
Integer. When writing trace files to a target directory, do not
- write additional traces if we would exceed this many files. Instead,
+ write additional traces if doing so would exceed this many files. Instead,
write a sentinel file that will block further tracing to this
directory. Defaults to 0, which disables this check.
diff --git a/Documentation/config/transfer.txt b/Documentation/config/transfer.txt
index c3ac767d1e4..55e13428db1 100644
--- a/Documentation/config/transfer.txt
+++ b/Documentation/config/transfer.txt
@@ -7,7 +7,7 @@ transfer.credentialsInUrl::
and any other direct use of the configured URL.
+
Note that this is currently limited to detecting credentials in
-`remote.<name>.url` configuration, it won't detect credentials in
+`remote.<name>.url` configuration; it won't detect credentials in
`remote.<name>.pushurl` configuration.
+
You might want to enable this to prevent inadvertent credentials
@@ -26,7 +26,7 @@ exposure, e.g. because:
documented in procfs(5) allows for configuring this behavior.
+
If such concerns don't apply to you then you probably don't need to be
-concerned about credentials exposure due to storing that sensitive
+concerned about credentials exposure due to storing sensitive
data in git's configuration files. If you do want to use this, set
`transfer.credentialsInUrl` to one of these values:
+
diff --git a/Documentation/config/user.txt b/Documentation/config/user.txt
index ec9233b060a..958e62464a5 100644
--- a/Documentation/config/user.txt
+++ b/Documentation/config/user.txt
@@ -10,7 +10,7 @@ committer.email::
If you need the `author` or `committer` to be different, the
`author.name`, `author.email`, `committer.name` or
`committer.email` variables can be set.
- Also, all of these can be overridden by the `GIT_AUTHOR_NAME`,
+ All of these can be overridden by the `GIT_AUTHOR_NAME`,
`GIT_AUTHOR_EMAIL`, `GIT_COMMITTER_NAME`,
`GIT_COMMITTER_EMAIL` and `EMAIL` environment variables.
+
diff --git a/Documentation/diff-generate-patch.txt b/Documentation/diff-generate-patch.txt
index 546adf79e5a..55df903abd1 100644
--- a/Documentation/diff-generate-patch.txt
+++ b/Documentation/diff-generate-patch.txt
@@ -146,7 +146,7 @@ information about detected contents movement (renames and
copying detection) are designed to work with diff of two
<tree-ish> and are not used by combined diff format.
-3. It is followed by two-line from-file/to-file header
+3. It is followed by a two-line from-file/to-file header:
--- a/file
+++ b/file
@@ -157,7 +157,7 @@ files.
+
However, if the --combined-all-paths option is provided, instead of a
two-line from-file/to-file you get a N+1 line from-file/to-file header,
-where N is the number of parents in the merge commit
+where N is the number of parents in the merge commit:
--- a/file
--- a/file
diff --git a/Documentation/diff-options.txt b/Documentation/diff-options.txt
index 35fae7c87c8..8917ce7a9e1 100644
--- a/Documentation/diff-options.txt
+++ b/Documentation/diff-options.txt
@@ -733,7 +733,7 @@ matches "`fooasdfbar`" and "`foo/bar/baz/asdf`" but not "`foobarx`".
--rotate-to=<file>::
Discard the files before the named <file> from the output
(i.e. 'skip to'), or move them to the end of the output
- (i.e. 'rotate to'). These were invented primarily for use
+ (i.e. 'rotate to'). These options were invented primarily for the use
of the `git difftool` command, and may not be very useful
otherwise.
diff --git a/Documentation/git-apply.txt b/Documentation/git-apply.txt
index 5e16e6db7e2..b6e7510d068 100644
--- a/Documentation/git-apply.txt
+++ b/Documentation/git-apply.txt
@@ -159,7 +159,7 @@ discouraged.
--allow-binary-replacement::
--binary::
- Historically we did not allow binary patch applied
+ Historically we did not allow binary patch application
without an explicit permission from the user, and this
flag was the way to do so. Currently we always allow binary
patch application, so this is a no-op.
diff --git a/Documentation/git-archive.txt b/Documentation/git-archive.txt
index 6bab201d375..98526f2beba 100644
--- a/Documentation/git-archive.txt
+++ b/Documentation/git-archive.txt
@@ -21,14 +21,14 @@ structure for the named tree, and writes it out to the standard
output. If <prefix> is specified it is
prepended to the filenames in the archive.
-'git archive' behaves differently when given a tree ID versus when
-given a commit ID or tag ID. In the first case the current time is
-used as the modification time of each file in the archive. In the latter
-case the commit time as recorded in the referenced commit object is
-used instead. Additionally the commit ID is stored in a global
-extended pax header if the tar format is used; it can be extracted
-using 'git get-tar-commit-id'. In ZIP files it is stored as a file
-comment.
+'git archive' behaves differently when given a tree ID as opposed to a
+commit ID or tag ID. When a tree ID is provided, the current time is
+used as the modification time of each file in the archive. On the
+other hand, when a commit ID or tag ID is provided, the commit time as
+recorded in the referenced commit object is used instead.
+Additionally the commit ID is stored in a global extended pax header
+if the tar format is used; it can be extracted using 'git
+get-tar-commit-id'. In ZIP files it is stored as a file comment.
OPTIONS
-------
diff --git a/Documentation/git-bugreport.txt b/Documentation/git-bugreport.txt
index eca726e5791..392d9eb6aec 100644
--- a/Documentation/git-bugreport.txt
+++ b/Documentation/git-bugreport.txt
@@ -13,10 +13,11 @@ SYNOPSIS
DESCRIPTION
-----------
-Captures information about the user's machine, Git client, and repository state,
-as well as a form requesting information about the behavior the user observed,
-into a single text file which the user can then share, for example to the Git
-mailing list, in order to report an observed bug.
+Collects information about the user's machine, Git client, and repository
+state, in addition to a form requesting information about the behavior the
+user observed, and stores it in a single text file which the user can then
+share, for example to the Git mailing list, in order to report an observed
+bug.
The following information is requested from the user:
diff --git a/Documentation/git-checkout-index.txt b/Documentation/git-checkout-index.txt
index 01dbd5cbf54..d1738f43308 100644
--- a/Documentation/git-checkout-index.txt
+++ b/Documentation/git-checkout-index.txt
@@ -18,7 +18,7 @@ SYNOPSIS
DESCRIPTION
-----------
-Will copy all files listed from the index to the working directory
+Copies all listed files from the index to the working directory
(not overwriting existing files).
OPTIONS
diff --git a/Documentation/git-count-objects.txt b/Documentation/git-count-objects.txt
index cb9b4d2e460..b28cc3a510a 100644
--- a/Documentation/git-count-objects.txt
+++ b/Documentation/git-count-objects.txt
@@ -12,7 +12,7 @@ SYNOPSIS
DESCRIPTION
-----------
-This counts the number of unpacked object files and disk space consumed by
+Counts the number of unpacked object files and disk space consumed by
them, to help you decide when it is a good time to repack.
@@ -20,7 +20,7 @@ OPTIONS
-------
-v::
--verbose::
- Report in more detail:
+ Provide more detailed reports:
+
count: the number of loose objects
+
diff --git a/Documentation/git-credential.txt b/Documentation/git-credential.txt
index a220afed4f3..918a0aa42b2 100644
--- a/Documentation/git-credential.txt
+++ b/Documentation/git-credential.txt
@@ -94,7 +94,7 @@ unlocked) before it returned `password=secr3t`.
that `git credential` will ask for a new password in its next
invocation. In either case, `git credential` should be fed with
the credential description obtained from step (2) (which also
- contain the ones provided in step (1)).
+ contains the fields provided in step (1)).
[[IOFMT]]
INPUT/OUTPUT FORMAT
diff --git a/Documentation/git-diff-index.txt b/Documentation/git-diff-index.txt
index c30d8f0da8a..4de1d4c8f11 100644
--- a/Documentation/git-diff-index.txt
+++ b/Documentation/git-diff-index.txt
@@ -13,10 +13,10 @@ SYNOPSIS
DESCRIPTION
-----------
-Compares the content and mode of the blobs found in a tree object
+Compare the content and mode of the blobs found in a tree object
with the corresponding tracked files in the working tree, or with the
corresponding paths in the index. When <path> arguments are present,
-compares only paths matching those patterns. Otherwise all tracked
+compare only paths matching those patterns. Otherwise all tracked
files are compared.
OPTIONS
diff --git a/Documentation/git-diff-tree.txt b/Documentation/git-diff-tree.txt
index 274d5eaba93..81caad5c95c 100644
--- a/Documentation/git-diff-tree.txt
+++ b/Documentation/git-diff-tree.txt
@@ -15,7 +15,7 @@ SYNOPSIS
DESCRIPTION
-----------
-Compares the content and mode of the blobs found via two tree objects.
+Compare the content and mode of blobs found via two tree objects.
If there is only one <tree-ish> given, the commit is compared with its parents
(see --stdin below).
diff --git a/Documentation/git-fast-import.txt b/Documentation/git-fast-import.txt
index 8b5dd6add00..a6a054f86d2 100644
--- a/Documentation/git-fast-import.txt
+++ b/Documentation/git-fast-import.txt
@@ -622,7 +622,7 @@ in octal. Git only supports the following modes:
* `100755` or `755`: A normal, but executable, file.
* `120000`: A symlink, the content of the file will be the link target.
* `160000`: A gitlink, SHA-1 of the object refers to a commit in
- another repository. Git links can only be specified by SHA or through
+ another repository. Git links can only be specified either by SHA or through
a commit mark. They are used to implement submodules.
* `040000`: A subdirectory. Subdirectories can only be specified by
SHA or through a tree mark set with `--import-marks`.
diff --git a/Documentation/git-hash-object.txt b/Documentation/git-hash-object.txt
index 8577f7a7d40..ef4719ae41c 100644
--- a/Documentation/git-hash-object.txt
+++ b/Documentation/git-hash-object.txt
@@ -39,10 +39,10 @@ OPTIONS
of from the command-line.
--path::
- Hash object as it were located at the given path. The location of
- file does not directly influence on the hash value, but path is
- used to determine what Git filters should be applied to the object
- before it can be placed to the object database, and, as result of
+ Hash object as if it were located at the given path. The location of
+ the file does not directly influence the hash value, but the path is
+ used to determine which Git filters should be applied to the object
+ before it can be placed in the object database. As a result of
applying filters, the actual blob put into the object database may
differ from the given file. This option is mainly useful for hashing
temporary files located outside of the working directory or files
diff --git a/Documentation/git-help.txt b/Documentation/git-help.txt
index 2b0b5e390dc..7cb4b4bda18 100644
--- a/Documentation/git-help.txt
+++ b/Documentation/git-help.txt
@@ -109,7 +109,7 @@ other display programs (see below).
format. A web browser will be used for that purpose.
+
The web browser can be specified using the configuration variable
-`help.browser`, or `web.browser` if the former is not set. If none of
+`help.browser`, or `web.browser` if the former is not set. If neither of
these config variables is set, the 'git web{litdd}browse' helper script
(called by 'git help') will pick a suitable default. See
linkgit:git-web{litdd}browse[1] for more information about this.
diff --git a/Documentation/git-http-backend.txt b/Documentation/git-http-backend.txt
index 0c5c0dde19f..f37ddaded82 100644
--- a/Documentation/git-http-backend.txt
+++ b/Documentation/git-http-backend.txt
@@ -23,7 +23,7 @@ discussion of `GIT_PROTOCOL` in the ENVIRONMENT section below.
It verifies that the directory has the magic file
"git-daemon-export-ok", and it will refuse to export any Git directory
that hasn't explicitly been marked for export this way (unless the
-`GIT_HTTP_EXPORT_ALL` environmental variable is set).
+`GIT_HTTP_EXPORT_ALL` environment variable is set).
By default, only the `upload-pack` service is enabled, which serves
'git fetch-pack' and 'git ls-remote' clients, which are invoked from
@@ -42,12 +42,12 @@ http.getanyfile::
any file within the repository, including objects that are
no longer reachable from a branch but are still present.
It is enabled by default, but a repository can disable it
- by setting this configuration item to `false`.
+ by setting this configuration value to `false`.
http.uploadpack::
This serves 'git fetch-pack' and 'git ls-remote' clients.
It is enabled by default, but a repository can disable it
- by setting this configuration item to `false`.
+ by setting this configuration value to `false`.
http.receivepack::
This serves 'git send-pack' clients, allowing push. It is
@@ -265,12 +265,12 @@ by the invoking web server, including:
* QUERY_STRING
* REQUEST_METHOD
-The `GIT_HTTP_EXPORT_ALL` environmental variable may be passed to
+The `GIT_HTTP_EXPORT_ALL` environment variable may be passed to
'git-http-backend' to bypass the check for the "git-daemon-export-ok"
file in each repository before allowing export of that repository.
The `GIT_HTTP_MAX_REQUEST_BUFFER` environment variable (or the
-`http.maxRequestBuffer` config variable) may be set to change the
+`http.maxRequestBuffer` config option) may be set to change the
largest ref negotiation request that git will handle during a fetch; any
fetch requiring a larger buffer will not succeed. This value should not
normally need to be changed, but may be helpful if you are fetching from
diff --git a/Documentation/git-http-fetch.txt b/Documentation/git-http-fetch.txt
index 319062c021b..4ec7c68d3b9 100644
--- a/Documentation/git-http-fetch.txt
+++ b/Documentation/git-http-fetch.txt
@@ -31,7 +31,7 @@ commit-id::
Report what is downloaded.
-w <filename>::
- Writes the commit-id into the filename under $GIT_DIR/refs/<filename> on
+ Writes the commit-id into the specified filename under $GIT_DIR/refs/<filename> on
the local end after the transfer is complete.
--stdin::
diff --git a/Documentation/git-http-push.txt b/Documentation/git-http-push.txt
index 7c6a6dd7f6a..8b4a5791c8c 100644
--- a/Documentation/git-http-push.txt
+++ b/Documentation/git-http-push.txt
@@ -83,8 +83,8 @@ and where it is pushed is determined by using the destination side.
Without `--force`, the <src> ref is stored at the remote only if
<dst> does not exist, or <dst> is a proper subset (i.e. an
ancestor) of <src>. This check, known as "fast-forward check",
-is performed in order to avoid accidentally overwriting the
-remote ref and lose other peoples' commits from there.
+is performed to avoid accidentally overwriting the
+remote ref and losing other peoples' commits from there.
With `--force`, the fast-forward check is disabled for all refs.
diff --git a/Documentation/git-index-pack.txt b/Documentation/git-index-pack.txt
index 4e71c256ecb..6486620c3d8 100644
--- a/Documentation/git-index-pack.txt
+++ b/Documentation/git-index-pack.txt
@@ -16,10 +16,10 @@ SYNOPSIS
DESCRIPTION
-----------
-Reads a packed archive (.pack) from the specified file, and
-builds a pack index file (.idx) for it. Optionally writes a
+Reads a packed archive (.pack) from the specified file,
+builds a pack index file (.idx) for it, and optionally writes a
reverse-index (.rev) for the specified pack. The packed
-archive together with the pack index can then be placed in
+archive, together with the pack index, can then be placed in
the objects/pack/ directory of a Git repository.
@@ -68,8 +68,8 @@ OPTIONS
updated to use objects contained in the pack.
--keep=<msg>::
- Like --keep create a .keep file before moving the index into
- its final destination, but rather than creating an empty file
+ Like --keep, create a .keep file before moving the index into
+ its final destination. However, instead of creating an empty file
place '<msg>' followed by an LF into the .keep file. The '<msg>'
message can later be searched for within all .keep files to
locate any which have outlived their usefulness.
diff --git a/Documentation/git-init.txt b/Documentation/git-init.txt
index 160dea1372c..30ab86ab96a 100644
--- a/Documentation/git-init.txt
+++ b/Documentation/git-init.txt
@@ -99,7 +99,7 @@ specified.
'group' (or 'true')::
-Make the repository group-writable, (and g+sx, since the git group may be not
+Make the repository group-writable, (and g+sx, since the git group may not be
the primary group of all users). This is used to loosen the permissions of an
otherwise safe umask(2) value. Note that the umask still applies to the other
permission bits (e.g. if umask is '0022', using 'group' will not remove read
diff --git a/Documentation/git-ls-files.txt b/Documentation/git-ls-files.txt
index 1bc0328bb78..60d1cca1496 100644
--- a/Documentation/git-ls-files.txt
+++ b/Documentation/git-ls-files.txt
@@ -25,12 +25,12 @@ SYNOPSIS
DESCRIPTION
-----------
-This merges the file listing in the index with the actual working
+This command merges the file listing in the index with the actual working
directory list, and shows different combinations of the two.
-One or more of the options below may be used to determine the files
+Several flags can be used to determine which files are
shown, and each file may be printed multiple times if there are
-multiple entries in the index or multiple statuses are applicable for
+multiple entries in the index or if multiple statuses are applicable for
the relevant file selection options.
OPTIONS
diff --git a/Documentation/git-maintenance.txt b/Documentation/git-maintenance.txt
index 805e5a2e3a0..51d0f7e94b6 100644
--- a/Documentation/git-maintenance.txt
+++ b/Documentation/git-maintenance.txt
@@ -102,9 +102,9 @@ prefetch::
requested refs within `refs/prefetch/`. Also, tags are not updated.
+
This is done to avoid disrupting the remote-tracking branches. The end users
-expect these refs to stay unmoved unless they initiate a fetch. With prefetch
-task, however, the objects necessary to complete a later real fetch would
-already be obtained, so the real fetch would go faster. In the ideal case,
+expect these refs to stay unmoved unless they initiate a fetch. However,
+with the prefetch task, the objects necessary to complete a later real fetch
+would already be obtained, making the real fetch faster. In the ideal case,
it will just become an update to a bunch of remote-tracking branches without
any object transfer.
diff --git a/Documentation/git-merge.txt b/Documentation/git-merge.txt
index 8625c5cb0ec..e8ab3403191 100644
--- a/Documentation/git-merge.txt
+++ b/Documentation/git-merge.txt
@@ -336,7 +336,7 @@ After seeing a conflict, you can do two things:
You can work through the conflict with a number of tools:
* Use a mergetool. `git mergetool` to launch a graphical
- mergetool which will work you through the merge.
+ mergetool which will work through the merge with you.
* Look at the diffs. `git diff` will show a three-way diff,
highlighting changes from both the `HEAD` and `MERGE_HEAD`
diff --git a/Documentation/git-mergetool.txt b/Documentation/git-mergetool.txt
index 07535f6576e..800a3cbe6f3 100644
--- a/Documentation/git-mergetool.txt
+++ b/Documentation/git-mergetool.txt
@@ -115,7 +115,7 @@ These are safe to remove once a file has been merged and its
`git mergetool` session has completed.
Setting the `mergetool.keepBackup` configuration variable to `false`
-causes `git mergetool` to automatically remove the backup as files
+causes `git mergetool` to automatically remove the backup files as files
are successfully merged.
BACKEND SPECIFIC HINTS
diff --git a/Documentation/git-mktree.txt b/Documentation/git-mktree.txt
index 76b44f4da10..383f09dd333 100644
--- a/Documentation/git-mktree.txt
+++ b/Documentation/git-mktree.txt
@@ -25,13 +25,13 @@ OPTIONS
--missing::
Allow missing objects. The default behaviour (without this option)
- is to verify that each tree entry's sha1 identifies an existing
+ is to verify that each tree entry's hash identifies an existing
object. This option has no effect on the treatment of gitlink entries
(aka "submodules") which are always allowed to be missing.
--batch::
Allow building of more than one tree object before exiting. Each
- tree is separated by a single blank line. The final new-line is
+ tree is separated by a single blank line. The final newline is
optional. Note - if the `-z` option is used, lines are terminated
with NUL.
diff --git a/Documentation/git-range-diff.txt b/Documentation/git-range-diff.txt
index 0b393715d70..605a92e224e 100644
--- a/Documentation/git-range-diff.txt
+++ b/Documentation/git-range-diff.txt
@@ -70,7 +70,7 @@ to revert to color all lines according to the outer diff markers
Defaults to 60. Try a larger value if `git range-diff` erroneously
considers a large change a total rewrite (deletion of one commit
and addition of another), and a smaller one in the reverse case.
- See the ``Algorithm`` section below for an explanation why this is
+ See the ``Algorithm`` section below for an explanation of why this is
needed.
--left-only::
diff --git a/Documentation/git-read-tree.txt b/Documentation/git-read-tree.txt
index b09707474df..32065318532 100644
--- a/Documentation/git-read-tree.txt
+++ b/Documentation/git-read-tree.txt
@@ -25,7 +25,7 @@ fast-forward (i.e. 2-way) merge, or a 3-way merge, with the `-m`
flag. When used with `-m`, the `-u` flag causes it to also update
the files in the work tree with the result of the merge.
-Trivial merges are done by 'git read-tree' itself. Only conflicting paths
+Only trivial merges are done by 'git read-tree' itself. Only conflicting paths
will be in unmerged state when 'git read-tree' returns.
OPTIONS
diff --git a/Documentation/git-remote-ext.txt b/Documentation/git-remote-ext.txt
index 88ea7e1cc01..17d84f23c99 100644
--- a/Documentation/git-remote-ext.txt
+++ b/Documentation/git-remote-ext.txt
@@ -82,7 +82,7 @@ begins with `ext::`. Examples:
"ext::ssh -i /home/foo/.ssh/somekey user@host.example %S 'foo/repo'"::
Like host.example:foo/repo, but use /home/foo/.ssh/somekey as
- keypair and user as user on remote side. This avoids needing to
+ keypair and user as user on remote side. This avoids the need to
edit .ssh/config.
"ext::socat -t3600 - ABSTRACT-CONNECT:/git-server %G/somerepo"::
diff --git a/Documentation/git-repack.txt b/Documentation/git-repack.txt
index 4017157949e..cbc0ece61e3 100644
--- a/Documentation/git-repack.txt
+++ b/Documentation/git-repack.txt
@@ -165,7 +165,7 @@ depth is 4095.
Exclude the given pack from repacking. This is the equivalent
of having `.keep` file on the pack. `<pack-name>` is the
pack file name without leading directory (e.g. `pack-123.pack`).
- The option could be specified multiple times to keep multiple
+ The option can be specified multiple times to keep multiple
packs.
--unpack-unreachable=<when>::
diff --git a/Documentation/git-restore.txt b/Documentation/git-restore.txt
index c70444705b5..ad546a37cff 100644
--- a/Documentation/git-restore.txt
+++ b/Documentation/git-restore.txt
@@ -105,7 +105,7 @@ in linkgit:git-checkout[1] for details.
specified. Unmerged paths on the working tree are left alone.
--ignore-skip-worktree-bits::
- In sparse checkout mode, by default is to only update entries
+ In sparse checkout mode, the default is to only update entries
matched by `<pathspec>` and sparse patterns in
$GIT_DIR/info/sparse-checkout. This option ignores the sparse
patterns and unconditionally restores any files in
diff --git a/Documentation/git-rev-list.txt b/Documentation/git-rev-list.txt
index 51029a22715..fbe913ee746 100644
--- a/Documentation/git-rev-list.txt
+++ b/Documentation/git-rev-list.txt
@@ -17,7 +17,7 @@ DESCRIPTION
:git-rev-list: 1
include::rev-list-description.txt[]
-'rev-list' is a very essential Git command, since it
+'rev-list' is an essential Git command, since it
provides the ability to build and traverse commit ancestry graphs. For
this reason, it has a lot of different options that enables it to be
used by commands as different as 'git bisect' and
diff --git a/Documentation/git-rev-parse.txt b/Documentation/git-rev-parse.txt
index 6a4968f68a3..2294e9a519a 100644
--- a/Documentation/git-rev-parse.txt
+++ b/Documentation/git-rev-parse.txt
@@ -36,7 +36,7 @@ Each of these options must appear first on the command line.
--sq-quote::
Use 'git rev-parse' in shell quoting mode (see SQ-QUOTE
section below). In contrast to the `--sq` option below, this
- mode does only quoting. Nothing else is done to command input.
+ mode only does quoting. Nothing else is done to command input.
Options for --parseopt
~~~~~~~~~~~~~~~~~~~~~~
diff --git a/Documentation/git-send-email.txt b/Documentation/git-send-email.txt
index 492a82323da..e90d041817e 100644
--- a/Documentation/git-send-email.txt
+++ b/Documentation/git-send-email.txt
@@ -468,8 +468,8 @@ Information
--dump-aliases::
Instead of the normal operation, dump the shorthand alias names from
- the configured alias file(s), one per line in alphabetical order. Note,
- this only includes the alias name and not its expanded email addresses.
+ the configured alias file(s), one per line in alphabetical order. Note
+ that this only includes the alias name and not its expanded email addresses.
See 'sendemail.aliasesfile' for more information about aliases.
diff --git a/Documentation/git-send-pack.txt b/Documentation/git-send-pack.txt
index 595b002152f..e76c262d7f9 100644
--- a/Documentation/git-send-pack.txt
+++ b/Documentation/git-send-pack.txt
@@ -55,7 +55,7 @@ be in a separate packet, and the list must end with a flush packet.
--force::
Usually, the command refuses to update a remote ref that
is not an ancestor of the local ref used to overwrite it.
- This flag disables the check. What this means is that
+ This flag disables the check. This means that
the remote repository can lose commits; use it with
care.
@@ -117,7 +117,7 @@ When one or more '<ref>' are specified explicitly (whether on the
command line or via `--stdin`), it can be either a
single pattern, or a pair of such pattern separated by a colon
":" (this means that a ref name cannot have a colon in it). A
-single pattern '<name>' is just a shorthand for '<name>:<name>'.
+single pattern '<name>' is just shorthand for '<name>:<name>'.
Each pattern pair consists of the source side (before the colon)
and the destination side (after the colon). The ref to be
@@ -143,9 +143,9 @@ name. See linkgit:git-rev-parse[1].
Without `--force`, the <src> ref is stored at the remote only if
<dst> does not exist, or <dst> is a proper subset (i.e. an
-ancestor) of <src>. This check, known as "fast-forward check",
-is performed in order to avoid accidentally overwriting the
-remote ref and lose other peoples' commits from there.
+ancestor) of <src>. This check, known as the "fast-forward check",
+is performed to avoid accidentally overwriting the
+remote ref and losing other people's commits from there.
With `--force`, the fast-forward check is disabled for all refs.
diff --git a/Documentation/git-status.txt b/Documentation/git-status.txt
index b27d127b5e2..51f38218f0d 100644
--- a/Documentation/git-status.txt
+++ b/Documentation/git-status.txt
@@ -251,7 +251,7 @@ Submodules have more state and instead report
m the submodule has modified content
? the submodule has untracked files
-since modified content or untracked files in a submodule cannot be added
+This is since modified content or untracked files in a submodule cannot be added
via `git add` in the superproject to prepare a commit.
'm' and '?' are applied recursively. For example if a nested submodule
diff --git a/Documentation/git-stripspace.txt b/Documentation/git-stripspace.txt
index 2438f76da05..3dc630da4b7 100644
--- a/Documentation/git-stripspace.txt
+++ b/Documentation/git-stripspace.txt
@@ -41,7 +41,7 @@ OPTIONS
-c::
--comment-lines::
- Prepend comment character and blank to each line. Lines will automatically
+ Prepend the comment character and a blank space to each line. Lines will automatically
be terminated with a newline. On empty lines, only the comment character
will be prepended.
diff --git a/Documentation/git-var.txt b/Documentation/git-var.txt
index c38fb3968bc..0680568dfda 100644
--- a/Documentation/git-var.txt
+++ b/Documentation/git-var.txt
@@ -19,7 +19,7 @@ no value.
OPTIONS
-------
-l::
- Cause the logical variables to be listed. In addition, all the
+ Display the logical variables. In addition, all the
variables of the Git configuration file .git/config are listed
as well. (However, the configuration variables listing functionality
is deprecated in favor of `git config -l`.)
diff --git a/Documentation/git-whatchanged.txt b/Documentation/git-whatchanged.txt
index 8b63ceb00e7..5cbb31f33e3 100644
--- a/Documentation/git-whatchanged.txt
+++ b/Documentation/git-whatchanged.txt
@@ -20,7 +20,7 @@ New users are encouraged to use linkgit:git-log[1] instead. The
`whatchanged` command is essentially the same as linkgit:git-log[1]
but defaults to show the raw format diff output and to skip merges.
-The command is kept primarily for historical reasons; fingers of
+The command is primarily kept for historical reasons; fingers of
many people who learned Git long before `git log` was invented by
reading Linux kernel mailing list are trained to type it.
diff --git a/Documentation/gitformat-bundle.txt b/Documentation/gitformat-bundle.txt
index 00e0a20e657..f1acf196e10 100644
--- a/Documentation/gitformat-bundle.txt
+++ b/Documentation/gitformat-bundle.txt
@@ -86,10 +86,10 @@ In the bundle format, there can be a comment following a prerequisite obj-id.
This is a comment and it has no specific meaning. The writer of the bundle MAY
put any string here. The reader of the bundle MUST ignore the comment.
-Note on the shallow clone and a Git bundle
-~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+Note on shallow clones and Git bundles
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-Note that the prerequisites does not represent a shallow-clone boundary. The
+Note that the prerequisites do not represent a shallow-clone boundary. The
semantics of the prerequisites and the shallow-clone boundaries are different,
and the Git bundle v2 format cannot represent a shallow clone repository.
diff --git a/Documentation/githooks.txt b/Documentation/githooks.txt
index 86f804720ae..63eb030b34d 100644
--- a/Documentation/githooks.txt
+++ b/Documentation/githooks.txt
@@ -345,7 +345,7 @@ for the user.
The default 'update' hook, when enabled--and with
`hooks.allowunannotated` config option unset or set to false--prevents
-unannotated tags to be pushed.
+unannotated tags from being pushed.
[[proc-receive]]
proc-receive
diff --git a/Documentation/gitprotocol-capabilities.txt b/Documentation/gitprotocol-capabilities.txt
index 0fb5ea0c1ca..5d5e39a7039 100644
--- a/Documentation/gitprotocol-capabilities.txt
+++ b/Documentation/gitprotocol-capabilities.txt
@@ -61,8 +61,8 @@ complete cut across the DAG, or the client has said "done".
Without multi_ack, a client sends have lines in --date-order until
the server has found a common base. That means the client will send
have lines that are already known by the server to be common, because
-they overlap in time with another branch that the server hasn't found
-a common base on yet.
+they overlap in time with another branch on which the server hasn't found
+a common base yet.
For example suppose the client has commits in caps that the server
doesn't and the server has commits in lower case that the client
@@ -135,7 +135,7 @@ to disable the feature in a backwards-compatible manner.
side-band, side-band-64k
------------------------
-This capability means that server can send, and client understand multiplexed
+This capability means that the server can send, and the client can understand, multiplexed
progress reports and error info interleaved with the packfile itself.
These two options are mutually exclusive. A modern client always
@@ -163,14 +163,14 @@ Further, with side-band and its up to 1000-byte messages, it's actually
same deal, you have up to 65519 bytes of data and 1 byte for the stream
code.
-The client MUST send only maximum of one of "side-band" and "side-
-band-64k". Server MUST diagnose it as an error if client requests
+The client MUST send only one of "side-band" and "side-
+band-64k". The server MUST diagnose it as an error if client requests
both.
ofs-delta
---------
-Server can send, and client understand PACKv2 with delta referring to
+The server can send, and the client can understand, PACKv2 with delta referring to
its base by position in pack rather than by an obj-id. That is, they can
send/read OBJ_OFS_DELTA (aka type 6) in a packfile.
@@ -252,7 +252,7 @@ the current shallow boundary, instead of the depth from remote refs.
no-progress
-----------
-The client was started with "git clone -q" or something, and doesn't
+The client was started with "git clone -q" or something similar, and doesn't
want that side band 2. Basically the client just says "I do not
wish to receive stream 2 on sideband, so do not send it to me, and if
you did, I will drop it on the floor anyway". However, the sideband
diff --git a/Documentation/gitprotocol-http.txt b/Documentation/gitprotocol-http.txt
index ccc13f0a407..fcc2b25ee9f 100644
--- a/Documentation/gitprotocol-http.txt
+++ b/Documentation/gitprotocol-http.txt
@@ -379,7 +379,7 @@ C: Place any object seen into set `advertised`.
C: Build an empty set, `common`, to hold the objects that are later
determined to be on both ends.
-C: Build a set, `want`, of the objects from `advertised` the client
+C: Build a set, `want`, of the objects from `advertised` that the client
wants to fetch, based on what it saw during ref discovery.
C: Start a queue, `c_pending`, ordered by commit time (popping newest
@@ -423,7 +423,7 @@ multiple commands. Object names MUST be given using the object format
negotiated through the `object-format` capability (default SHA-1).
The `have` list is created by popping the first 32 commits
-from `c_pending`. Less can be supplied if `c_pending` empties.
+from `c_pending`. Fewer can be supplied if `c_pending` empties.
If the client has sent 256 "have" commits and has not yet
received one of those back from `s_common`, or the client has
diff --git a/Documentation/gitweb.txt b/Documentation/gitweb.txt
index af6bf3c45ec..bb9cbad7f3f 100644
--- a/Documentation/gitweb.txt
+++ b/Documentation/gitweb.txt
@@ -20,13 +20,13 @@ Gitweb provides a web interface to Git repositories. Its features include:
* Browsing every revision of the repository.
* Viewing the contents of files in the repository at any revision.
* Viewing the revision log of branches, history of files and directories,
- see what was changed when, by who.
+ seeing what was changed, when, and by whom.
* Viewing the blame/annotation details of any file (if enabled).
* Generating RSS and Atom feeds of commits, for any branch.
The feeds are auto-discoverable in modern web browsers.
* Viewing everything that was changed in a revision, and step through
revisions one at a time, viewing the history of the repository.
-* Finding commits which commit messages matches given search term.
+* Finding commits whose commit messages match a given search term.
See http://repo.or.cz/w/git.git/tree/HEAD:/gitweb/[] for gitweb source code,
browsed using gitweb itself.
diff --git a/Documentation/howto/maintain-git.txt b/Documentation/howto/maintain-git.txt
index d07c6d44e53..29c473e5e04 100644
--- a/Documentation/howto/maintain-git.txt
+++ b/Documentation/howto/maintain-git.txt
@@ -104,7 +104,7 @@ by doing the following:
files in mbox format).
- Write his own patches to address issues raised on the list but
- nobody has stepped up solving. Send it out just like other
+ nobody has stepped up to solve. Send it out just like other
contributors do, and pick them up just like patches from other
contributors (see above).
@@ -417,7 +417,7 @@ are merged together, the reference to the variable newly added by
the latter topic will still use the old name in the result.
The Meta/Reintegrate script that is used by redo-jch and redo-seen
-scripts implements a crude but usable way to work this issue around.
+scripts implements a crude but usable way to work around this issue.
When the script merges branch $X, it checks if "refs/merge-fix/$X"
exists, and if so, the effect of it is squashed into the result of
the mechanical merge. In other words,
diff --git a/Documentation/howto/using-merge-subtree.txt b/Documentation/howto/using-merge-subtree.txt
index a499a94ac22..3bd581ac359 100644
--- a/Documentation/howto/using-merge-subtree.txt
+++ b/Documentation/howto/using-merge-subtree.txt
@@ -11,7 +11,7 @@ Message-ID: <BAYC1-PASMTP12374B54BA370A1E1C6E78AE4E0@CEZ.ICE>
How to use the subtree merge strategy
=====================================
-There are situations where you want to include contents in your project
+There are situations where you want to include content in your project
from an independently developed project. You can just pull from the
other project as long as there are no conflicting paths.
diff --git a/Documentation/i18n.txt b/Documentation/i18n.txt
index 6c6baeeeb75..0efb1153d27 100644
--- a/Documentation/i18n.txt
+++ b/Documentation/i18n.txt
@@ -46,7 +46,7 @@ mind.
------------
+
Commit objects created with the above setting record the value
-of `i18n.commitEncoding` in its `encoding` header. This is to
+of `i18n.commitEncoding` in their `encoding` header. This is to
help other people who look at them later. Lack of this header
implies that the commit log message is encoded in UTF-8.
diff --git a/Documentation/mergetools/vimdiff.txt b/Documentation/mergetools/vimdiff.txt
index 2d631e9b1f2..c36c5479392 100644
--- a/Documentation/mergetools/vimdiff.txt
+++ b/Documentation/mergetools/vimdiff.txt
@@ -32,10 +32,10 @@ have special meaning:
- `+` is used to "open a new tab"
- `,` is used to "open a new vertical split"
- `/` is used to "open a new horizontal split"
- - `@` is used to indicate which is the file containing the final version after
+ - `@` is used to indicate the file containing the final version after
solving the conflicts. If not present, `MERGED` will be used by default.
-The precedence of the operators is this one (you can use parentheses to change
+The precedence of the operators is as follows (you can use parentheses to change
it):
`@` > `+` > `/` > `,`
diff --git a/Documentation/technical/api-simple-ipc.txt b/Documentation/technical/api-simple-ipc.txt
index d44ada98e7d..6c127b5dddf 100644
--- a/Documentation/technical/api-simple-ipc.txt
+++ b/Documentation/technical/api-simple-ipc.txt
@@ -102,4 +102,4 @@ stateless request, receive an application-specific
response, and disconnect. It is a one round trip facility for
querying the server. The Simple-IPC routines hide the socket,
named pipe, and thread pool details and allow the application
-layer to focus on the application at hand.
+layer to focus on the task at hand.
diff --git a/Documentation/technical/bitmap-format.txt b/Documentation/technical/bitmap-format.txt
index c2e652b71a7..687c58cebcc 100644
--- a/Documentation/technical/bitmap-format.txt
+++ b/Documentation/technical/bitmap-format.txt
@@ -114,7 +114,7 @@ result in an empty bitmap (no bits set).
* N entries with compressed bitmaps, one for each indexed commit
+
-Where `N` is the total amount of entries in this bitmap index.
+Where `N` is the total number of entries in this bitmap index.
Each entry contains the following:
** {empty}
diff --git a/Documentation/technical/parallel-checkout.txt b/Documentation/technical/parallel-checkout.txt
index 47c9b6183cf..91a5eb26efd 100644
--- a/Documentation/technical/parallel-checkout.txt
+++ b/Documentation/technical/parallel-checkout.txt
@@ -185,7 +185,7 @@ quite straightforward: for each parallel-eligible entry, the main
process must remove all files that prevent this entry from being written
(before enqueueing it). This includes any non-directory file in the
leading path of the entry. Later, when a worker gets assigned the entry,
-it looks again for the non-directories files and for an already existing
+it looks again for the non-directory files and for an already existing
file at the entry's path. If any of these checks finds something, the
worker knows that there was a path collision.
diff --git a/Documentation/technical/partial-clone.txt b/Documentation/technical/partial-clone.txt
index 92fcee2bfff..b01cff6912a 100644
--- a/Documentation/technical/partial-clone.txt
+++ b/Documentation/technical/partial-clone.txt
@@ -265,7 +265,7 @@ Future Work
- Improve the way to specify the order in which promisor remotes are
tried.
+
-For example this could allow to specify explicitly something like:
+For example this could allow specifying explicitly something like:
"When fetching from this remote, I want to use these promisor remotes
in this order, though, when pushing or fetching to that remote, I want
to use those promisor remotes in that order."
diff --git a/Documentation/technical/racy-git.txt b/Documentation/technical/racy-git.txt
index ceda4bbfda4..783e87e6aa4 100644
--- a/Documentation/technical/racy-git.txt
+++ b/Documentation/technical/racy-git.txt
@@ -165,9 +165,9 @@ Avoiding runtime penalty
In order to avoid the above runtime penalty, post 1.4.2 Git used
to have a code that made sure the index file
-got timestamp newer than the youngest files in the index when
-there are many young files with the same timestamp as the
-resulting index file would otherwise would have by waiting
+got a timestamp newer than the youngest files in the index when
+there were many young files with the same timestamp as the
+resulting index file otherwise would have by waiting
before finishing writing the index file out.
I suspected that in practice the situation where many paths in the
diff --git a/Documentation/technical/reftable.txt b/Documentation/technical/reftable.txt
index 6a67cc4174f..d7d066d876a 100644
--- a/Documentation/technical/reftable.txt
+++ b/Documentation/technical/reftable.txt
@@ -115,7 +115,7 @@ Varint encoding
Varint encoding is identical to the ofs-delta encoding method used
within pack files.
-Decoder works such as:
+Decoder works as follows:
....
val = buf[ptr] & 0x7f
diff --git a/Documentation/urls.txt b/Documentation/urls.txt
index 1c229d75815..4e79c1589ec 100644
--- a/Documentation/urls.txt
+++ b/Documentation/urls.txt
@@ -6,9 +6,9 @@ address of the remote server, and the path to the repository.
Depending on the transport protocol, some of this information may be
absent.
-Git supports ssh, git, http, and https protocols (in addition, ftp,
+Git supports ssh, git, http, and https protocols (in addition, ftp
and ftps can be used for fetching, but this is inefficient and
-deprecated; do not use it).
+deprecated; do not use them).
The native transport (i.e. git:// URL) does no authentication and
should be used with caution on unsecured networks.
--
gitgitgadget
^ permalink raw reply related [relevance 1%]
* Re: [PATCH v2 1/2] attr: add attr.tree for setting the treeish to read attributes from
2023-10-04 23:45 1% ` Junio C Hamano
@ 2023-10-06 17:20 0% ` Jonathan Tan
0 siblings, 0 replies; 200+ results
From: Jonathan Tan @ 2023-10-06 17:20 UTC (permalink / raw)
To: Junio C Hamano
Cc: Jonathan Tan, John Cai via GitGitGadget, git, Jeff King, John Cai
Junio C Hamano <gitster@pobox.com> writes:
> As this adds a new call to git_config_get_string(), which will only
> be available by including <config.h>, a merge-fix into 'seen' of
> this topic needs to revert what b1bda751 (parse: separate out
> parsing functions from config.h, 2023-09-29) did, which made this
> file include only <parse.h>.
>
> As this configuration variable was invented to improve the way the
> attribute source tree is supported by emulating how mailmap.blob is
> done, it deserves a bit of comparison.
>
> The way mailmap.c does this is not have any code that reads or
> parses configuration in mailmap.c (which is a rather library-ish
> place), and leaves it up to callers to pre-populate the global
> variable git_mailmap_blob with config.c:git_default_config(). That
> way, they do not need to include <config.h> (nor <parse.h>) that is
> closer to the UI layer. I am wondering why we are not doing the
> same, and instead making an ad-hoc call to git_config_get_string()
> in this code, and if it is a good direction to move the codebase to
> (in which case we may want to make sure that the same pattern is
> followed in other places).
>
> Folks interested in libification, as to the direction of that
> effort, what's your plan on where to draw a line between "library"
> and "userland"? Should library-ish code be allowed to call
> git_config_anything()? I somehow suspect that it might be cleaner
> if they didn't, and instead have the user of the "attr" module to
> supply the necessary values from outside.
I think that ideally library-ish code shouldn't be allowed to call
config, yes. However I think what's practical would be for libraries
that use very few config variables to get the necessary values from
outside, and libraries that use many config variables (e.g. fetch, if it
becomes a library) to call config.
> On the other hand, once the part we have historically called
> "config" API gets a reasonably solid abstraction so that they become
> pluggable and replaceable, random ad-hoc calls from library code
> outside the "config" library code may not be a huge problem, as long
> as we plumb the necessary object handles around (so "attr" library
> would need to be told which "config" backend is in use, probably in
> the form of a struct that holds the various states in to replace
> the current use of globals, plus a vtable to point at
> implementations of the "config" service, and git_config_get_string()
> call in such a truly libified world would grab the value of the named
> variable transparently from whichever "config" backend is currently
> in use).
This is true, but if we were ever to use the attr library elsewhere
(whether in the git.git repo itself to unit test this library, or
in another software project), we would need to supply a mock/stub of
config. If attr uses very few config variables, I think it's clearer if
it takes in the information from outside.
^ permalink raw reply [relevance 0%]
* Re: [PATCH v2 1/2] attr: add attr.tree for setting the treeish to read attributes from
@ 2023-10-04 23:45 1% ` Junio C Hamano
2023-10-06 17:20 0% ` Jonathan Tan
0 siblings, 1 reply; 200+ results
From: Junio C Hamano @ 2023-10-04 23:45 UTC (permalink / raw)
To: John Cai via GitGitGadget, Jonathan Tan; +Cc: git, Jeff King, John Cai
[jc: JTan CC'ed as he seems to have took over the polishing of
b1bda751 (parse: separate out parsing functions from config.h,
2023-09-29)]
"John Cai via GitGitGadget" <gitgitgadget@gmail.com> writes:
> diff --git a/attr.c b/attr.c
> index 71c84fbcf86..bb0d54eb967 100644
> --- a/attr.c
> +++ b/attr.c
> @@ -1205,6 +1205,13 @@ static void compute_default_attr_source(struct object_id *attr_source)
> if (!default_attr_source_tree_object_name)
> default_attr_source_tree_object_name = getenv(GIT_ATTR_SOURCE_ENVIRONMENT);
>
> + if (!default_attr_source_tree_object_name) {
> + char *attr_tree;
> +
> + if (!git_config_get_string("attr.tree", &attr_tree))
> + default_attr_source_tree_object_name = attr_tree;
> + }
> +
> if (!default_attr_source_tree_object_name || !is_null_oid(attr_source))
> return;
As this adds a new call to git_config_get_string(), which will only
be available by including <config.h>, a merge-fix into 'seen' of
this topic needs to revert what b1bda751 (parse: separate out
parsing functions from config.h, 2023-09-29) did, which made this
file include only <parse.h>.
As this configuration variable was invented to improve the way the
attribute source tree is supported by emulating how mailmap.blob is
done, it deserves a bit of comparison.
The way mailmap.c does this is not have any code that reads or
parses configuration in mailmap.c (which is a rather library-ish
place), and leaves it up to callers to pre-populate the global
variable git_mailmap_blob with config.c:git_default_config(). That
way, they do not need to include <config.h> (nor <parse.h>) that is
closer to the UI layer. I am wondering why we are not doing the
same, and instead making an ad-hoc call to git_config_get_string()
in this code, and if it is a good direction to move the codebase to
(in which case we may want to make sure that the same pattern is
followed in other places).
Folks interested in libification, as to the direction of that
effort, what's your plan on where to draw a line between "library"
and "userland"? Should library-ish code be allowed to call
git_config_anything()? I somehow suspect that it might be cleaner
if they didn't, and instead have the user of the "attr" module to
supply the necessary values from outside.
On the other hand, once the part we have historically called
"config" API gets a reasonably solid abstraction so that they become
pluggable and replaceable, random ad-hoc calls from library code
outside the "config" library code may not be a huge problem, as long
as we plumb the necessary object handles around (so "attr" library
would need to be told which "config" backend is in use, probably in
the form of a struct that holds the various states in to replace
the current use of globals, plus a vtable to point at
implementations of the "config" service, and git_config_get_string()
call in such a truly libified world would grab the value of the named
variable transparently from whichever "config" backend is currently
in use).
Anyway, I think I wiggled this patch into 'seen' so I'll push out
today's integration result shortly.
^ permalink raw reply [relevance 1%]
* Re: [PATCH 21/30] repository: Implement extensions.compatObjectFormat
2023-09-29 18:48 2% ` Junio C Hamano
@ 2023-10-02 0:48 0% ` Eric W. Biederman
0 siblings, 0 replies; 200+ results
From: Eric W. Biederman @ 2023-10-02 0:48 UTC (permalink / raw)
To: Junio C Hamano; +Cc: git, brian m. carlson, Eric W. Biederman
Junio C Hamano <gitster@pobox.com> writes:
> "Eric W. Biederman" <ebiederm@gmail.com> writes:
>
>> Did you have any manual merge conflicts you had to resolve?
>> If so it is possible to see the merge result you had?
>
> The only merge-fix I had to apply to make everything compile was
> this:
>
> diff --git a/bloom.c b/bloom.c
> index ff131893cd..59eb0a0481 100644
> --- a/bloom.c
> +++ b/bloom.c
> @@ -278,7 +278,7 @@ static int has_entries_with_high_bit(struct repository *r, struct tree *t)
> struct tree_desc desc;
> struct name_entry entry;
>
> - init_tree_desc(&desc, t->buffer, t->size);
> + init_tree_desc(&desc, &t->object.oid, t->buffer, t->size);
> while (tree_entry(&desc, &entry)) {
> size_t i;
> for (i = 0; i < entry.pathlen; i++) {
>
> as one topic changed the function signature while the other topic
> added a new callsite.
>
> Everything else was pretty-much auto resolved, I think.
>
> Output from "git show --cc seen" matches my recollection. The above
> does appear as an evil merge.
Thanks, and I found all of this on your seen branch.
After tracking all of these down it appears all of the errors
came from my branch, I will be resending the patches as soon
as I finish going through the review comments.
Looking at the build errors pretty much all of the all of the
automatic test failures came from commit_tree_extended.
There was a strbuf that did
strbuf_init(&buf, 8192);
strbuf_init(&buf, 8192);
twice.
Plus there was another buffer that was allocated and not freed,
in commit_tree_extended.
The leaks were a bit tricky to track down as building with SANITIZE=leak
causes tests to fail somewhat randomly for me with "gcc (Debian
12.2.0-14) 12.2.0".
There was one smatch static-analysis error that suggested using
CALLOC_ARRAY instead of xcalloc.
The "win" build and "linux-gcc-default (ubuntu-lastest)" build failed
because of an over eager gcc warning -Werror=array-bounds.
Claiming:
In file included from /usr/include/string.h:535,
from git-compat-util.h:228,
from commit.c:1:
In function ‘memcpy’,
inlined from ‘oidcpy’ at hash-ll.h:272:2,
inlined from ‘commit_tree_extended’ at commit.c:1705:3:
##[error]/usr/include/x86_64-linux-gnu/bits/string_fortified.h:29:10: ‘__builtin_memcpy’ offset [0, 31] is out of the bounds [0, 0] [-Werror=array-bounds]
29 | return __builtin___memcpy_chk (__dest, __src, __len,
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
30 | __glibc_objsize0 (__dest));
| ~~~~~~~~~~~~~~~~~~~~~~~~~~
Previously in commit_tree_extended the structure was:
while (parents) {
struct commit *parent = pop_commit(&parents);
strbuf_addf(&buffer, "parent %s\n",
oid_to_hex(&parent->object.oid));
}
brian had changed it to:
nparents = commit_list_count(parents);
parent_buf = xcalloc(nparents, sizeof(*parent_buf));
for (i = 0; i < nparents; i++) {
struct commit *parent = pop_commit(&parents);
oidcpy(&parent_buf[i], &parent->object.oid);
}
Which is perfectly sound code.
I changed the structure of the loop to:
nparents = commit_list_count(parents);
parent_buf = xcalloc(nparents, sizeof(*parent_buf));
i = 0;
while (parents) {
struct commit *parent = pop_commit(&parents);
oidcpy(&parent_buf[i++], &parent->object.oid);
}
And the "array-bounds" warning had no problems with the code.
So it looks like the error was actually that array-bounds thought
there was a potential NULL pointer dereference at which point
it would not have array bounds, and then it complained about
the array bounds, instead of the NULL pointer dereference.
I am going to fix the patch. If array-bounds causes further
problems you may want to think about disabling it.
Eric
^ permalink raw reply [relevance 0%]
* Re: [PATCH 21/30] repository: Implement extensions.compatObjectFormat
@ 2023-09-29 18:48 2% ` Junio C Hamano
2023-10-02 0:48 0% ` Eric W. Biederman
0 siblings, 1 reply; 200+ results
From: Junio C Hamano @ 2023-09-29 18:48 UTC (permalink / raw)
To: Eric W. Biederman; +Cc: git, brian m. carlson, Eric W. Biederman
"Eric W. Biederman" <ebiederm@gmail.com> writes:
> Did you have any manual merge conflicts you had to resolve?
> If so it is possible to see the merge result you had?
The only merge-fix I had to apply to make everything compile was
this:
diff --git a/bloom.c b/bloom.c
index ff131893cd..59eb0a0481 100644
--- a/bloom.c
+++ b/bloom.c
@@ -278,7 +278,7 @@ static int has_entries_with_high_bit(struct repository *r, struct tree *t)
struct tree_desc desc;
struct name_entry entry;
- init_tree_desc(&desc, t->buffer, t->size);
+ init_tree_desc(&desc, &t->object.oid, t->buffer, t->size);
while (tree_entry(&desc, &entry)) {
size_t i;
for (i = 0; i < entry.pathlen; i++) {
as one topic changed the function signature while the other topic
added a new callsite.
Everything else was pretty-much auto resolved, I think.
Output from "git show --cc seen" matches my recollection. The above
does appear as an evil merge.
^ permalink raw reply related [relevance 2%]
* [PATCH v2 0/2] This fixes a minor memory leak (detected by LeakSanitizer) in git merge
@ 2023-08-24 14:12 3% ` Kevin Backhouse via GitGitGadget
0 siblings, 0 replies; 200+ results
From: Kevin Backhouse via GitGitGadget @ 2023-08-24 14:12 UTC (permalink / raw)
To: git; +Cc: Kevin Backhouse
Hi Junio,
Thank you for your comments. As you suggested, I have added similar fixes in
merge-recursive.c and updated the commit message. I have also added a test.
Thanks,
Kev
Kevin Backhouse (2):
Regression test for https://github.com/gitgitgadget/git/pull/1577
Fix minor memory leak found by LeakSanitizer.
merge-ort-wrappers.c | 4 +++-
merge-ort.c | 4 +++-
merge-recursive.c | 32 ++++++++++++++++++++++----------
t/t9904-merge-leak.sh | 40 ++++++++++++++++++++++++++++++++++++++++
4 files changed, 68 insertions(+), 12 deletions(-)
create mode 100755 t/t9904-merge-leak.sh
base-commit: f9972720e9a405e4f6924a7cde0ed5880687f4d0
Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-1577%2Fkevinbackhouse%2Ffree-merge-bases-v2
Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-1577/kevinbackhouse/free-merge-bases-v2
Pull-Request: https://github.com/gitgitgadget/git/pull/1577
Range-diff vs v1:
-: ----------- > 1: f940104a781 Regression test for https://github.com/gitgitgadget/git/pull/1577
1: 64b00e4448d ! 2: 353e1960b44 This fixes a minor memory leak (detected by LeakSanitizer) in git merge.
@@ Metadata
Author: Kevin Backhouse <kevinbackhouse@github.com>
## Commit message ##
- This fixes a minor memory leak (detected by LeakSanitizer) in git merge.
+ Fix minor memory leak found by LeakSanitizer.
- To reproduce (with an ASAN build):
+ The callers of merge_recursive() and merge_ort_recursive() expects the
+ commit list passed in as the merge_bases parameter to be fully
+ consumed by the function and does not free it when the function
+ returns. In normal cases, the commit list does get consumed, but when
+ the function returns early upon encountering an error, it forgets to
+ clean it up.
- ```
- mkdir test
- cd test
- git init
- echo x > x.txt
- git add .
- git commit -m "WIP"
- git checkout -b dev
- echo y > x.txt
- git add .
- git commit -m "WIP"
- git checkout main
- echo z > x.txt
- git add .
- git commit -m "WIP"
- echo a > x.txt
- git add .
- git merge dev
- ```
-
- The fix is to call free_commit_list(merge_bases) when an error occurs.
+ Fix this by freeing the list in the code paths for error returns.
Signed-off-by: Kevin Backhouse <kevinbackhouse@github.com>
@@ merge-ort.c: static void merge_ort_internal(struct merge_options *opt,
opt->branch1 = saved_b1;
opt->branch2 = saved_b2;
opt->priv->call_depth--;
+
+ ## merge-recursive.c ##
+@@ merge-recursive.c: static int merge_recursive_internal(struct merge_options *opt,
+ opt->branch1 = "Temporary merge branch 1";
+ opt->branch2 = "Temporary merge branch 2";
+ if (merge_recursive_internal(opt, merged_merge_bases, iter->item,
+- NULL, &merged_merge_bases) < 0)
+- return -1;
++ NULL, &merged_merge_bases) < 0) {
++ clean = -1;
++ goto out;
++ }
+ opt->branch1 = saved_b1;
+ opt->branch2 = saved_b2;
+ opt->priv->call_depth--;
+
+- if (!merged_merge_bases)
+- return err(opt, _("merge returned no commit"));
++ if (!merged_merge_bases) {
++ clean = err(opt, _("merge returned no commit"));
++ goto out;
++ }
+ }
+
+ /*
+@@ merge-recursive.c: static int merge_recursive_internal(struct merge_options *opt,
+ repo_get_commit_tree(opt->repo,
+ merged_merge_bases),
+ &result_tree);
++
++out:
+ strbuf_release(&merge_base_abbrev);
+ opt->ancestor = NULL; /* avoid accidental re-use of opt->ancestor */
++ free_commit_list(merge_bases);
+ if (clean < 0) {
+ flush_output(opt);
+ return clean;
+@@ merge-recursive.c: static int merge_start(struct merge_options *opt, struct tree *head)
+ assert(!opt->record_conflict_msgs_as_headers);
+ assert(!opt->msg_header_prefix);
+
++ CALLOC_ARRAY(opt->priv, 1);
++ string_list_init_dup(&opt->priv->df_conflict_file_set);
++
+ /* Sanity check on repo state; index must match head */
+ if (repo_index_has_changes(opt->repo, head, &sb)) {
+ err(opt, _("Your local changes to the following files would be overwritten by merge:\n %s"),
+@@ merge-recursive.c: static int merge_start(struct merge_options *opt, struct tree *head)
+ return -1;
+ }
+
+- CALLOC_ARRAY(opt->priv, 1);
+- string_list_init_dup(&opt->priv->df_conflict_file_set);
+ return 0;
+ }
+
+ static void merge_finalize(struct merge_options *opt)
+ {
+ flush_output(opt);
+- if (!opt->priv->call_depth && opt->buffer_output < 2)
+- strbuf_release(&opt->obuf);
++ strbuf_release(&opt->obuf);
+ if (show(opt, 2))
+ diff_warn_rename_limit("merge.renamelimit",
+ opt->priv->needed_rename_limit, 0);
+@@ merge-recursive.c: int merge_trees(struct merge_options *opt,
+
+ assert(opt->ancestor != NULL);
+
+- if (merge_start(opt, head))
++ if (merge_start(opt, head)) {
++ merge_finalize(opt);
+ return -1;
++ }
+ clean = merge_trees_internal(opt, head, merge, merge_base, &ignored);
+ merge_finalize(opt);
+
+@@ merge-recursive.c: int merge_recursive(struct merge_options *opt,
+ prepare_repo_settings(opt->repo);
+ opt->repo->settings.command_requires_full_index = 1;
+
+- if (merge_start(opt, repo_get_commit_tree(opt->repo, h1)))
++ if (merge_start(opt, repo_get_commit_tree(opt->repo, h1))) {
++ free_commit_list(merge_bases);
++ merge_finalize(opt);
+ return -1;
++ }
+ clean = merge_recursive_internal(opt, h1, h2, merge_bases, result);
+ merge_finalize(opt);
+
--
gitgitgadget
^ permalink raw reply [relevance 3%]
* What's cooking in git.git (Aug 2023, #01; Wed, 2)
@ 2023-08-02 18:10 2% Junio C Hamano
0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2023-08-02 18:10 UTC (permalink / raw)
To: git
Here are the topics that have been cooking in my tree. Commits
prefixed with '+' are in 'next' (being in 'next' is a sign that a
topic is stable enough to be used and are candidate to be in a
future release). Commits prefixed with '-' are only in 'seen', and
aren't considered "accepted" at all and may be annotated with an URL
to a message that raises issues but they are no means exhaustive. A
topic without enough support may be discarded after a long period of
no activity (of course they can be resubmit when new interests
arise).
We are getting closer to the final phase of this cycle, which begins
when -rc0 preview release is tagged this coming Friday, followed by
about 1 1/2 weeks of stabilization period that begins when -rc1 is
tagged (cf. tinyurl.com/gitCal). There are a handful of topics that
still need reviews before getting merged to 'next', but because the
summer in the northern hemisphere is historically a slower season,
too few reviewers seem to be active, relative to the number of these
topics.
Copies of the source code to Git live in many repositories, and the
following is a list of the ones I push into or their mirrors. Some
repositories have only a subset of branches.
With maint, master, next, seen, todo:
git://git.kernel.org/pub/scm/git/git.git/
git://repo.or.cz/alt-git.git/
https://kernel.googlesource.com/pub/scm/git/git/
https://github.com/git/git/
https://gitlab.com/git-vcs/git/
With all the integration branches and topics broken out:
https://github.com/gitster/git/
Even though the preformatted documentation in HTML and man format
are not sources, they are published in these repositories for
convenience (replace "htmldocs" with "manpages" for the manual
pages):
git://git.kernel.org/pub/scm/git/git-htmldocs.git/
https://github.com/gitster/git-htmldocs.git/
Release tarballs are available at:
https://www.kernel.org/pub/software/scm/git/
--------------------------------------------------
[Graduated to 'master']
* ah/autoconf-fixes (2023-07-19) 3 commits
(merged to 'next' on 2023-07-25 at 35ff66e0cb)
+ configure.ac: always save NO_ICONV to config.status
+ configure.ac: don't overwrite NO_CURL option
+ configure.ac: don't overwrite NO_EXPAT option
"./configure --with-expat=no" did not work as a way to refuse use
of the expat library on a system with the library installed, which
has been corrected.
source: <20230719145211.17854-2-aherrmann@suse.de>
* ah/sequencer-rewrite-todo-fix (2023-07-24) 1 commit
(merged to 'next' on 2023-07-26 at 24e74d9eda)
+ sequencer: finish parsing the todo list despite an invalid first line
When the user edits "rebase -i" todo file so that it starts with a
"fixup", which would make it invalid, the command truncated the
rest of the file before giving an error and returning the control
back to the user. Stop truncating to make it easier to correct
such a malformed todo file.
cf. <https://lore.kernel.org/git/0d1c5bfd-3ae5-83f0-a333-bbb8510a973a@gmail.com/>
source: <20230722212830.132135-2-alexhenrie24@gmail.com>
* bb/use-trace2-counters-for-fsync-stats (2023-07-20) 1 commit
(merged to 'next' on 2023-07-26 at f2c2e3f2b9)
+ wrapper: use trace2 counters to collect fsync stats
Instead of inventing a custom counter variables for debugging,
use existing trace2 facility in the fsync customization codepath.
source: <20230720164823.625815-1-dev+git@drbeat.li>
* jc/tree-walk-drop-base-offset (2023-07-07) 2 commits
(merged to 'next' on 2023-07-25 at cc050c60a6)
+ tree-walk: drop unused base_offset from do_match()
+ tree-walk: lose base_offset that is never used in tree_entry_interesting
Code simplification.
source: <20230707222116.4129415-1-gitster@pobox.com>
* ks/ref-filter-describe (2023-07-24) 2 commits
(merged to 'next' on 2023-07-26 at f4b3b3b7ef)
+ ref-filter: add new "describe" atom
+ ref-filter: add multiple-option parsing functions
"git branch --list --format=<format>" and friends are taught
a new "%(describe)" placeholder.
source: <20230723162717.68123-1-five231003@gmail.com>
--------------------------------------------------
[New Topics]
* bc/ident-dot-is-no-longer-crud-letter (2023-08-02) 1 commit
- ident: don't consider '.' a crud
Exclude "." from the set of characters to be removed from the
beginning and the end of the human-readable name.
Will merge to 'next'?
source: <xmqqsf918k4j.fsf@gitster.g>
* jc/unresolve-removal (2023-07-31) 7 commits
- checkout: allow "checkout -m path" to unmerge removed paths
- checkout/restore: add basic tests for --merge
- checkout/restore: refuse unmerging paths unless checking out of the index
- update-index: remove stale fallback code for "--unresolve"
- update-index: use unmerge_index_entry() to support removal
- resolve-undo: allow resurrecting conflicted state that resolved to deletion
- update-index: do not read HEAD and MERGE_HEAD unconditionally
"checkout --merge -- path" and "update-index --unresolve path" did
not resurrect conflicted state that was resolved to remove path,
but now they do.
Needs review.
source: <20230731224409.4181277-1-gitster@pobox.com>
* ew/hash-with-openssl-evp (2023-08-01) 2 commits
- avoid SHA-1 functions deprecated in OpenSSL 3+
- sha256: avoid functions deprecated in OpenSSL 3+
Adjust to OpenSSL 3+, which deprecates its SHA-1 functions based on
its traditional API, by using its EVP API instead.
Will merge to 'next'.
source: <20230801025454.1137802-1-e@80x24.org>
* rj/status-bisect-while-rebase (2023-08-01) 1 commit
- status: fix branch shown when not only bisecting
"git status" is taught to show both the branch being bisected and
being rebased when both are in effect at the same time.
Needs review.
source: <48745298-f12b-8efb-4e48-90d2c22a8349@gmail.com>
--------------------------------------------------
[Stalled]
* tk/cherry-pick-sequence-requires-clean-worktree (2023-06-01) 1 commit
- cherry-pick: refuse cherry-pick sequence if index is dirty
"git cherry-pick A" that replays a single commit stopped before
clobbering local modification, but "git cherry-pick A..B" did not,
which has been corrected.
Expecting a reroll.
cf. <999f12b2-38d6-f446-e763-4985116ad37d@gmail.com>
source: <pull.1535.v2.git.1685264889088.gitgitgadget@gmail.com>
* ab/tag-object-type-errors (2023-05-10) 4 commits
- tag: don't emit potentially incorrect "object is a X, not a Y"
- tag: don't misreport type of tagged objects in errors
- object tests: add test for unexpected objects in tags
- Merge branch 'jk/parse-object-type-mismatch' into ab/tag-object-type-errors
Hardening checks around mismatched object types when one of those
objects is a tag.
Will discard.
Stalled for too long.
source: <cover-v2-0.3-00000000000-20221230T011725Z-avarab@gmail.com>
* ob/revert-of-revert (2023-05-05) 1 commit
- sequencer: beautify subject of reverts of reverts
Instead of "Revert "Revert "original"", give "Reapply "original""
as the title for a revert of a revert.
Will discard.
Have been expecting a hopefully final reroll for too long.
Looking much better, except for minor cosmetic issues.
cf. <xmqqmt21txid.fsf@gitster.g>
source: <20230428083528.1699221-1-oswald.buddenhagen@gmx.de>
* pw/rebase-i-after-failure (2023-08-01) 7 commits
- rebase -i: fix adding failed command to the todo list
- rebase --continue: refuse to commit after failed command
- rebase: fix rewritten list for failed pick
- sequencer: factor out part of pick_commits()
- sequencer: use rebase_path_message()
- rebase -i: remove patch file after conflict resolution
- rebase -i: move unlink() calls
Various fixes to the behaviour of "rebase -i" when the command got
interrupted by conflicting changes.
Will merge to 'next'?
cf. <xmqqa5vad6ea.fsf@gitster.g>
cf. <xmqq5y5yd6d7.fsf@gitster.g>
source: <pull.1492.v3.git.1690903412.gitgitgadget@gmail.com>
--------------------------------------------------
[Cooking]
* ew/sha256-gcrypt-leak-fixes (2023-07-31) 3 commits
(merged to 'next' on 2023-08-01 at eed83801c3)
+ sha256/gcrypt: die on gcry_md_open failures
+ sha256/gcrypt: fix memory leak with SHA-256 repos
+ sha256/gcrypt: fix build with SANITIZE=leak
Leakfixes.
Will merge to 'master'.
source: <20230731120808.1230210-1-e@80x24.org>
* rs/bundle-parseopt-cleanup (2023-07-31) 1 commit
(merged to 'next' on 2023-08-01 at 405eb138fa)
+ bundle: use OPT_PASSTHRU_ARGV
Code clean-up.
Will merge to 'master'.
source: <2dcb915f-b926-e024-6394-23aff200955c@web.de>
* pv/doc-submodule-update-settings (2023-07-25) 1 commit
(merged to 'next' on 2023-07-27 at e27b5b7ba8)
+ doc: highlight that .gitmodules does not support !command
Rewrite the description of giving a custom command to the
submodule.<name>.update configuraiton variable.
Will merge to 'master'.
source: <20230725212218.711116-1-pvutov@imap.cc>
* la/doc-choose-starting-point-fixup (2023-07-27) 3 commits
(merged to 'next' on 2023-07-28 at 047dcae31c)
+ SubmittingPatches: use of older maintenance tracks is an exception
+ SubmittingPatches: explain why 'next' and above are inappropriate base
+ SubmittingPatches: choice of base for fixing an older maintenance track
(this branch uses la/doc-choose-starting-point.)
Clarify how to pick a starting point for a new topic in the
SubmittingPatches document.
Will merge to 'master', together with the underlying topic.
source: <pull.1556.v2.git.1689314493.gitgitgadget@gmail.com>
source: <pull.1556.v3.git.1690340701.gitgitgadget@gmail.com>
* am/doc-sha256 (2023-07-31) 1 commit
(merged to 'next' on 2023-08-01 at d7419bf527)
+ doc: sha256 is no longer experimental
Tone down the warning on SHA-256 repositories being an experimental
curiosity. We do not have support for them to interoperate with
traditional SHA-1 repositories, but at this point, we do not plan
to make breaking changes to SHA-256 repositories and there is no
longer need for such a strongly phrased warning.
Will merge to 'master'.
source: <ZMe6KmzZGVubYpvO@adams>
* hy/blame-in-bare-with-contents (2023-07-21) 1 commit
(merged to 'next' on 2023-07-31 at 39ac96d8d8)
+ blame: allow --contents to work with bare repo
"git blame --contents=file" has been taught to work in a bare
repository.
Will merge to 'master'.
source: <20230721035758.61956-1-hanyang.tony@bytedance.com>
* ja/worktree-orphan-fix (2023-07-26) 3 commits
(merged to 'next' on 2023-07-27 at e475016065)
+ t2400: rewrite regex to avoid unintentional PCRE
+ builtin/worktree.c: convert tab in advice to space
+ t2400: drop no-op `--sq` from rev-parse call
Fix tests with unportable regex patterns.
Will merge to 'master'.
source: <20230726214202.15775-1-jacobabel@nullpo.dev>
* jc/retire-get-sha1-hex (2023-07-24) 1 commit
(merged to 'next' on 2023-07-27 at eeb9cc37f5)
+ hex: retire get_sha1_hex()
The implementation of "get_sha1_hex()" that reads a hexadecimal
string that spells a full object name has been extended to cope
with any hash function used in the repository, but the "sha1" in
its name survived. Rename it to get_hash_hex(), a name that is
more consistent within its friends like get_hash_hex_algop().
Will merge to 'master'.
source: <xmqq1qgwoqgo.fsf_-_@gitster.g>
* rs/parse-options-negation-help (2023-07-24) 5 commits
- parse-options: show negatability of options in short help
- t1502: test option negation
- t1502: move optionspec help output to a file
- t1502, docs: disallow --no-help
- subtree: disallow --no-{help,quiet,debug,branch,message}
"git cmd -h" learned to signal which options can be negated by
listing such options like "--[no-]opt".
Comments?
Would showing "--[[no-]no-]opt" for "no-opt" be worth it?
cf. <9e8225dd-1e8b-8af2-c3e1-0c5834694244@web.de>
source: <4d01e971-07cb-4f11-3cc6-9d9f21e590c1@web.de>
* tb/commit-graph-tests (2023-07-24) 5 commits
(merged to 'next' on 2023-07-31 at 740a260315)
+ t/lib-commit-graph.sh: avoid sub-shell in `graph_git_behavior()`
+ t5328: avoid top-level directory changes
+ t5318: avoid top-level directory changes
+ t/lib-commit-graph.sh: avoid directory change in `graph_git_behavior()`
+ t/lib-commit-graph.sh: allow `graph_read_expect()` in sub-directories
Test updates.
Will merge to 'master'.
source: <cover.1690216758.git.me@ttaylorr.com>
* la/doc-choose-starting-point (2023-07-14) 5 commits
(merged to 'next' on 2023-07-19 at 5a807cae46)
+ SubmittingPatches: simplify guidance for choosing a starting point
+ SubmittingPatches: emphasize need to communicate non-default starting points
+ SubmittingPatches: de-emphasize branches as starting points
+ SubmittingPatches: discuss subsystems separately from git.git
+ SubmittingPatches: reword awkward phrasing
(this branch is used by la/doc-choose-starting-point-fixup.)
Clarify how to choose the starting point for a new topic in
developer guidance document.
Will merge to 'master' together with the follow-on topic.
source: <pull.1556.v2.git.1689314493.gitgitgadget@gmail.com>
* jc/doc-sent-patch-now-what (2023-07-27) 1 commit
(merged to 'next' on 2023-07-31 at 51f5d9d465)
+ MyFirstContribution: refrain from self-iterating too much
Process document update.
Will merge to 'master'.
source: <xmqqmszg987u.fsf_-_@gitster.g>
* jc/parse-options-short-help (2023-07-19) 3 commits
(merged to 'next' on 2023-07-31 at e076d1f497)
+ short help: allow a gap smaller than USAGE_GAP
+ remote: simplify "remote add --tags" help text
+ short help: allow multi-line opthelp
Command line parser fix, and a small parse-options API update.
Will merge to 'master'.
source: <xmqq5y6gg8fn.fsf@gitster.g>
* sl/sparse-check-attr (2023-07-18) 3 commits
- check-attr: integrate with sparse-index
- attr.c: read attributes in a sparse directory
- t1092: add tests for 'git check-attr'
Teach "git check-attr" work better with sparse-index.
Expecting a reroll.
cf. <c3ebe3b4-88b9-8ca2-2ee3-39a3e0d82201@github.com>
cf. <5e478d8b-9ef4-864b-41e4-e0a79877d278@github.com>
source: <20230718232916.31660-1-cheskaqiqi@gmail.com>
* jc/branch-in-use-error-message (2023-07-21) 1 commit
(merged to 'next' on 2023-07-31 at 22f17d131b)
+ branch: update the message to refuse touching a branch in-use
"git branch -f X" to repoint the branch X seid that X was "checked
out" in another worktree, even when branch X was not and instead
being bisected or rebased. The message was reworded to say the
branch was "in use".
Will merge to 'master'.
source: <xmqqr0p1szhz.fsf_-_@gitster.g>
* mh/credential-erase-improvements-more (2023-07-26) 2 commits
- credential/wincred: erase matching creds only
- credential/libsecret: erase matching creds only
Update two credential helpers to correctly match which credential
to erase; they dropped not the ones with stale password.
Needs review.
source: <pull.1527.v2.git.git.1690387585634.gitgitgadget@gmail.com>
source: <pull.1529.git.git.1687596777147.gitgitgadget@gmail.com>
* cc/repack-sift-filtered-objects-to-separate-pack (2023-07-24) 8 commits
. gc: add `gc.repackFilterTo` config option
. repack: implement `--filter-to` for storing filtered out objects
. gc: add `gc.repackFilter` config option
. repack: add `--filter=<filter-spec>` option
. repack: refactor finding pack prefix
. repack: refactor finishing pack-objects command
. t/helper: add 'find-pack' test-tool
. pack-objects: allow `--filter` without `--stdout`
"git repack" machinery learns to pay attention to the "--filter="
option.
Breaks CI with some environment variables configured.
cf. <xmqqo7jzh9mh.fsf@gitster.g>
source: <20230724085909.3831831-1-christian.couder@gmail.com>
* js/doc-unit-tests (2023-06-30) 1 commit
- unit tests: Add a project plan document
Process to add some form of low-level unit tests has started.
Still filling in blanks.
source: <0169ce6fb9ccafc089b74ae406db0d1a8ff8ac65.1688165272.git.steadmon@google.com>
* jt/path-filter-fix (2023-08-01) 7 commits
- commit-graph: new filter ver. that fixes murmur3
- repo-settings: introduce commitgraph.changedPathsVersion
- t4216: test changed path filters with high bit paths
- t/helper/test-read-graph: implement `bloom-filters` mode
- bloom.h: make `load_bloom_filter_from_graph()` public
- t/helper/test-read-graph.c: extract `dump_graph_info()`
- gitformat-commit-graph: describe version 2 of BDAT
The Bloom filter used for path limited history traversal was broken
on systems whose "char" is unsigned; update the implementation and
bump the format version to 2.
Still under discussion.
cf. <20230801185232.1457172-1-jonathantanmy@google.com>
source: <cover.1690912539.git.jonathantanmy@google.com>
* mh/credential-libsecret-attrs (2023-06-16) 1 commit
- credential/libsecret: store new attributes
The way authentication related data other than passwords (e.g.
oath token and password expiration data) are stored in libsecret
keyrings has been rethought.
Needs review.
source: <pull.1469.v5.git.git.1686945306242.gitgitgadget@gmail.com>
* cc/git-replay (2023-06-03) 15 commits
- replay: stop assuming replayed branches do not diverge
- replay: add --contained to rebase contained branches
- replay: add --advance or 'cherry-pick' mode
- replay: disallow revision specific options and pathspecs
- replay: use standard revision ranges
- replay: make it a minimal server side command
- replay: remove HEAD related sanity check
- replay: remove progress and info output
- replay: add an important FIXME comment about gpg signing
- replay: don't simplify history
- replay: introduce pick_regular_commit()
- replay: die() instead of failing assert()
- replay: start using parse_options API
- replay: introduce new builtin
- t6429: remove switching aspects of fast-rebase
What's the status of this thing?
source: <20230602102533.876905-1-christian.couder@gmail.com>
--------------------------------------------------
[Discarded]
* jc/doc-submodule-update-settings (2023-07-13) 1 commit
. submodule: clarify that "!custom command" is the only oddball
Rewrite the description of giving a custom command to the
submodule.<name>.update configuraiton variable.
Superseded by pv/doc-submodule-update-settings topic.
source: <xmqqwmz3oacg.fsf@gitster.g>
* jc/rerere-read-rr-fix (2023-07-21) 1 commit
. rerere: match the hash algorithm with its length
SHA-256 fix.
Superseded by jc/retire-get-sha1-hex
source: <xmqqa5vou9ar.fsf@gitster.g>
* cb/checkout-same-branch-twice (2023-03-22) 2 commits
. SQUASH??? the test marked to expect failure passes from day one
. checkout/switch: disallow checking out same branch in multiple worktrees
"git checkout -B $branch" failed to protect against checking out
a branch that is checked out elsewhere, unlike "git branch -f" did.
Have been expecting a hopefully minor and final reroll for too long.
cf. <CAPUEspj_Bh+LgYLnWfeBdcq_uV5Cbou-7H51GLFjzSa5Qzby9w@mail.gmail.com>
source: <20230120113553.24655-1-carenas@gmail.com>
* ed/fsmonitor-windows-named-pipe (2023-03-24) 1 commit
. fsmonitor: handle differences between Windows named pipe functions
Fix fsmonitor on Windows when the filesystem path contains certain
characters.
Have been expecting a reroll for too long.
cf. <b9cf67e4-22a7-2ff0-8310-9223bea10d6d@jeffhostetler.com>
source: <pull.1503.git.1679678090412.gitgitgadget@gmail.com>
* rn/sparse-diff-index (2023-04-10) 1 commit
. diff-index: enable sparse index
"git diff-index" command has been taught to work better with the
sparse index.
Have been expecting a reroll for too long.
cf. <62821012-4fc3-5ad8-695c-70f7ab14a8c9@github.com>
source: <20230408112342.404318-1-nanth.raghul@gmail.com>
* es/recurse-submodules-option-is-a-bool (2023-04-10) 1 commit
. usage: clarify --recurse-submodules as a boolean
The "--[no-]recurse-submodules" option of "git checkout" and others
supported an undocumented syntax --recurse-submodules=<value> where
the value can spell a Boolean in various ways. The support for the
syntax is being dropped.
Have been expecting a reroll for too long.
cf. <ZDSTFwMFO7vbj/du@google.com>
source: <ZDSTFwMFO7vbj/du@google.com>
* jc/checkout-merge-fix (2023-07-28) 2 commits
. checkout/restore: add basic tests for --merge
. checkout/restore: refuse unmerging paths unless checking out of the index
"git checkout/restore --merge -- $path" improvements.
Superseded by jc/unresolve-removal
source: <xmqq7cqj4rme.fsf@gitster.g>
* jc/resolve-undo-fixes (2023-07-28) 4 commits
. update-index: remove stale fallback code for "--unresolve"
. update-index: use unmerge_index_entry() to support removal
. resolve-undo: allow resurrecting conflicted state that resolved to deletion
. update-index: do not read HEAD and MERGE_HEAD unconditionally
Assorted fixes and clean-up around resolve-undo data.
Superseded by jc/unresolve-removal
source: <xmqqo7jv4y0t.fsf_-_@gitster.g>
^ permalink raw reply [relevance 2%]
* What's cooking in git.git (Jul 2023, #07; Mon, 31)
@ 2023-07-31 17:57 3% Junio C Hamano
0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2023-07-31 17:57 UTC (permalink / raw)
To: git
Here are the topics that have been cooking in my tree. Commits
prefixed with '+' are in 'next' (being in 'next' is a sign that a
topic is stable enough to be used and are candidate to be in a
future release). Commits prefixed with '-' are only in 'seen', and
aren't considered "accepted" at all and may be annotated with an URL
to a message that raises issues but they are no means exhaustive. A
topic without enough support may be discarded after a long period of
no activity (of course they can be resubmit when new interests
arise).
Copies of the source code to Git live in many repositories, and the
following is a list of the ones I push into or their mirrors. Some
repositories have only a subset of branches.
With maint, master, next, seen, todo:
git://git.kernel.org/pub/scm/git/git.git/
git://repo.or.cz/alt-git.git/
https://kernel.googlesource.com/pub/scm/git/git/
https://github.com/git/git/
https://gitlab.com/git-vcs/git/
With all the integration branches and topics broken out:
https://github.com/gitster/git/
Even though the preformatted documentation in HTML and man format
are not sources, they are published in these repositories for
convenience (replace "htmldocs" with "manpages" for the manual
pages):
git://git.kernel.org/pub/scm/git/git-htmldocs.git/
https://github.com/gitster/git-htmldocs.git/
Release tarballs are available at:
https://www.kernel.org/pub/software/scm/git/
--------------------------------------------------
[New Topics]
* jc/checkout-merge-fix (2023-07-28) 2 commits
- checkout/restore: add basic tests for --merge
- checkout/restore: refuse unmerging paths unless checking out of the index
"git checkout/restore --merge -- $path" improvements.
Needs review.
source: <xmqq7cqj4rme.fsf@gitster.g>
* ew/sha256-gcrypt-leak-fixes (2023-07-31) 3 commits
- sha256/gcrypt: die on gcry_md_open failures
- sha256/gcrypt: fix memory leak with SHA-256 repos
- sha256/gcrypt: fix build with SANITIZE=leak
Leakfixes.
Will merge to 'next'.
source: <20230731120808.1230210-1-e@80x24.org>
* rs/bundle-parseopt-cleanup (2023-07-31) 1 commit
- bundle: use OPT_PASSTHRU_ARGV
Code clean-up.
Will merge to 'next'.
source: <2dcb915f-b926-e024-6394-23aff200955c@web.de>
--------------------------------------------------
[Graduated to 'master']
* bb/trace2-comment-fix (2023-07-19) 1 commit
(merged to 'next' on 2023-07-21 at f77aeba1b5)
+ trace2: fix a comment
In-code comment fix.
source: <20230719232444.555838-1-dev+git@drbeat.li>
* rs/describe-parseopt-fix (2023-07-21) 1 commit
(merged to 'next' on 2023-07-21 at e74749af0c)
+ describe: fix --no-exact-match
Command line parser fix.
source: <4eea7e15-6594-93e2-27b5-3d6e3c0baac6@web.de>
* rs/pack-objects-parseopt-fix (2023-07-21) 2 commits
(merged to 'next' on 2023-07-21 at acdf84416c)
+ pack-objects: fix --no-quiet
+ pack-objects: fix --no-keep-true-parents
Command line parser fix.
source: <xmqqo7k9fa5x.fsf@gitster.g>
--------------------------------------------------
[Stalled]
* tk/cherry-pick-sequence-requires-clean-worktree (2023-06-01) 1 commit
- cherry-pick: refuse cherry-pick sequence if index is dirty
"git cherry-pick A" that replays a single commit stopped before
clobbering local modification, but "git cherry-pick A..B" did not,
which has been corrected.
Expecting a reroll.
cf. <999f12b2-38d6-f446-e763-4985116ad37d@gmail.com>
source: <pull.1535.v2.git.1685264889088.gitgitgadget@gmail.com>
* ab/tag-object-type-errors (2023-05-10) 4 commits
- tag: don't emit potentially incorrect "object is a X, not a Y"
- tag: don't misreport type of tagged objects in errors
- object tests: add test for unexpected objects in tags
- Merge branch 'jk/parse-object-type-mismatch' into ab/tag-object-type-errors
Hardening checks around mismatched object types when one of those
objects is a tag.
Will discard.
Stalled for too long.
source: <cover-v2-0.3-00000000000-20221230T011725Z-avarab@gmail.com>
* ob/revert-of-revert (2023-05-05) 1 commit
- sequencer: beautify subject of reverts of reverts
Instead of "Revert "Revert "original"", give "Reapply "original""
as the title for a revert of a revert.
Will discard.
Have been expecting a hopefully final reroll for too long.
Looking much better, except for minor cosmetic issues.
cf. <xmqqmt21txid.fsf@gitster.g>
source: <20230428083528.1699221-1-oswald.buddenhagen@gmx.de>
* pw/rebase-i-after-failure (2023-04-21) 6 commits
- rebase -i: fix adding failed command to the todo list
- rebase: fix rewritten list for failed pick
- rebase --continue: refuse to commit after failed command
- sequencer: factor out part of pick_commits()
- rebase -i: remove patch file after conflict resolution
- rebase -i: move unlink() calls
Various fixes to the behaviour of "rebase -i" when the command got
interrupted by conflicting changes.
Will discard.
Have been expecting a reroll for too long.
cf. <xmqqsfcthrpb.fsf@gitster.g>
cf. <1fd54422-b66a-c2e4-7cd7-934ea01190ad@gmail.com>
cf. <55dd6194-25e5-1a66-9c39-27cb19bfbb3c@gmail.com>
source: <pull.1492.v2.git.1682089074.gitgitgadget@gmail.com>
--------------------------------------------------
[Cooking]
* pv/doc-submodule-update-settings (2023-07-25) 1 commit
(merged to 'next' on 2023-07-27 at e27b5b7ba8)
+ doc: highlight that .gitmodules does not support !command
Rewrite the description of giving a custom command to the
submodule.<name>.update configuraiton variable.
Will merge to 'master'.
source: <20230725212218.711116-1-pvutov@imap.cc>
* la/doc-choose-starting-point-fixup (2023-07-27) 3 commits
(merged to 'next' on 2023-07-28 at 047dcae31c)
+ SubmittingPatches: use of older maintenance tracks is an exception
+ SubmittingPatches: explain why 'next' and above are inappropriate base
+ SubmittingPatches: choice of base for fixing an older maintenance track
(this branch uses la/doc-choose-starting-point.)
Clarify how to pick a starting point for a new topic in the
SubmittingPatches document.
Will merge to 'master', together with the underlying topic.
source: <pull.1556.v2.git.1689314493.gitgitgadget@gmail.com>
source: <pull.1556.v3.git.1690340701.gitgitgadget@gmail.com>
* jc/resolve-undo-fixes (2023-07-28) 4 commits
- update-index: remove stale fallback code for "--unresolve"
- update-index: use unmerge_index_entry() to support removal
- resolve-undo: allow resurrecting conflicted state that resolved to deletion
- update-index: do not read HEAD and MERGE_HEAD unconditionally
Assorted fixes and clean-up around resolve-undo data.
Needs review.
source: <xmqqo7jv4y0t.fsf_-_@gitster.g>
* ah/sequencer-rewrite-todo-fix (2023-07-24) 1 commit
(merged to 'next' on 2023-07-26 at 24e74d9eda)
+ sequencer: finish parsing the todo list despite an invalid first line
When the user edits "rebase -i" todo file so that it starts with a
"fixup", which would make it invalid, the command truncated the
rest of the file before giving an error and returning the control
back to the user. Stop truncating to make it easier to correct
such a malformed todo file.
Will merge to 'master'.
cf. <https://lore.kernel.org/git/0d1c5bfd-3ae5-83f0-a333-bbb8510a973a@gmail.com/>
source: <20230722212830.132135-2-alexhenrie24@gmail.com>
* ks/ref-filter-describe (2023-07-24) 2 commits
(merged to 'next' on 2023-07-26 at f4b3b3b7ef)
+ ref-filter: add new "describe" atom
+ ref-filter: add multiple-option parsing functions
"git branch --list --format=<format>" and friends are taught
a new "%(describe)" placeholder.
Will merge to 'master'.
source: <20230723162717.68123-1-five231003@gmail.com>
* bb/use-trace2-counters-for-fsync-stats (2023-07-20) 1 commit
(merged to 'next' on 2023-07-26 at f2c2e3f2b9)
+ wrapper: use trace2 counters to collect fsync stats
Instead of inventing a custom counter variables for debugging,
use existing trace2 facility in the fsync customization codepath.
Will merge to 'master'.
source: <20230720164823.625815-1-dev+git@drbeat.li>
* am/doc-sha256 (2023-07-31) 1 commit
- doc: sha256 is no longer experimental
Tone down the warning on SHA-256 repositories being an experimental
curiosity. We do not have support for them to interoperate with
traditional SHA-1 repositories, but at this point, we do not plan
to make breaking changes to SHA-256 repositories and there is no
longer need for such a strongly phrased warning.
Will merge to 'next'.
source: <ZMe6KmzZGVubYpvO@adams>
* hy/blame-in-bare-with-contents (2023-07-21) 1 commit
(merged to 'next' on 2023-07-31 at 39ac96d8d8)
+ blame: allow --contents to work with bare repo
"git blame --contents=file" has been taught to work in a bare
repository.
Will merge to 'master'.
source: <20230721035758.61956-1-hanyang.tony@bytedance.com>
* ja/worktree-orphan-fix (2023-07-26) 3 commits
(merged to 'next' on 2023-07-27 at e475016065)
+ t2400: rewrite regex to avoid unintentional PCRE
+ builtin/worktree.c: convert tab in advice to space
+ t2400: drop no-op `--sq` from rev-parse call
Fix tests with unportable regex patterns.
Will merge to 'master'.
source: <20230726214202.15775-1-jacobabel@nullpo.dev>
* jc/retire-get-sha1-hex (2023-07-24) 1 commit
(merged to 'next' on 2023-07-27 at eeb9cc37f5)
+ hex: retire get_sha1_hex()
The implementation of "get_sha1_hex()" that reads a hexadecimal
string that spells a full object name has been extended to cope
with any hash function used in the repository, but the "sha1" in
its name survived. Rename it to get_hash_hex(), a name that is
more consistent within its friends like get_hash_hex_algop().
Will merge to 'master'.
source: <xmqq1qgwoqgo.fsf_-_@gitster.g>
* rs/parse-options-negation-help (2023-07-24) 5 commits
- parse-options: show negatability of options in short help
- t1502: test option negation
- t1502: move optionspec help output to a file
- t1502, docs: disallow --no-help
- subtree: disallow --no-{help,quiet,debug,branch,message}
"git cmd -h" learned to signal which options can be negated by
listing such options like "--[no-]opt".
Comments?
Would showing "--[[no-]no-]opt" for "no-opt" be worth it?
cf. <9e8225dd-1e8b-8af2-c3e1-0c5834694244@web.de>
source: <4d01e971-07cb-4f11-3cc6-9d9f21e590c1@web.de>
* tb/commit-graph-tests (2023-07-24) 5 commits
(merged to 'next' on 2023-07-31 at 740a260315)
+ t/lib-commit-graph.sh: avoid sub-shell in `graph_git_behavior()`
+ t5328: avoid top-level directory changes
+ t5318: avoid top-level directory changes
+ t/lib-commit-graph.sh: avoid directory change in `graph_git_behavior()`
+ t/lib-commit-graph.sh: allow `graph_read_expect()` in sub-directories
Test updates.
Will merge to 'master'.
source: <cover.1690216758.git.me@ttaylorr.com>
* la/doc-choose-starting-point (2023-07-14) 5 commits
(merged to 'next' on 2023-07-19 at 5a807cae46)
+ SubmittingPatches: simplify guidance for choosing a starting point
+ SubmittingPatches: emphasize need to communicate non-default starting points
+ SubmittingPatches: de-emphasize branches as starting points
+ SubmittingPatches: discuss subsystems separately from git.git
+ SubmittingPatches: reword awkward phrasing
(this branch is used by la/doc-choose-starting-point-fixup.)
Clarify how to choose the starting point for a new topic in
developer guidance document.
Will merge to 'master' together with the follow-on topic.
source: <pull.1556.v2.git.1689314493.gitgitgadget@gmail.com>
* jc/doc-sent-patch-now-what (2023-07-27) 1 commit
(merged to 'next' on 2023-07-31 at 51f5d9d465)
+ MyFirstContribution: refrain from self-iterating too much
Process document update.
Will merge to 'master'.
source: <xmqqmszg987u.fsf_-_@gitster.g>
* jc/parse-options-short-help (2023-07-19) 3 commits
(merged to 'next' on 2023-07-31 at e076d1f497)
+ short help: allow a gap smaller than USAGE_GAP
+ remote: simplify "remote add --tags" help text
+ short help: allow multi-line opthelp
Command line parser fix, and a small parse-options API update.
Will merge to 'master'.
source: <xmqq5y6gg8fn.fsf@gitster.g>
* sl/sparse-check-attr (2023-07-18) 3 commits
- check-attr: integrate with sparse-index
- attr.c: read attributes in a sparse directory
- t1092: add tests for 'git check-attr'
Teach "git check-attr" work better with sparse-index.
Expecting a reroll.
cf. <c3ebe3b4-88b9-8ca2-2ee3-39a3e0d82201@github.com>
cf. <5e478d8b-9ef4-864b-41e4-e0a79877d278@github.com>
source: <20230718232916.31660-1-cheskaqiqi@gmail.com>
* ah/autoconf-fixes (2023-07-19) 3 commits
(merged to 'next' on 2023-07-25 at 35ff66e0cb)
+ configure.ac: always save NO_ICONV to config.status
+ configure.ac: don't overwrite NO_CURL option
+ configure.ac: don't overwrite NO_EXPAT option
"./configure --with-expat=no" did not work as a way to refuse use
of the expat library on a system with the library installed, which
has been corrected.
Will merge to 'master'.
source: <20230719145211.17854-2-aherrmann@suse.de>
* jc/branch-in-use-error-message (2023-07-21) 1 commit
(merged to 'next' on 2023-07-31 at 22f17d131b)
+ branch: update the message to refuse touching a branch in-use
"git branch -f X" to repoint the branch X seid that X was "checked
out" in another worktree, even when branch X was not and instead
being bisected or rebased. The message was reworded to say the
branch was "in use".
Will merge to 'master'.
source: <xmqqr0p1szhz.fsf_-_@gitster.g>
* jc/tree-walk-drop-base-offset (2023-07-07) 2 commits
(merged to 'next' on 2023-07-25 at cc050c60a6)
+ tree-walk: drop unused base_offset from do_match()
+ tree-walk: lose base_offset that is never used in tree_entry_interesting
Code simplification.
Will merge to 'master'.
source: <20230707222116.4129415-1-gitster@pobox.com>
* mh/credential-erase-improvements-more (2023-07-26) 2 commits
- credential/wincred: erase matching creds only
- credential/libsecret: erase matching creds only
Update two credential helpers to correctly match which credential
to erase; they dropped not the ones with stale password.
Needs review.
source: <pull.1527.v2.git.git.1690387585634.gitgitgadget@gmail.com>
source: <pull.1529.git.git.1687596777147.gitgitgadget@gmail.com>
* cc/repack-sift-filtered-objects-to-separate-pack (2023-07-24) 8 commits
. gc: add `gc.repackFilterTo` config option
. repack: implement `--filter-to` for storing filtered out objects
. gc: add `gc.repackFilter` config option
. repack: add `--filter=<filter-spec>` option
. repack: refactor finding pack prefix
. repack: refactor finishing pack-objects command
. t/helper: add 'find-pack' test-tool
. pack-objects: allow `--filter` without `--stdout`
"git repack" machinery learns to pay attention to the "--filter="
option.
Breaks CI with some environment variables configured.
cf. <xmqqo7jzh9mh.fsf@gitster.g>
source: <20230724085909.3831831-1-christian.couder@gmail.com>
* js/doc-unit-tests (2023-06-30) 1 commit
- unit tests: Add a project plan document
Process to add some form of low-level unit tests has started.
Still filling in blanks.
source: <0169ce6fb9ccafc089b74ae406db0d1a8ff8ac65.1688165272.git.steadmon@google.com>
* jt/path-filter-fix (2023-07-25) 7 commits
- commit-graph: new filter ver. that fixes murmur3
- repo-settings: introduce commitgraph.changedPathsVersion
- t4216: test changed path filters with high bit paths
- t/helper/test-read-graph: implement `bloom-filters` mode
- bloom.h: make `load_bloom_filter_from_graph()` public
- t/helper/test-read-graph.c: extract `dump_graph_info()`
- gitformat-commit-graph: describe version 2 of BDAT
The Bloom filter used for path limited history traversal was broken
on systems whose "char" is unsigned; update the implementation and
bump the format version to 2.
Still under discussion.
cf. <20230727205308.401364-1-jonathantanmy@google.com>
source: <cover.1689889382.git.jonathantanmy@google.com>
* mh/credential-libsecret-attrs (2023-06-16) 1 commit
- credential/libsecret: store new attributes
The way authentication related data other than passwords (e.g.
oath token and password expiration data) are stored in libsecret
keyrings has been rethought.
Needs review.
source: <pull.1469.v5.git.git.1686945306242.gitgitgadget@gmail.com>
* cc/git-replay (2023-06-03) 15 commits
- replay: stop assuming replayed branches do not diverge
- replay: add --contained to rebase contained branches
- replay: add --advance or 'cherry-pick' mode
- replay: disallow revision specific options and pathspecs
- replay: use standard revision ranges
- replay: make it a minimal server side command
- replay: remove HEAD related sanity check
- replay: remove progress and info output
- replay: add an important FIXME comment about gpg signing
- replay: don't simplify history
- replay: introduce pick_regular_commit()
- replay: die() instead of failing assert()
- replay: start using parse_options API
- replay: introduce new builtin
- t6429: remove switching aspects of fast-rebase
What's the status of this thing?
source: <20230602102533.876905-1-christian.couder@gmail.com>
--------------------------------------------------
[Discarded]
* jc/doc-submodule-update-settings (2023-07-13) 1 commit
. submodule: clarify that "!custom command" is the only oddball
Rewrite the description of giving a custom command to the
submodule.<name>.update configuraiton variable.
Superseded by pv/doc-submodule-update-settings topic.
source: <xmqqwmz3oacg.fsf@gitster.g>
* jc/rerere-read-rr-fix (2023-07-21) 1 commit
. rerere: match the hash algorithm with its length
SHA-256 fix.
Superseded by jc/retire-get-sha1-hex
source: <xmqqa5vou9ar.fsf@gitster.g>
* cb/checkout-same-branch-twice (2023-03-22) 2 commits
. SQUASH??? the test marked to expect failure passes from day one
. checkout/switch: disallow checking out same branch in multiple worktrees
"git checkout -B $branch" failed to protect against checking out
a branch that is checked out elsewhere, unlike "git branch -f" did.
Have been expecting a hopefully minor and final reroll for too long.
cf. <CAPUEspj_Bh+LgYLnWfeBdcq_uV5Cbou-7H51GLFjzSa5Qzby9w@mail.gmail.com>
source: <20230120113553.24655-1-carenas@gmail.com>
* ed/fsmonitor-windows-named-pipe (2023-03-24) 1 commit
. fsmonitor: handle differences between Windows named pipe functions
Fix fsmonitor on Windows when the filesystem path contains certain
characters.
Have been expecting a reroll for too long.
cf. <b9cf67e4-22a7-2ff0-8310-9223bea10d6d@jeffhostetler.com>
source: <pull.1503.git.1679678090412.gitgitgadget@gmail.com>
* rn/sparse-diff-index (2023-04-10) 1 commit
. diff-index: enable sparse index
"git diff-index" command has been taught to work better with the
sparse index.
Have been expecting a reroll for too long.
cf. <62821012-4fc3-5ad8-695c-70f7ab14a8c9@github.com>
source: <20230408112342.404318-1-nanth.raghul@gmail.com>
* es/recurse-submodules-option-is-a-bool (2023-04-10) 1 commit
. usage: clarify --recurse-submodules as a boolean
The "--[no-]recurse-submodules" option of "git checkout" and others
supported an undocumented syntax --recurse-submodules=<value> where
the value can spell a Boolean in various ways. The support for the
syntax is being dropped.
Have been expecting a reroll for too long.
cf. <ZDSTFwMFO7vbj/du@google.com>
source: <ZDSTFwMFO7vbj/du@google.com>
^ permalink raw reply [relevance 3%]
* Re: I think there is error in merge documents - current branch
2023-05-21 13:28 2% ` Minnie Shi
@ 2023-05-21 13:49 0% ` Minnie Shi
0 siblings, 0 replies; 200+ results
From: Minnie Shi @ 2023-05-21 13:49 UTC (permalink / raw)
To: Sergey Organov; +Cc: Junio C Hamano, git
do not worry, I found the instructions:
https://git-scm.com/docs/SubmittingPatches;
also just realized that Kristofer Haugsbakk already submitted a patch
(initially I thought his email was just a response).
We are all good now.
Thanks for your time.
Min
On Sun, May 21, 2023 at 3:28 PM Minnie Shi <minnie.shi@gmail.com> wrote:
>
> Hi All,
>
> What is the procedure to update the document to correct the error? As
> I responded yesterday, see below. we need to change the error.
>
> From: Minnie Shi <minnie.shi@gmail.com>
> Date: Sat, May 20, 2023 at 11:41 AM
> Subject: Re: [PATCH] doc: merge: fix mention of `ORIG_HEAD`
> To: Kristoffer Haugsbakk <code@khaugsbakk.name>
> Cc: <git@vger.kernel.org>, Kristoffer Haugsbakk <code@khaugsbakk.name>
>
>
> Okay, i read one more time, i think it should be read as
>
> Before the operation,
> -`ORIG_HEAD` is set to the tip of the "current" branch (`G`)
>
> instead of
> Before the operation,
> -`ORIG_HEAD` is set to the tip of the "current" branch (`C`)
>
> Kind regards,
> Mi
>
> On Sun, May 21, 2023 at 2:23 PM Sergey Organov <sorganov@gmail.com> wrote:
> >
> > Junio C Hamano <gitster@pobox.com> writes:
> >
> > > Minnie Shi <minnie.shi@gmail.com> writes:
> > >
> > >> in summary the sentence should be read as
> > >>
> > >> Before the operation, ORIG_HEAD is set to the tip of the current branch (H).
> > >> instead of
> > >> Before the operation, ORIG_HEAD is set to the tip of the current branch (C).
> > >
> > > Not C but G (i.e. the tip _before_ the history is updated).
> > >
> > > I notice that we overuse "current" there. One is to refer to the
> > > most recent commit on a branch, the other is to refer to the branch
> > > that is checked out. For the former, we say "the tip" in the other
> > > sentence, and it probably will make it less ambiguous if used that
> > > phrase.
> > >
> > > Then "`git merge topic`" will replay the changes made on the
> > > `topic` branch since it diverged from `master` (i.e., `E`) until
> > > the commit at the tip of the `topic` (`C`) on top of `master`,
> > > and record the result
> > > in a new commit along with the names of the two parent commits and
> > > a log message from the user describing the changes. Before the operation,
> > > `ORIG_HEAD` is set to the tip of the current branch (`G`).
> > >
> > > My reading also hiccupped with "replay"; the first sentence to
> > > explain the command says "incorporate the changes", and that may be
> > > a less confusing expression; "replay" somehow makes me imagine that
> > > the changes are cherry-picked one by one---it may be only me, so I
> > > left it as-is in the suggestion above.
> >
> > For me "apply changes" or even "apply cumulative changes" works much
> > better than "replay changes" in this context, especially provided we
> > will apparently have "git replay" soon.
> >
> > Thanks,
> > -- Sergey Organov
>
>
>
> --
> Kind regards
> Min
--
Kind regards
Min
^ permalink raw reply [relevance 0%]
* Re: I think there is error in merge documents - current branch
@ 2023-05-21 13:28 2% ` Minnie Shi
2023-05-21 13:49 0% ` Minnie Shi
0 siblings, 1 reply; 200+ results
From: Minnie Shi @ 2023-05-21 13:28 UTC (permalink / raw)
To: Sergey Organov; +Cc: Junio C Hamano, git
Hi All,
What is the procedure to update the document to correct the error? As
I responded yesterday, see below. we need to change the error.
From: Minnie Shi <minnie.shi@gmail.com>
Date: Sat, May 20, 2023 at 11:41 AM
Subject: Re: [PATCH] doc: merge: fix mention of `ORIG_HEAD`
To: Kristoffer Haugsbakk <code@khaugsbakk.name>
Cc: <git@vger.kernel.org>, Kristoffer Haugsbakk <code@khaugsbakk.name>
Okay, i read one more time, i think it should be read as
Before the operation,
-`ORIG_HEAD` is set to the tip of the "current" branch (`G`)
instead of
Before the operation,
-`ORIG_HEAD` is set to the tip of the "current" branch (`C`)
Kind regards,
Mi
On Sun, May 21, 2023 at 2:23 PM Sergey Organov <sorganov@gmail.com> wrote:
>
> Junio C Hamano <gitster@pobox.com> writes:
>
> > Minnie Shi <minnie.shi@gmail.com> writes:
> >
> >> in summary the sentence should be read as
> >>
> >> Before the operation, ORIG_HEAD is set to the tip of the current branch (H).
> >> instead of
> >> Before the operation, ORIG_HEAD is set to the tip of the current branch (C).
> >
> > Not C but G (i.e. the tip _before_ the history is updated).
> >
> > I notice that we overuse "current" there. One is to refer to the
> > most recent commit on a branch, the other is to refer to the branch
> > that is checked out. For the former, we say "the tip" in the other
> > sentence, and it probably will make it less ambiguous if used that
> > phrase.
> >
> > Then "`git merge topic`" will replay the changes made on the
> > `topic` branch since it diverged from `master` (i.e., `E`) until
> > the commit at the tip of the `topic` (`C`) on top of `master`,
> > and record the result
> > in a new commit along with the names of the two parent commits and
> > a log message from the user describing the changes. Before the operation,
> > `ORIG_HEAD` is set to the tip of the current branch (`G`).
> >
> > My reading also hiccupped with "replay"; the first sentence to
> > explain the command says "incorporate the changes", and that may be
> > a less confusing expression; "replay" somehow makes me imagine that
> > the changes are cherry-picked one by one---it may be only me, so I
> > left it as-is in the suggestion above.
>
> For me "apply changes" or even "apply cumulative changes" works much
> better than "replay changes" in this context, especially provided we
> will apparently have "git replay" soon.
>
> Thanks,
> -- Sergey Organov
--
Kind regards
Min
^ permalink raw reply [relevance 2%]
* Re: [PATCH] doc: merge: fix mention of `ORIG_HEAD`
2023-05-20 9:25 2% ` Minnie Shi
@ 2023-05-20 9:41 2% ` Minnie Shi
0 siblings, 0 replies; 200+ results
From: Minnie Shi @ 2023-05-20 9:41 UTC (permalink / raw)
To: Kristoffer Haugsbakk; +Cc: git
Okay, i read one more time, i think it should be read as
Before the operation,
-`ORIG_HEAD` is set to the tip of the "current" branch (`G`)
instead of
Before the operation,
-`ORIG_HEAD` is set to the tip of the "current" branch (`C`)
On Sat, May 20, 2023 at 11:25 AM Minnie Shi <minnie.shi@gmail.com> wrote:
>
> The document says the “current” branch is master , which means the
> HEAD is (G), which does not matter, it is not what I am challenging.
>
> What I am challenging is that it continues the context and says:
>
> Before the operation,
> -`ORIG_HEAD` is set to the tip of the "current" branch (`C`).
>
> that is not true, current branch is master, and it is (G), Maybe it
> should be changed to "topic branch", so it reads like this:
>
> Before the operation,
> -`ORIG_HEAD` is set to the tip of the ”topic” branch (`C`).
>
>
> Min
>
> On Sat, May 20, 2023 at 10:45 AM Kristoffer Haugsbakk
> <code@khaugsbakk.name> wrote:
> >
> > `ORIG_HEAD` before the attempted merge points at the commit that you are
> > on (the tip of `master`), not the tip of the branch that you are trying
> > to merge in.
> >
> > Reported-by: Minnie Shi <minnie.shi@gmail.com>
> > Signed-off-by: Kristoffer Haugsbakk <code@khaugsbakk.name>
> > ---
> > Documentation/git-merge.txt | 2 +-
> > 1 file changed, 1 insertion(+), 1 deletion(-)
> >
> > diff --git a/Documentation/git-merge.txt b/Documentation/git-merge.txt
> > index 0aeff572a59..9019b6a1e50 100644
> > --- a/Documentation/git-merge.txt
> > +++ b/Documentation/git-merge.txt
> > @@ -38,7 +38,7 @@ Then "`git merge topic`" will replay the changes made on the
> > its current commit (`C`) on top of `master`, and record the result
> > in a new commit along with the names of the two parent commits and
> > a log message from the user describing the changes. Before the operation,
> > -`ORIG_HEAD` is set to the tip of the current branch (`C`).
> > +`ORIG_HEAD` is set to the tip of the current branch (`G`).
> >
> > ------------
> > A---B---C topic
> > --
> > 2.41.0.rc1
> >
>
>
> --
> Kind regards
> Min
--
Kind regards
Min
^ permalink raw reply [relevance 2%]
* Re: [PATCH] doc: merge: fix mention of `ORIG_HEAD`
2023-05-20 8:44 2% ` [PATCH] doc: merge: fix mention of `ORIG_HEAD` Kristoffer Haugsbakk
@ 2023-05-20 9:25 2% ` Minnie Shi
2023-05-20 9:41 2% ` Minnie Shi
0 siblings, 1 reply; 200+ results
From: Minnie Shi @ 2023-05-20 9:25 UTC (permalink / raw)
To: Kristoffer Haugsbakk; +Cc: git
The document says the “current” branch is master , which means the
HEAD is (G), which does not matter, it is not what I am challenging.
What I am challenging is that it continues the context and says:
Before the operation,
-`ORIG_HEAD` is set to the tip of the "current" branch (`C`).
that is not true, current branch is master, and it is (G), Maybe it
should be changed to "topic branch", so it reads like this:
Before the operation,
-`ORIG_HEAD` is set to the tip of the ”topic” branch (`C`).
Min
On Sat, May 20, 2023 at 10:45 AM Kristoffer Haugsbakk
<code@khaugsbakk.name> wrote:
>
> `ORIG_HEAD` before the attempted merge points at the commit that you are
> on (the tip of `master`), not the tip of the branch that you are trying
> to merge in.
>
> Reported-by: Minnie Shi <minnie.shi@gmail.com>
> Signed-off-by: Kristoffer Haugsbakk <code@khaugsbakk.name>
> ---
> Documentation/git-merge.txt | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/Documentation/git-merge.txt b/Documentation/git-merge.txt
> index 0aeff572a59..9019b6a1e50 100644
> --- a/Documentation/git-merge.txt
> +++ b/Documentation/git-merge.txt
> @@ -38,7 +38,7 @@ Then "`git merge topic`" will replay the changes made on the
> its current commit (`C`) on top of `master`, and record the result
> in a new commit along with the names of the two parent commits and
> a log message from the user describing the changes. Before the operation,
> -`ORIG_HEAD` is set to the tip of the current branch (`C`).
> +`ORIG_HEAD` is set to the tip of the current branch (`G`).
>
> ------------
> A---B---C topic
> --
> 2.41.0.rc1
>
--
Kind regards
Min
^ permalink raw reply [relevance 2%]
* [PATCH] doc: merge: fix mention of `ORIG_HEAD`
@ 2023-05-20 8:44 2% ` Kristoffer Haugsbakk
2023-05-20 9:25 2% ` Minnie Shi
1 sibling, 1 reply; 200+ results
From: Kristoffer Haugsbakk @ 2023-05-20 8:44 UTC (permalink / raw)
To: minnie.shi, git; +Cc: Kristoffer Haugsbakk
`ORIG_HEAD` before the attempted merge points at the commit that you are
on (the tip of `master`), not the tip of the branch that you are trying
to merge in.
Reported-by: Minnie Shi <minnie.shi@gmail.com>
Signed-off-by: Kristoffer Haugsbakk <code@khaugsbakk.name>
---
Documentation/git-merge.txt | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/Documentation/git-merge.txt b/Documentation/git-merge.txt
index 0aeff572a59..9019b6a1e50 100644
--- a/Documentation/git-merge.txt
+++ b/Documentation/git-merge.txt
@@ -38,7 +38,7 @@ Then "`git merge topic`" will replay the changes made on the
its current commit (`C`) on top of `master`, and record the result
in a new commit along with the names of the two parent commits and
a log message from the user describing the changes. Before the operation,
-`ORIG_HEAD` is set to the tip of the current branch (`C`).
+`ORIG_HEAD` is set to the tip of the current branch (`G`).
------------
A---B---C topic
--
2.41.0.rc1
^ permalink raw reply related [relevance 2%]
* [ANNOUNCE] Git v2.39.0
@ 2022-12-12 13:43 3% Junio C Hamano
0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2022-12-12 13:43 UTC (permalink / raw)
To: git; +Cc: Linux Kernel, git-packagers
The latest feature release Git v2.39.0 is now available at the
usual places. It is comprised of 483 non-merge commits since
v2.38.0, contributed by 86 people, 31 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.39.0'
tag and the 'master' branch that the tag points at:
url = https://git.kernel.org/pub/scm/git/git
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.38.0 are as follows.
Welcome to the Git development community!
Alexander Kanavin, Alexander Meshcheryakov, Andreas Hasenack,
Anh Le, Arthur Chan, Daniel Sonbolian, Debra Obondo, Diomidis
Spinellis, Erik Cervin Edin, Hank Leininger, herr.kaste, John
A. Leuenhagen, Julia Ramer, Kevin Backhouse, Kousik Sanagavarapu,
Lukáš Doktor, Martin Englund, M Hickford, Michael V. Scovetta,
Noah Betzen, Nsengiyumva Wilberforce, orygaw, Oscar Dominguez,
Ronan Pigott, Rubén Justo, Sotir Danailov, srz_zumix, Stefano
Rivera, Tim Jaacks, Vincent Bernat, and Vlad-Stefan Harbuz.
Returning contributors who helped this release are as follows.
Thanks for your continued support.
정재우, Ævar Arnfjörð Bjarmason, Alejandro R. Sedeño,
Alexander Shopov, Alex Henrie, Bagas Sanjaya, Derrick Stolee,
Đoàn Trần Công Danh, Elijah Newren, Emily Shaffer, Emir
SARI, Eric DeCosta, Eric Sunshine, Eric Wong, Fangyi Zhou,
Glen Choo, Han-Wen Nienhuys, Jan Pokorný, Jean-Noël Avila,
Jeff Hostetler, Jeff King, Jerry Zhang, Jiang Xin, Johannes
Altmanninger, Johannes Schindelin, John Cai, Jonathan Tan,
Jordi Mas, Julien Moutinho, Junio C Hamano, Kyle Meyer, Martin
Ågren, Martin von Zweigbergk, Matheus Tavares, Matthew John
Cheetham, Matthias Rüster, Michael J Gruber, Michael McClimon,
Patrick Steinhardt, Paul Smith, Peter Krefting, Philip Oakley,
Philippe Blain, Phillip Wood, Ralf Thielow, Randall S. Becker,
René Scharfe, Sergey Organov, Shaoxuan Yuan, SZEDER Gábor,
Taylor Blau, Torsten Bögershausen, Victoria Dye, Yi-Jyun Pan,
and 依云.
[*] We are counting not just the authorship contribution but issue
reporting, mentoring, helping and reviewing that are recorded in
the commit trailers.
----------------------------------------------------------------
Git v2.39 Release Notes
=======================
UI, Workflows & Features
------------------------
* "git grep" learned to expand the sparse-index more lazily and on
demand in a sparse checkout.
* By default, use of fsmonitor on a repository on networked
filesystem is disabled. Add knobs to make it workable on macOS.
* After checking out a "branch" that is a symbolic-ref that points at
another branch, "git symbolic-ref HEAD" reports the underlying
branch, not the symbolic-ref the user gave checkout as argument.
The command learned the "--no-recurse" option to stop after
dereferencing a symbolic-ref only once.
* "git branch --edit-description @{-1}" is now a way to edit branch
description of the branch you were on before switching to the
current branch.
* "git merge-tree --stdin" is a new way to request a series of merges
and report the merge results.
* "git shortlog" learned to group by the "format" string.
* A new "--include-whitespace" option is added to "git patch-id", and
existing bugs in the internal patch-id logic that did not match
what "git patch-id" produces have been corrected.
* Enable gc.cruftpacks by default for those who opt into
feature.experimental setting.
* "git repack" learns to send cruft objects out of the way into
packfiles outside the repository.
* 'scalar reconfigure -a' is taught to automatically remove
scalar.repo entires which no longer exist.
* Redact headers from cURL's h2h3 module in GIT_CURL_VERBOSE and
others.
* 'git maintenance register' is taught to write configuration to an
arbitrary path, and 'git for-each-repo' is taught to expand tilde
characters in paths.
* When creating new notes, the template used to get a stray empty
newline, which has been removed.
* "git receive-pack" used to use all the local refs as the boundary for
checking connectivity of the data "git push" sent, but now it uses
only the refs that it advertised to the pusher. In a repository with
the .hideRefs configuration, this reduces the resources needed to
perform the check.
* With '--recurse-submodules=on-demand', all submodules are
recursively pushed.
Performance, Internal Implementation, Development Support etc.
--------------------------------------------------------------
* With a bit of header twiddling, use the native regexp library on
macOS instead of the compat/ one.
* Prepare for GNU [ef]grep that throw warning of their uses.
* Sources related to fuzz testing have been moved down to their own
directory.
* Most credential helpers ignored unknown entries in a credential
description, but a few died upon seeing them. The latter were
taught to ignore them, too
* "scalar unregister" in a repository that is already been
unregistered reported an error.
* Remove error detection from a function that fetches from promisor
remotes, and make it die when such a fetch fails to bring all the
requested objects, to give an early failure to various operations.
* Update CodingGuidelines to clarify what features to use and avoid
in C99.
* Avoid false-positive from LSan whose assumption may be broken with
higher optimization levels.
* Enable address and undefined sanitizer tasks at GitHub Actions CI.
* More UNUSED annotation to help using -Wunused option with the
compiler.
(merge 4b992f0a24 jk/unused-anno-more later to maint).
* Rewrite a deep recursion in the skipping negotiator to use a loop
with on-heap prio queue to avoid stack wastage.
* Add documentation for message IDs in fsck error messages.
* Define the logical elements of a "bundle list", data structure to
store them in-core, format to transfer them, and code to parse
them.
* The role the security mailing list plays in an embargoed release
has been documented.
* Two new facilities, "timer" and "counter", are introduced to the
trace2 API.
* Code simplification by using strvec_pushf() instead of building an
argument in a separate strbuf.
* Make sure generated dependency file is stably sorted to help
developers debugging their build issues.
* The glossary entries for "commit-graph file" and "reachability
bitmap" have been added.
* Various tests exercising the transfer.credentialsInUrl
configuration are taught to avoid making requests which require
resolving localhost to reduce CI-flakiness.
* A redundant diagnostic message is dropped from test_path_is_missing().
* Simplify the run-command API.
* Update the actions/github-script dependency in CI to avoid a
deprecation warning.
* Progress on being able to initialize a rev_info struct with a
macro.
* Add trace2 counters to the region to clear skip worktree bits in a
sparse checkout.
* Modernize test script to avoid "test -f" and friends.
* Avoid calling 'cache_tree_update()' when doing so would be
redundant.
* Update the credential-cache documentation to provide a more
realistic example.
* Makefile comments updates and reordering to clarify knobs used to
choose SHA implementations.
* A design document for sparse-checkout's future directions has been
added.
* Teach chainlint.pl to annotate the original test definition instead
of the token stream.
* "make coccicheck" is time consuming. It has been made to run more
incrementally.
* `parse_object()` has been hardened to check for the existence of a
suspected blob object.
* The build procedure has been adjusted to GNUmake version 4.4, which
made some changes to how pattern rule with multiple targets are
handled.
Fixes since v2.38
-----------------
* The codepath that reads from the index v4 had unaligned memory
accesses, which has been corrected.
* Fix messages incorrectly marked for translation.
* "git fsck" failed to release contents of tree objects already used
from the memory, which has been fixed.
* "git clone" did not like to see the "--bare" and the "--origin"
options used together without a good reason.
* "git remote rename" failed to rename a remote without fetch
refspec, which has been corrected.
* Documentation on various Boolean GIT_* environment variables have
been clarified.
* "git rebase -i" can mistakenly attempt to apply a fixup to a commit
itself, which has been corrected.
* "git multi-pack-index repack/expire" used to repack unreachable
cruft into a new pack, which have been corrected.
* In read-only repositories, "git merge-tree" tried to come up with a
merge result tree object, which it failed (which is not wrong) and
led to a segfault (which is bad), which has been corrected.
* Force C locale while running tests around httpd to make sure we can
find expected error messages in the log.
* Fix a logic in "mailinfo -b" that miscomputed the length of a
substring, which lead to an out-of-bounds access.
* The codepath to sign learned to report errors when it fails to read
from "ssh-keygen".
* Code clean-up that results in plugging a leak.
* "GIT_EDITOR=: git branch --edit-description" resulted in failure,
which has been corrected.
* The code to clean temporary object directories (used for
quarantine) tried to remove them inside its signal handler, which
was a no-no.
* Update comment in the Makefile about the RUNTIME_PREFIX config knob.
* Clarify that "the sentence after <area>: prefix does not begin with
a capital letter" rule applies only to the commit title.
* "git branch --edit-description" on an unborn branch misleadingly
said that no such branch exists, which has been corrected.
* Work around older clang that warns against C99 zero initialization
syntax for struct.
* Giving "--invert-grep" and "--all-match" without "--grep" to the
"git log" command resulted in an attempt to access grep pattern
expression structure that has not been allocated, which has been
corrected.
(merge db84376f98 ab/grep-simplify-extended-expression later to maint).
* "git diff rev^!" did not show combined diff to go to the rev from
its parents.
(merge a79c6b6081 rs/diff-caret-bang-with-parents later to maint).
* Allow configuration files in "protected" scopes to include other
configuration files.
(merge ecec57b3c9 gc/bare-repo-discovery later to maint).
* Give a bit more diversity to macOS CI by using sha1dc in one of the
jobs (the other one tests Apple Common Crypto).
(merge 1ad5c3df35 jc/ci-osx-with-sha1dc later to maint).
* A bugfix with tracing support in midx codepath
(merge e9c3839944 tb/midx-bitmap-selection-fix later to maint).
* When geometric repacking feature is in use together with the
--pack-kept-objects option, we lost packs marked with .keep files.
(merge 197443e80a tb/save-keep-pack-during-geometric-repack later to maint).
* Move a global variable added as a hack during regression fixes to
its proper place in the API.
(merge 0b0ab95f17 ab/run-hook-api-cleanup later to maint).
* Update to build procedure with VS using CMake/CTest.
(merge c858750b41 js/cmake-updates later to maint).
* The short-help text shown by "git cmd -h" and the synopsis text
shown at the beginning of "git help cmd" have been made more
consistent.
* When creating a multi-pack bitmap, remove per-pack bitmap files
unconditionally as they will never be consulted.
(merge 55d902cd61 tb/remove-unused-pack-bitmap later to maint).
* Fix a longstanding syntax error in Git.pm error codepath.
* "git diff --stat" etc. were invented back when everything was ASCII
and strlen() was a way to measure the display width of a string;
adjust them to compute the display width assuming UTF-8 pathnames.
(merge ce8529b2bb tb/diffstat-with-utf8-strwidth later to maint).
* "git branch --edit-description" can exit with status -1 which is
not a good practice; it learned to use 1 as everybody else instead.
* "git apply" limits its input to a bit less than 1 GiB.
* Merging a branch with directory renames into a branch that changes
the directory to a symlink was mishandled by the ort merge
strategy, which has been corrected.
* A bugfix to "git subtree" in its split and merge features.
* Fix some bugs in the reflog messages when rebasing and changes the
reflog messages of "rebase --apply" to match "rebase --merge" with
the aim of making the reflog easier to parse.
* "git rebase --keep-base" used to discard the commits that are
already cherry-picked to the upstream, even when "keep-base" meant
that the base, on top of which the history is being rebuilt, does
not yet include these cherry-picked commits. The --keep-base
option now implies --reapply-cherry-picks and --no-fork-point
options.
* The way "git repack" created temporary files when it received a
signal was prone to deadlocking, which has been corrected.
* Various tests exercising the transfer.credentialsInUrl
configuration are taught to avoid making requests which require
resolving localhost to reduce CI-flakiness.
* The adjust_shared_perm() helper function learned to refrain from
setting the "g+s" bit on directories when it is not necessary.
* "git archive" mistakenly complained twice about a missing
executable, which has been corrected.
* Fix a bug where `git branch -d` did not work on an orphaned HEAD.
* `git rebase --update-refs` would delete references when all
`update-ref` commands in the sequencer were removed, which has been
corrected.
* Fix a regression in the bisect-helper which mistakenly treats
arguments to the command given to 'git bisect run' as arguments to
the helper.
* Correct an error where `git rebase` would mistakenly use a branch or
tag named "refs/rewritten/xyz" when missing a rebase label.
* Assorted fixes of parsing end-user input as integers.
(merge 14770cf0de pw/config-int-parse-fixes later to maint).
* "git prune" may try to iterate over .git/objects/pack for trash
files to remove in it, and loudly fail when the directory is
missing, which is not necessary. The command has been taught to
ignore such a failure.
(merge 6974765352 ew/prune-with-missing-objects-pack later to maint).
* Add one more candidate directory that may house httpd modules while
running tests.
(merge 1c7dc23d41 es/locate-httpd-module-location-in-test later to maint).
* A handful of leaks in the line-log machinery have been plugged.
* The format of a line in /proc/cpuinfo that describes a CPU on s390x
looked different from everybody else, and the code in chainlint.pl
failed to parse it.
(merge 1f51b77f4f ah/chainlint-cpuinfo-parse-fix later to maint).
* Adjust the GitHub CI to newer ubuntu release.
(merge 0d3507f3e7 jx/ci-ubuntu-fix later to maint).
* Other code cleanup, docfix, build fix, etc.
(merge 413bc6d20a ds/cmd-main-reorder later to maint).
(merge 8d2863e4ed nw/t1002-cleanup later to maint).
(merge 7c2dc122f9 rs/list-objects-filter-leakfix later to maint).
(merge 288fcb1c94 zk/push-use-bitmaps later to maint).
(merge 42db324c0f km/merge-recursive-typofix later to maint).
----------------------------------------------------------------
Changes since v2.38.0 are as follows:
Alejandro R. Sedeño (1):
git-compat-util.h: GCC deprecated message arg only in GCC 4.5+
Alex Henrie (2):
fsmonitor--daemon: don't translate literal commands
push: improve grammar of branch.autoSetupMerge advice
Alexander Shopov (1):
l10n: bg.po: Updated Bulgarian translation (5501t)
Andreas Hasenack (1):
chainlint.pl: fix /proc/cpuinfo regexp
Anh Le (2):
index: add trace2 region for clear skip worktree
index: raise a bug if the index is materialised more than once
Arthur Chan (1):
fuzz: reorganise the path for existing oss-fuzz fuzzers
Bagas Sanjaya (1):
l10n: po-id for 2.39 (round 1)
Daniel Sonbolian (1):
git.c: improve code readability in cmd_main()
Debra Obondo (1):
t7001-mv.sh: modernizing test script using functions
Derrick Stolee (15):
maintenance: add 'unregister --force'
scalar: make 'unregister' idempotent
gc: replace config subprocesses with API calls
string-list: document iterator behavior on NULL input
bundle-uri: fix technical doc issues
bundle-uri: use plain string in find_temp_filename()
bundle-uri: create bundle_list struct and helpers
bundle-uri: create base key-value pair parsing
bundle-uri: parse bundle list in config format
bundle-uri: limit recursion depth for bundle lists
bundle: properly clear all revision flags
bundle-uri: fetch a list of bundles
bundle: add flags to verify_bundle()
bundle-uri: quiet failed unbundlings
bundle-uri: suppress stderr from remote-https
Diomidis Spinellis (1):
grep: fix multibyte regex handling under macOS
Elijah Newren (4):
merge-ort: fix bug with dir rename vs change dir to symlink
merge-tree: update documentation for differences in -z output
merge-tree: support multiple batched merges with --stdin
sparse-checkout.txt: new document with sparse-checkout directions
Emily Shaffer (2):
gc: add tests for --cruft and friends
config: let feature.experimental imply gc.cruftPacks=true
Emir SARI (1):
l10n: tr: v2.39.0 updates
Eric DeCosta (6):
fsmonitor: refactor filesystem checks to common interface
fsmonitor: relocate socket file if .git directory is remote
fsmonitor: avoid socket location check if using hook
fsmonitor: deal with synthetic firmlinks on macOS
fsmonitor: check for compatability before communicating with fsmonitor
fsmonitor: add documentation for allowRemote and socketDir options
Eric Sunshine (9):
check-non-portable-shell: detect obsolescent egrep/fgrep
chainlint: add explanatory comments
chainlint: tighten accuracy when consuming input stream
chainlint: latch start/end position of each token
chainlint: annotate original test definition rather than token stream
chainlint: sidestep impoverished macOS "terminfo"
chainlint: latch line numbers at which each token starts and ends
chainlint: prefix annotated test definition with line numbers
lib-httpd: extend module location auto-detection
Eric Wong (2):
delta-islands: free island-related data after use
prune: quiet ENOENT on missing directories
Fangyi Zhou (1):
l10n: zh_CN v2.39.0 round 1
Glen Choo (3):
config: respect includes in protected config
http: redact curl h2h3 headers in info
object-file: use real paths when adding alternates
Han-Wen Nienhuys (1):
refs: unify parse_worktree_ref() and ref_type()
Jean-Noël Avila (2):
i18n: fix command template placeholder format
l10n: fr: v2.39 rnd 1
Jeff Hostetler (9):
config.mak.dev: disable suggest braces error on old clang versions
trace2: use size_t alloc,nr_open_regions in tr2tls_thread_ctx
tr2tls: clarify TLS terminology
api-trace2.txt: elminate section describing the public trace2 API
trace2: rename the thread_name argument to trace2_thread_start
trace2: improve thread-name documentation in the thread-context
trace2: convert ctx.thread_name from strbuf to pointer
trace2: add stopwatch timers
trace2: add global counter mechanism
Jeff King (43):
fsck: free tree buffers after walking unreachable objects
fsck: turn off save_commit_buffer
parse_object_buffer(): respect save_commit_buffer
clone: allow "--bare" with "-o"
remote: handle rename of remote without fetch refspec
shell: add basic tests
shell: limit size of interactive commands
sequencer: detect author name errors in read_author_script()
test-submodule: inline resolve_relative_url() function
multi-pack-index: avoid writing to global in option callback
commit: avoid writing to global in option callback
attr: drop DEBUG_ATTR code
dir: use fspathncmp() in pl_hashmap_cmp()
fsmonitor: fix leak of warning message
diffstat_consume(): assert non-zero length
submodule--helper: drop unused argc from module_list_compute()
update-index: drop unused argc from do_reupdate()
mark unused parameters in trivial compat functions
object-file: mark unused parameters in hash_unknown functions
string-list: mark unused callback parameters
date: mark unused parameters in handler functions
apply: mark unused parameters in handlers
apply: mark unused parameters in noop error/warning routine
convert: mark unused parameter in null stream filter
diffcore-pickaxe: mark unused parameters in pickaxe functions
ll-merge: mark unused parameters in callbacks
Makefile: force -O0 when compiling with SANITIZE=leak
repack: convert "names" util bitfield to array
repack: populate extension bits incrementally
repack: expand error message for missing pack files
repack: use tempfiles for signal cleanup
repack: drop remove_temporary_files()
Git.pm: trust rev-parse to find bare repositories
t7700: annotate cruft-pack failure with ok=sigpipe
shortlog: accept `--date`-related options
Makefile: force -O0 when compiling with SANITIZE=leak
t5516: move plaintext-password tests from t5601 and t5516
ref-filter: fix parsing of signatures without blank lines
ref-filter: fix parsing of signatures with CRLF and no body
branch: gracefully handle '-d' on orphan HEAD
t: run t5551 tests with both HTTP and HTTP/2
parse_object(): drop extra "has" check before checking object type
parse_object(): check on-disk type of suspected blob
Jerry Zhang (6):
patch-id: fix stable patch id for binary / header-only
patch-id: use stable patch-id for rebases
builtin: patch-id: fix patch-id with binary diffs
patch-id: fix patch-id for mode changes
builtin: patch-id: add --verbatim as a command mode
builtin: patch-id: remove unused diff-tree prefix
Jiang Xin (5):
t5516: fail to run in verbose mode
github-actions: run gcc-8 on ubuntu-20.04 image
ci: remove the pipe after "p4 -V" to catch errors
ci: use the same version of p4 on both Linux and macOS
ci: install python on ubuntu
Johannes Altmanninger (1):
sequencer: avoid dropping fixup commit that targets self via commit-ish
Johannes Schindelin (14):
merge-ort: fix segmentation fault in read-only repositories
merge-ort: return early when failing to write a blob
cmake: make it easier to diagnose regressions in CTest runs
cmake: copy the merge tools for testing
add -p: avoid ambiguous signed/unsigned comparison
cmake: avoid editing t/test-lib.sh
cmake: increase time-out for a long-running test
t5516/t5601: be less strict about the number of credential warnings
scalar reconfigure -a: remove stale `scalar.repo` entries
ci: use a newer `github-script` version
tests(scalar): tighten the stale `scalar.repo` test some
ci: avoid using deprecated {up,down}load-artifacts Action
RelNotes: a couple of typofixes
ci: use a newer `github-script` version
John Cai (3):
tmp-objdir: skip clean up when handling a signal
fsck: remove the unused BAD_TAG_OBJECT
fsck: document msg-id
Jonathan Tan (4):
promisor-remote: remove a return value
promisor-remote: die upon failing fetch
negotiator/skipping: avoid stack overflow
Doc: document push.recurseSubmodules=only
Jordi Mas (1):
l10n: Update Catalan translation
Julia Ramer (1):
embargoed releases: also describe the git-security list and the process
Junio C Hamano (32):
environ: document GIT_SSL_NO_VERIFY
environ: explain Boolean environment variables
environ: GIT_FLUSH should be made a usual Boolean
environ: simplify description of GIT_INDEX_FILE
environ: GIT_INDEX_VERSION affects not just a new repository
branch: do not fail a no-op --edit-desc
SubmittingPatches: use usual capitalization in the log message body
Start 2.39 cycle
symbolic-ref: teach "--[no-]recurse" option
The (real) first batch for 2.39
The second batch
The third batch
The fourth batch
ci: add address and undefined sanitizer tasks
ci: use DC_SHA1=YesPlease on osx-clang job for CI
The fifth batch
diff: leave NEEDWORK notes in show_stats() function
fsck: remove the unused MISSING_TREE_OBJECT
Documentation: add lint-fsck-msgids
Downmerge a handful of topics for 2.38.2
The sixth batch
Downmerge a bit more for 2.38.2
The seventh batch
The eighth batch
adjust_shared_perm(): leave g+s alone when the group does not matter
Git 2.39-rc0
Another batch before -rc1
A bit more before -rc1
Git 2.39-rc1
Git 2.39-rc2
Git 2.38.2
Git 2.39
Kevin Backhouse (1):
alias.c: reject too-long cmdline strings in split_cmdline()
Kousik Sanagavarapu (1):
repository-version.txt: partialClone casing change
Kyle Meyer (1):
merge-recursive: fix variable typo in error message
M Hickford (4):
Documentation/gitcredentials.txt: mention password alternatives
Documentation: increase example cache timeout to 1 hour
docs: clarify that credential discards unrecognised attributes
Docs: describe how a credential-generating helper works
Martin Ågren (1):
test-lib-functions: drop redundant diagnostic print
Matheus Tavares (1):
mailmap: update email address of Matheus Tavares
Matthew John Cheetham (3):
wincred: ignore unknown lines (do not die)
netrc: ignore unknown lines (do not die)
osxkeychain: clarify that we ignore unknown lines
Michael J Gruber (1):
notes: avoid empty line in template
Michael McClimon (1):
Git.pm: add semicolon after catch statement
Noah Betzen (1):
mergetool.txt: typofix 'overwriten' -> 'overwritten'
Nsengiyumva Wilberforce (1):
t1002: modernize outdated conditional
Oscar Dominguez (1):
ci(main): upgrade actions/checkout to v3
Patrick Steinhardt (7):
refs: fix memory leak when parsing hideRefs config
refs: get rid of global list of hidden refs
revision: move together exclusion-related functions
revision: introduce struct to handle exclusions
revision: add new parameter to exclude hidden refs
rev-parse: add `--exclude-hidden=` option
receive-pack: only use visible refs for connectivity check
Paul Smith (1):
Makefile: avoid multiple patterns when recipes generate one file
Peter Krefting (1):
l10n: sv.po: Update Swedish translation (5501t0f0)
Philip Oakley (4):
doc: use "commit-graph" hyphenation consistently
doc: use 'object database' not ODB or abbreviation
glossary: add "commit graph" description
glossary: add reachability bitmap description
Philippe Blain (9):
test-lib-functions: mark 'test_commit' variables as 'local'
subtree: use 'git rev-parse --verify [--quiet]' for better error messages
subtree: add 'die_incompatible_opt' function to reduce duplication
subtree: prefix die messages with 'fatal'
subtree: define a variable before its first use in 'find_latest_squash'
subtree: use named variables instead of "$@" in cmd_pull
subtree: process 'git-subtree-split' trailer in separate function
subtree: fix squash merging after annotated tag was squashed merged
subtree: fix split after annotated tag was squashed merged
Phillip Wood (26):
mailinfo -b: fix an out of bounds access
ssh signing: return an error when signature cannot be read
t3435: remove redundant test case
t3416: tighten two tests
t3416: set $EDITOR in subshell
rebase: be stricter when reading state files containing oids
rebase: store orig_head as a commit
rebase: rename merge_base to branch_base
rebase: factor out branch_base calculation
rebase --keep-base: imply --reapply-cherry-picks
rebase --keep-base: imply --no-fork-point
rebase --apply: remove duplicated code
t3406: rework rebase reflog tests
rebase --merge: fix reflog when continuing
rebase --merge: fix reflog message after skipping
rebase --apply: respect GIT_REFLOG_ACTION
rebase --apply: make reflog messages match rebase --merge
rebase --abort: improve reflog message
rebase: cleanup action handling
sequencer: stop exporting GIT_REFLOG_ACTION
rebase: stop exporting GIT_REFLOG_ACTION
git_parse_unsigned: reject negative values
config: require at least one digit when parsing numbers
git_parse_signed(): avoid integer overflow
sequencer: unify label lookup
sequencer: tighten label lookups
Ralf Thielow (1):
l10n: de.po: update German translation
René Scharfe (21):
revision: use strtol_i() for exclude_parent
revisions.txt: unspecify order of resolved parts of ^!
diff: support ^! for merges
gc: simplify maintenance_task_pack_refs()
t/lib-httpd: pass LANG and LC_ALL to Apache
bisect--helper: plug strvec leak
archive: deduplicate verbose printing
submodule: use strvec_pushf() for --super-prefix
run-command: fix return value comment
am: simplify building "show" argument list
bisect: simplify building "checkout" argument list
bisect--helper: factor out do_bisect_run()
sequencer: simplify building argument list in do_exec()
use child_process member "args" instead of string array variable
use child_process members "args" and "env" directly
replace and remove run_command_v_opt_cd_env()
replace and remove run_command_v_opt_tr2()
replace and remove run_command_v_opt_cd_env_tr2()
replace and remove run_command_v_opt()
archive-tar: report filter start error only once
list-objects-filter: plug combine_filter_data leak
Ronan Pigott (2):
for-each-repo: interpolate repo path arguments
maintenance: add option to register in a specific config
Rubén Justo (5):
ref-filter.c: fix a leak in get_head_description
branch: description for non-existent branch errors
branch: support for shortcuts like @{-1}, completed
branch: error copying or renaming a detached HEAD
branch: error code with --edit-description
SZEDER Gábor (4):
Documentation/build-docdep.perl: generate sorted output
line-log: free diff queue when processing non-merge commits
line-log: free the diff queues' arrays when processing merge commits
diff.c: use diff_free_queue()
Sergey Organov (3):
diff-merges: cleanup func_by_opt()
diff-merges: cleanup set_diff_merges()
diff-merges: clarify log.diffMerges documentation
Shaoxuan Yuan (1):
builtin/grep.c: integrate with sparse index
Sotir Danailov (1):
docs: git-send-email: difference between ssl and tls smtp-encryption
Taylor Blau (64):
Documentation/git-multi-pack-index.txt: fix typo
Documentation/git-multi-pack-index.txt: clarify expire behavior
midx.c: prevent `expire` from removing the cruft pack
midx.c: avoid cruft packs with `repack --batch-size=0`
midx.c: replace `xcalloc()` with `CALLOC_ARRAY()`
midx.c: remove unnecessary loop condition
midx.c: avoid cruft packs with non-zero `repack --batch-size`
builtin/clone.c: disallow `--local` clones with symlinks
t/lib-submodule-update.sh: allow local submodules
t/t1NNN: allow local submodules
t/2NNNN: allow local submodules
t/t3NNN: allow local submodules
t/t4NNN: allow local submodules
t/t5NNN: allow local submodules
t/t6NNN: allow local submodules
t/t7NNN: allow local submodules
t/t9NNN: allow local submodules
transport: make `protocol.file.allow` be "user" by default
t1092: prepare for changing protocol.file.allow
t2080: prepare for changing protocol.file.allow
t1092: prepare for changing protocol.file.allow
t2080: prepare for changing protocol.file.allow
t3207: prepare for changing protocol.file.allow
t5516: prepare for changing protocol.file.allow
t5537: prepare for changing protocol.file.allow
t7814: prepare for changing protocol.file.allow
t3206: prepare for changing protocol.file.allow
t5537: prepare for changing protocol.file.allow
Git 2.30.6
Git 2.31.5
Git 2.32.4
Git 2.33.5
Git 2.34.5
Git 2.35.5
Git 2.36.3
t7527: prepare for changing protocol.file.allow
Git 2.37.4
Git 2.38.1
midx.c: fix whitespace typo
midx.c: consider annotated tags during bitmap selection
midx.c: instrument MIDX and bitmap generation with trace2 regions
pack-bitmap-write.c: instrument number of reused bitmaps
builtin/repack.c: remove redundant pack-based bitmaps
repack: don't remove .keep packs with `--pack-kept-objects`
builtin/repack.c: pass "out" to `prepare_pack_objects`
builtin/repack.c: pass "cruft_expiration" to `write_cruft_pack`
builtin/repack.c: write cruft packs to arbitrary locations
builtin/repack.c: implement `--expire-to` for storing pruned objects
shortlog: make trailer insertion a noop when appropriate
shortlog: extract `--group` fragment for translation
shortlog: support arbitrary commit format `--group`s
shortlog: extract `shortlog_finish_setup()`
shortlog: implement `--group=author` in terms of `--group=<format>`
shortlog: implement `--group=committer` in terms of `--group=<format>`
apply: reject patches larger than ~1 GiB
Documentation/howto/maintain-git.txt: fix Meta/redo-jch.sh invocation
The ninth batch
Documentation: build redo-jch.sh from master..jch
Documentation: build redo-seen.sh from jch..seen
The tenth batch
The eleventh batch
The twelfth batch
builtin/gc.c: fix use-after-free in maintenance_unregister()
The thirteenth batch
Torsten Bögershausen (1):
diff.c: use utf8_strwidth() to count display width
Victoria Dye (8):
read-cache: avoid misaligned reads in index v4
rebase --update-refs: avoid unintended ref deletion
cache-tree: add perf test comparing update and prime
unpack-trees: add 'skip_cache_tree_update' option
reset: use 'skip_cache_tree_update' option
read-tree: use 'skip_cache_tree_update' option
rebase: use 'skip_cache_tree_update' option
rebase --update-refs: avoid unintended ref deletion
Vincent Bernat (1):
ls-files: fix --ignored and --killed flags in synopsis
Vlad-Stefan Harbuz (1):
Documentation: fix typo
Yi-Jyun Pan (1):
l10n: zh_TW.po: Git 2.39-rc2
srz_zumix (1):
fsmonitor--daemon: on macOS support symlink
Ævar Arnfjörð Bjarmason (118):
test-lib: have SANITIZE=leak imply TEST_NO_MALLOC_CHECK
CodingGuidelines: update for C99
CodingGuidelines: mention dynamic C99 initializer elements
CodingGuidelines: allow declaring variables in for loops
CodingGuidelines: mention C99 features we can't use
grep.c: remove "extended" in favor of "pattern_expression", fix segfault
CodingGuidelines: recommend against unportable C99 struct syntax
bundle-uri: create "key=value" line parsing
bundle-uri: unit test "key=value" parsing
run-command test helper: use "else if" pattern
run-command API: have "run_processes_parallel{,_tr2}()" return void
run-command tests: use "return", not "exit"
run-command API: make "n" parameter a "size_t"
run-command API: don't fall back on online_cpus()
run-command.c: use designated init for pp_init(), add "const"
run-command API: have run_process_parallel() take an "opts" struct
run-command API: move *_tr2() users to "run_processes_parallel()"
run-command.c: make "struct parallel_processes" const if possible
run-command.c: don't copy *_fn to "struct parallel_processes"
run-command.c: don't copy "ungroup" to "struct parallel_processes"
run-command.c: don't copy "data" to "struct parallel_processes"
run-command.c: use "opts->processes", not "pp->max_processes"
run-command.c: pass "opts" further down, and use "opts->processes"
run-command.c: remove "max_processes", add "const" to signal() handler
tests: assert *.txt SYNOPSIS and -h output
CodingGuidelines: update and clarify command-line conventions
builtin/bundle.c: indent with tabs
bundle: define subcommand -h in terms of command -h
doc SYNOPSIS: don't use ' for subcommands
doc SYNOPSIS: consistently use ' for commands
built-ins: consistently add "\n" between "usage" and options
doc txt & -h consistency: word-wrap
doc txt & -h consistency: fix incorrect alternates syntax
doc txt & -h consistency: add "-z" to cat-file "-h"
doc txt & -h consistency: balance unbalanced "[" and "]"
doc txt & -h consistency: correct padding around "[]()"
stash doc SYNOPSIS & -h: correct padding around "[]()"
doc txt & -h consistency: use "<options>", not "<options>..."
doc SYNOPSIS & -h: use "-" to separate words in labels, not "_"
doc txt & -h consistency: fix mismatching labels
doc txt & -h consistency: add or fix optional "--" syntax
doc txt & -h consistency: make output order consistent
doc txt & -h consistency: add missing options and labels
doc txt & -h consistency: make "rerere" consistent
doc txt & -h consistency: make "read-tree" consistent
doc txt & -h consistency: make "bundle" consistent
doc txt & -h consistency: use "git foo" form, not "git-foo"
doc txt & -h consistency: add missing options
doc txt & -h consistency: make "stash" consistent
doc txt & -h consistency: make "annotate" consistent
doc txt & -h consistency: use "[<label>...]" for "zero or more"
doc txt & -h consistency: make "diff-tree" consistent
doc txt & -h consistency: make "commit" consistent
reflog doc: list real subcommands up-front
worktree: define subcommand -h in terms of command -h
doc txt & -h consistency: make "worktree" consistent
tests: start asserting that *.txt SYNOPSIS matches -h output
tests: assert consistent whitespace in -h output
fsmonitor OSX: compile with DC_SHA1=YesPlease
merge: remove always-the-same "verbose" arguments
hook tests: fix redirection logic error in 96e7225b310
submodule tests: reset "trace.out" between "grep" invocations
run-command tests: test stdout of run_command_parallel()
Makefile + shared.mak: rename and indent $(QUIET_SPATCH_T)
cocci rules: remove unused "F" metavariable from pending rule
Makefile: add ability to TAB-complete cocci *.patch rules
Makefile: have "coccicheck" re-run if flags change
Makefile: split off SPATCH_BATCH_SIZE comment from "cocci" heading
cocci: split off include-less "tests" from SPATCH_FLAGS
cocci: split off "--all-includes" from SPATCH_FLAGS
cocci: make "coccicheck" rule incremental
cocci: optimistically use COMPUTE_HEADER_DEPENDENCIES
Makefile: copy contrib/coccinelle/*.cocci to build/
cocci rules: remove <id>'s from rules that don't need them
cocci: run against a generated ALL.cocci
spatchcache: add a ccache-alike for "spatch"
Makefile: always (re)set DC_SHA1 on fallback
INSTALL: remove discussion of SHA-1 backends
Makefile: correct DC_SHA1 documentation
Makefile: create and use sections for "define" flag listing
Makefile: rephrase the discussion of *_SHA1 knobs
Makefile: document default SHA-256 backend
Makefile: document SHA-1 and SHA-256 default and selection order
Makefile & test-tool: replace "DC_SHA1" variable with a "define"
Makefile: document default SHA-1 backend on OSX
Makefile: discuss SHAttered in *_SHA{1,256} discussion
submodule--helper: move "config" to a test-tool
submodule tests: add tests for top-level flag output
submodule--helper: fix a memory leak in "status"
submodule tests: test for a "foreach" blind-spot
submodule.c: refactor recursive block out of absorb function
submodule API & "absorbgitdirs": remove "----recursive" option
submodule--helper: remove --prefix from "absorbgitdirs"
submodule--helper: drop "update --prefix <pfx>" for "-C <pfx> update"
submodule--helper: use OPT_SUBCOMMAND() API
revisions API: extend the nascent REV_INFO_INIT macro
t7610: fix flaky timeout issue, don't clone from example.com
Makefile: don't create a ".build/.build/" for cocci, fix output
maintenance --unregister: fix uninit'd data use & -Wdeclaration-after-statement
t7610: use "file:///dev/null", not "/dev/null", fixes MinGW
cache.h: remove unused "the_index" compat macros
builtin/{grep,log}.: don't define "USE_THE_INDEX_COMPATIBILITY_MACROS"
cocci & cache.h: remove rarely used "the_index" compat macros
read-cache API & users: make discard_index() return void
cocci: add a index-compatibility.pending.cocci
cocci & cache.h: apply a selection of "pending" index-compatibility
cocci & cache.h: apply variable section of "pending" index-compatibility
cocci: apply "pending" index-compatibility to "t/helper/*.c"
{builtin/*,repository}.c: add & use "USE_THE_INDEX_VARIABLE"
cache.h & test-tool.h: add & use "USE_THE_INDEX_VARIABLE"
cocci: apply "pending" index-compatibility to some "builtin/*.c"
parse_object(): simplify blob conditional
trace2 tests: guard pthread test with "PTHREAD"
Makefiles: change search through $(MAKEFLAGS) for GNU make 4.4
cocci: avoid "should ... be a metavariable" warnings
CI: upgrade to macos-12, and pin OSX version
CI: don't explicitly pick "bash" shell outside of Windows, fix regression
CI: migrate away from deprecated "set-output" syntax
Đoàn Trần Công Danh (8):
CodingGuidelines: allow grep -E
t: remove \{m,n\} from BRE grep usage
t: convert egrep usage to "grep -E"
t: convert fgrep usage to "grep -F"
Makefile: clarify runtime relative gitexecdir
bisect--helper: remove unused options
bisect--helper: move all subcommands into their own functions
bisect--helper: parse subcommand with OPT_SUBCOMMAND
^ permalink raw reply [relevance 3%]
* [ANNOUNCE] Git v2.39.0-rc2
@ 2022-12-06 4:00 3% Junio C Hamano
0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2022-12-06 4:00 UTC (permalink / raw)
To: git; +Cc: Linux Kernel, git-packagers
A release candidate Git v2.39.0-rc2 is now available for testing at
the usual places. It is comprised of 463 non-merge commits since
v2.38.0, contributed by 74 people, 30 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.39.0-rc2' tag and the 'master' branch that the tag points at:
url = https://git.kernel.org/pub/scm/git/git
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.38.0 are as follows.
Welcome to the Git development community!
Alexander Kanavin, Alexander Meshcheryakov, Andreas Hasenack,
Anh Le, Arthur Chan, Daniel Sonbolian, Debra Obondo, Diomidis
Spinellis, Erik Cervin Edin, Hank Leininger, herr.kaste, John
A. Leuenhagen, Julia Ramer, Kevin Backhouse, Kousik Sanagavarapu,
Lukáš Doktor, Martin Englund, M Hickford, Michael V. Scovetta,
Noah Betzen, Nsengiyumva Wilberforce, orygaw, Ronan Pigott,
Rubén Justo, Sotir Danailov, srz_zumix, Stefano Rivera, Tim
Jaacks, Vincent Bernat, and Vlad-Stefan Harbuz.
Returning contributors who helped this release are as follows.
Thanks for your continued support.
Ævar Arnfjörð Bjarmason, Alejandro R. Sedeño, Alex Henrie, Derrick
Stolee, Đoàn Trần Công Danh, Elijah Newren, Emily Shaffer, Eric
DeCosta, Eric Sunshine, Eric Wong, Glen Choo, Han-Wen Nienhuys,
Jan Pokorný, Jean-Noël Avila, Jeff Hostetler, Jeff King, Jerry
Zhang, Jiang Xin, Johannes Altmanninger, Johannes Schindelin, John
Cai, Jonathan Tan, Julien Moutinho, Junio C Hamano, Kyle Meyer,
Martin Ågren, Martin von Zweigbergk, Matthew John Cheetham,
Michael J Gruber, Michael McClimon, Patrick Steinhardt, Paul
Smith, Philip Oakley, Philippe Blain, Phillip Wood, Randall
S. Becker, René Scharfe, Sergey Organov, Shaoxuan Yuan, SZEDER
Gábor, Taylor Blau, Torsten Bögershausen, and Victoria Dye.
[*] We are counting not just the authorship contribution but issue
reporting, mentoring, helping and reviewing that are recorded in
the commit trailers.
----------------------------------------------------------------
Git v2.39 Release Notes (draft)
===============================
UI, Workflows & Features
------------------------
* "git grep" learned to expand the sparse-index more lazily and on
demand in a sparse checkout.
* By default, use of fsmonitor on a repository on networked
filesystem is disabled. Add knobs to make it workable on macOS.
* After checking out a "branch" that is a symbolic-ref that points at
another branch, "git symbolic-ref HEAD" reports the underlying
branch, not the symbolic-ref the user gave checkout as argument.
The command learned the "--no-recurse" option to stop after
dereferencing a symbolic-ref only once.
* "git branch --edit-description @{-1}" is now a way to edit branch
description of the branch you were on before switching to the
current branch.
* "git merge-tree --stdin" is a new way to request a series of merges
and report the merge results.
* "git shortlog" learned to group by the "format" string.
* A new "--include-whitespace" option is added to "git patch-id", and
existing bugs in the internal patch-id logic that did not match
what "git patch-id" produces have been corrected.
* Enable gc.cruftpacks by default for those who opt into
feature.experimental setting.
* "git repack" learns to send cruft objects out of the way into
packfiles outside the repository.
* 'scalar reconfigure -a' is taught to automatically remove
scalar.repo entires which no longer exist.
* Redact headers from cURL's h2h3 module in GIT_CURL_VERBOSE and
others.
* 'git maintenance register' is taught to write configuration to an
arbitrary path, and 'git for-each-repo' is taught to expand tilde
characters in paths.
* When creating new notes, the template used to get a stray empty
newline, which has been removed.
* "git receive-pack" used to use all the local refs as the boundary for
checking connectivity of the data "git push" sent, but now it uses
only the refs that it advertised to the pusher. In a repository with
the .hideRefs configuration, this reduces the resources needed to
perform the check.
* With '--recurse-submodules=on-demand', all submodules are
recursively pushed.
Performance, Internal Implementation, Development Support etc.
--------------------------------------------------------------
* With a bit of header twiddling, use the native regexp library on
macOS instead of the compat/ one.
* Prepare for GNU [ef]grep that throw warning of their uses.
* Sources related to fuzz testing have been moved down to their own
directory.
* Most credential helpers ignored unknown entries in a credential
description, but a few died upon seeing them. The latter were
taught to ignore them, too
* "scalar unregister" in a repository that is already been
unregistered reported an error.
* Remove error detection from a function that fetches from promisor
remotes, and make it die when such a fetch fails to bring all the
requested objects, to give an early failure to various operations.
* Update CodingGuidelines to clarify what features to use and avoid
in C99.
* Avoid false-positive from LSan whose assumption may be broken with
higher optimization levels.
* Enable address and undefined sanitizer tasks at GitHub Actions CI.
* More UNUSED annotation to help using -Wunused option with the
compiler.
(merge 4b992f0a24 jk/unused-anno-more later to maint).
* Rewrite a deep recursion in the skipping negotiator to use a loop
with on-heap prio queue to avoid stack wastage.
* Add documentation for message IDs in fsck error messages.
* Define the logical elements of a "bundle list", data structure to
store them in-core, format to transfer them, and code to parse
them.
* The role the security mailing list plays in an embargoed release
has been documented.
* Two new facilities, "timer" and "counter", are introduced to the
trace2 API.
* Code simplification by using strvec_pushf() instead of building an
argument in a separate strbuf.
* Make sure generated dependency file is stably sorted to help
developers debugging their build issues.
* The glossary entries for "commit-graph file" and "reachability
bitmap" have been added.
* Various tests exercising the transfer.credentialsInUrl
configuration are taught to avoid making requests which require
resolving localhost to reduce CI-flakiness.
* A redundant diagnostic message is dropped from test_path_is_missing().
* Simplify the run-command API.
* Update the actions/github-script dependency in CI to avoid a
deprecation warning.
* Progress on being able to initialize a rev_info struct with a
macro.
* Add trace2 counters to the region to clear skip worktree bits in a
sparse checkout.
* Modernize test script to avoid "test -f" and friends.
* Avoid calling 'cache_tree_update()' when doing so would be
redundant.
* Update the credential-cache documentation to provide a more
realistic example.
* Makefile comments updates and reordering to clarify knobs used to
choose SHA implementations.
* A design document for sparse-checkout's future directions has been
added.
* Teach chainlint.pl to annotate the original test definition instead
of the token stream.
* "make coccicheck" is time consuming. It has been made to run more
incrementally.
* `parse_object()` has been hardened to check for the existence of a
suspected blob object.
* The build procedure has been adjusted to GNUmake version 4.4, which
made some changes to how pattern rule with multiple targets are
handled.
Fixes since v2.38
-----------------
* The codepath that reads from the index v4 had unaligned memory
accesses, which has been corrected.
* Fix messages incorrectly marked for translation.
* "git fsck" failed to release contents of tree objects already used
from the memory, which has been fixed.
* "git clone" did not like to see the "--bare" and the "--origin"
options used together without a good reason.
* "git remote rename" failed to rename a remote without fetch
refspec, which has been corrected.
* Documentation on various Boolean GIT_* environment variables have
been clarified.
* "git rebase -i" can mistakenly attempt to apply a fixup to a commit
itself, which has been corrected.
* "git multi-pack-index repack/expire" used to repack unreachable
cruft into a new pack, which have been corrected.
* In read-only repositories, "git merge-tree" tried to come up with a
merge result tree object, which it failed (which is not wrong) and
led to a segfault (which is bad), which has been corrected.
* Force C locale while running tests around httpd to make sure we can
find expected error messages in the log.
* Fix a logic in "mailinfo -b" that miscomputed the length of a
substring, which lead to an out-of-bounds access.
* The codepath to sign learned to report errors when it fails to read
from "ssh-keygen".
* Code clean-up that results in plugging a leak.
* "GIT_EDITOR=: git branch --edit-description" resulted in failure,
which has been corrected.
* The code to clean temporary object directories (used for
quarantine) tried to remove them inside its signal handler, which
was a no-no.
* Update comment in the Makefile about the RUNTIME_PREFIX config knob.
* Clarify that "the sentence after <area>: prefix does not begin with
a capital letter" rule applies only to the commit title.
* "git branch --edit-description" on an unborh branch misleadingly
said that no such branch exists, which has been corrected.
* Work around older clang that warns against C99 zero initialization
syntax for struct.
* Giving "--invert-grep" and "--all-match" without "--grep" to the
"git log" command resulted in an attempt to access grep pattern
expression structure that has not been allocated, which has been
corrected.
(merge db84376f98 ab/grep-simplify-extended-expression later to maint).
* "git diff rev^!" did not show combined diff to go to the rev from
its parents.
(merge a79c6b6081 rs/diff-caret-bang-with-parents later to maint).
* Allow configuration files in "protected" scopes to include other
configuration files.
(merge ecec57b3c9 gc/bare-repo-discovery later to maint).
* Give a bit more diversity to macOS CI by using sha1dc in one of the
jobs (the other one tests Apple Common Crypto).
(merge 1ad5c3df35 jc/ci-osx-with-sha1dc later to maint).
* A bugfix with tracing support in midx codepath
(merge e9c3839944 tb/midx-bitmap-selection-fix later to maint).
* When geometric repacking feature is in use together with the
--pack-kept-objects option, we lost packs marked with .keep files.
(merge 197443e80a tb/save-keep-pack-during-geometric-repack later to maint).
* Move a global variable added as a hack during regression fixes to
its proper place in the API.
(merge 0b0ab95f17 ab/run-hook-api-cleanup later to maint).
* Update to build procedure with VS using CMake/CTest.
(merge c858750b41 js/cmake-updates later to maint).
* The short-help text shown by "git cmd -h" and the synopsis text
shown at the beginning of "git help cmd" have been made more
consistent.
* When creating a multi-pack bitmap, remove per-pack bitmap files
unconditionally as they will never be consulted.
(merge 55d902cd61 tb/remove-unused-pack-bitmap later to maint).
* Fix a longstanding syntax error in Git.pm error codepath.
* "git diff --stat" etc. were invented back when everything was ASCII
and strlen() was a way to measure the display width of a string;
adjust them to compute the display width assuming UTF-8 pathnames.
(merge ce8529b2bb tb/diffstat-with-utf8-strwidth later to maint).
* "git branch --edit-description" can exit with status -1 which is
not a good practice; it learned to use 1 as everybody else instead.
* "git apply" limits its input to a bit less than 1 GiB.
* Merging a branch with directory renames into a branch that changes
the directory to a symlink was mishandled by the ort merge
strategy, which has been corrected.
* A bugfix to "git subtree" in its split and merge features.
* Fix some bugs in the reflog messages when rebasing and changes the
reflog messages of "rebase --apply" to match "rebase --merge" with
the aim of making the reflog easier to parse.
* "git rebase --keep-base" used to discard the commits that are
already cherry-picked to the upstream, even when "keep-base" meant
that the base, on top of which the history is being rebuilt, does
not yet include these cherry-picked commits. The --keep-base
option now implies --reapply-cherry-picks and --no-fork-point
options.
* The way "git repack" creared temporary files when it received a
signal was prone to deadlocking, which has been corrected.
* Various tests exercising the transfer.credentialsInUrl
configuration are taught to avoid making requests which require
resolving localhost to reduce CI-flakiness.
* The adjust_shared_perm() helper function learned to refrain from
setting the "g+s" bit on directories when it is not necessary.
* "git archive" mistakenly complained twice about a missing
executable, which has been corrected.
* Fix a bug where `git branch -d` did not work on an orphaned HEAD.
* `git rebase --update-refs` would delete references when all
`update-ref` commands in the sequencer were removed, which has been
corrected.
* Fix a regression in the bisect-helper which mistakenly treats
arguments to the command given to 'git bisect run' as arguments to
the helper.
* Correct an error where `git rebase` would mistakenly use a branch or
tag named "refs/rewritten/xyz" when missing a rebase label.
* Assorted fixes of parsing end-user input as integers.
(merge 14770cf0de pw/config-int-parse-fixes later to maint).
* "git prune" may try to iterate over .git/objects/pack for trash
files to remove in it, and loudly fail when the directory is
missing, which is not necessary. The command has been taught to
ignore such a failure.
(merge 6974765352 ew/prune-with-missing-objects-pack later to maint).
* Add one more candidate directory that may house httpd modules while
running tests.
(merge 1c7dc23d41 es/locate-httpd-module-location-in-test later to maint).
* A handful of leaks in the line-log machinery have been plugged.
* The format of a line in /proc/cpuinfo that describes a CPU on s390x
looked different from everybody else, and the code in chainlint.pl
failed to parse it.
(merge 1f51b77f4f ah/chainlint-cpuinfo-parse-fix later to maint).
* Adjust the GitHub CI to newer ubuntu release.
(merge 0d3507f3e7 jx/ci-ubuntu-fix later to maint).
* Other code cleanup, docfix, build fix, etc.
(merge 413bc6d20a ds/cmd-main-reorder later to maint).
(merge 8d2863e4ed nw/t1002-cleanup later to maint).
(merge 7c2dc122f9 rs/list-objects-filter-leakfix later to maint).
(merge 288fcb1c94 zk/push-use-bitmaps later to maint).
(merge 42db324c0f km/merge-recursive-typofix later to maint).
----------------------------------------------------------------
Changes since v2.38.0 are as follows:
Alejandro R. Sedeño (1):
git-compat-util.h: GCC deprecated message arg only in GCC 4.5+
Alex Henrie (2):
fsmonitor--daemon: don't translate literal commands
push: improve grammar of branch.autoSetupMerge advice
Andreas Hasenack (1):
chainlint.pl: fix /proc/cpuinfo regexp
Anh Le (2):
index: add trace2 region for clear skip worktree
index: raise a bug if the index is materialised more than once
Arthur Chan (1):
fuzz: reorganise the path for existing oss-fuzz fuzzers
Daniel Sonbolian (1):
git.c: improve code readability in cmd_main()
Debra Obondo (1):
t7001-mv.sh: modernizing test script using functions
Derrick Stolee (15):
maintenance: add 'unregister --force'
scalar: make 'unregister' idempotent
gc: replace config subprocesses with API calls
string-list: document iterator behavior on NULL input
bundle-uri: fix technical doc issues
bundle-uri: use plain string in find_temp_filename()
bundle-uri: create bundle_list struct and helpers
bundle-uri: create base key-value pair parsing
bundle-uri: parse bundle list in config format
bundle-uri: limit recursion depth for bundle lists
bundle: properly clear all revision flags
bundle-uri: fetch a list of bundles
bundle: add flags to verify_bundle()
bundle-uri: quiet failed unbundlings
bundle-uri: suppress stderr from remote-https
Diomidis Spinellis (1):
grep: fix multibyte regex handling under macOS
Elijah Newren (4):
merge-ort: fix bug with dir rename vs change dir to symlink
merge-tree: update documentation for differences in -z output
merge-tree: support multiple batched merges with --stdin
sparse-checkout.txt: new document with sparse-checkout directions
Emily Shaffer (2):
gc: add tests for --cruft and friends
config: let feature.experimental imply gc.cruftPacks=true
Eric DeCosta (6):
fsmonitor: refactor filesystem checks to common interface
fsmonitor: relocate socket file if .git directory is remote
fsmonitor: avoid socket location check if using hook
fsmonitor: deal with synthetic firmlinks on macOS
fsmonitor: check for compatability before communicating with fsmonitor
fsmonitor: add documentation for allowRemote and socketDir options
Eric Sunshine (9):
check-non-portable-shell: detect obsolescent egrep/fgrep
chainlint: add explanatory comments
chainlint: tighten accuracy when consuming input stream
chainlint: latch start/end position of each token
chainlint: annotate original test definition rather than token stream
chainlint: sidestep impoverished macOS "terminfo"
chainlint: latch line numbers at which each token starts and ends
chainlint: prefix annotated test definition with line numbers
lib-httpd: extend module location auto-detection
Eric Wong (2):
delta-islands: free island-related data after use
prune: quiet ENOENT on missing directories
Glen Choo (3):
config: respect includes in protected config
http: redact curl h2h3 headers in info
object-file: use real paths when adding alternates
Han-Wen Nienhuys (1):
refs: unify parse_worktree_ref() and ref_type()
Jean-Noël Avila (1):
i18n: fix command template placeholder format
Jeff Hostetler (9):
config.mak.dev: disable suggest braces error on old clang versions
trace2: use size_t alloc,nr_open_regions in tr2tls_thread_ctx
tr2tls: clarify TLS terminology
api-trace2.txt: elminate section describing the public trace2 API
trace2: rename the thread_name argument to trace2_thread_start
trace2: improve thread-name documentation in the thread-context
trace2: convert ctx.thread_name from strbuf to pointer
trace2: add stopwatch timers
trace2: add global counter mechanism
Jeff King (43):
fsck: free tree buffers after walking unreachable objects
fsck: turn off save_commit_buffer
parse_object_buffer(): respect save_commit_buffer
clone: allow "--bare" with "-o"
remote: handle rename of remote without fetch refspec
shell: add basic tests
shell: limit size of interactive commands
sequencer: detect author name errors in read_author_script()
test-submodule: inline resolve_relative_url() function
multi-pack-index: avoid writing to global in option callback
commit: avoid writing to global in option callback
attr: drop DEBUG_ATTR code
dir: use fspathncmp() in pl_hashmap_cmp()
fsmonitor: fix leak of warning message
diffstat_consume(): assert non-zero length
submodule--helper: drop unused argc from module_list_compute()
update-index: drop unused argc from do_reupdate()
mark unused parameters in trivial compat functions
object-file: mark unused parameters in hash_unknown functions
string-list: mark unused callback parameters
date: mark unused parameters in handler functions
apply: mark unused parameters in handlers
apply: mark unused parameters in noop error/warning routine
convert: mark unused parameter in null stream filter
diffcore-pickaxe: mark unused parameters in pickaxe functions
ll-merge: mark unused parameters in callbacks
Makefile: force -O0 when compiling with SANITIZE=leak
repack: convert "names" util bitfield to array
repack: populate extension bits incrementally
repack: expand error message for missing pack files
repack: use tempfiles for signal cleanup
repack: drop remove_temporary_files()
Git.pm: trust rev-parse to find bare repositories
t7700: annotate cruft-pack failure with ok=sigpipe
shortlog: accept `--date`-related options
Makefile: force -O0 when compiling with SANITIZE=leak
t5516: move plaintext-password tests from t5601 and t5516
ref-filter: fix parsing of signatures without blank lines
ref-filter: fix parsing of signatures with CRLF and no body
branch: gracefully handle '-d' on orphan HEAD
t: run t5551 tests with both HTTP and HTTP/2
parse_object(): drop extra "has" check before checking object type
parse_object(): check on-disk type of suspected blob
Jerry Zhang (6):
patch-id: fix stable patch id for binary / header-only
patch-id: use stable patch-id for rebases
builtin: patch-id: fix patch-id with binary diffs
patch-id: fix patch-id for mode changes
builtin: patch-id: add --verbatim as a command mode
builtin: patch-id: remove unused diff-tree prefix
Jiang Xin (5):
t5516: fail to run in verbose mode
github-actions: run gcc-8 on ubuntu-20.04 image
ci: remove the pipe after "p4 -V" to catch errors
ci: use the same version of p4 on both Linux and macOS
ci: install python on ubuntu
Johannes Altmanninger (1):
sequencer: avoid dropping fixup commit that targets self via commit-ish
Johannes Schindelin (11):
merge-ort: fix segmentation fault in read-only repositories
merge-ort: return early when failing to write a blob
cmake: make it easier to diagnose regressions in CTest runs
cmake: copy the merge tools for testing
add -p: avoid ambiguous signed/unsigned comparison
cmake: avoid editing t/test-lib.sh
cmake: increase time-out for a long-running test
t5516/t5601: be less strict about the number of credential warnings
scalar reconfigure -a: remove stale `scalar.repo` entries
ci: use a newer `github-script` version
tests(scalar): tighten the stale `scalar.repo` test some
John Cai (3):
tmp-objdir: skip clean up when handling a signal
fsck: remove the unused BAD_TAG_OBJECT
fsck: document msg-id
Jonathan Tan (4):
promisor-remote: remove a return value
promisor-remote: die upon failing fetch
negotiator/skipping: avoid stack overflow
Doc: document push.recurseSubmodules=only
Julia Ramer (1):
embargoed releases: also describe the git-security list and the process
Junio C Hamano (30):
environ: document GIT_SSL_NO_VERIFY
environ: explain Boolean environment variables
environ: GIT_FLUSH should be made a usual Boolean
environ: simplify description of GIT_INDEX_FILE
environ: GIT_INDEX_VERSION affects not just a new repository
branch: do not fail a no-op --edit-desc
SubmittingPatches: use usual capitalization in the log message body
Start 2.39 cycle
symbolic-ref: teach "--[no-]recurse" option
The (real) first batch for 2.39
The second batch
The third batch
The fourth batch
ci: add address and undefined sanitizer tasks
ci: use DC_SHA1=YesPlease on osx-clang job for CI
The fifth batch
diff: leave NEEDWORK notes in show_stats() function
fsck: remove the unused MISSING_TREE_OBJECT
Documentation: add lint-fsck-msgids
Downmerge a handful of topics for 2.38.2
The sixth batch
Downmerge a bit more for 2.38.2
The seventh batch
The eighth batch
adjust_shared_perm(): leave g+s alone when the group does not matter
Git 2.39-rc0
Another batch before -rc1
A bit more before -rc1
Git 2.39-rc1
Git 2.39-rc2
Kevin Backhouse (1):
alias.c: reject too-long cmdline strings in split_cmdline()
Kousik Sanagavarapu (1):
repository-version.txt: partialClone casing change
Kyle Meyer (1):
merge-recursive: fix variable typo in error message
M Hickford (4):
Documentation/gitcredentials.txt: mention password alternatives
Documentation: increase example cache timeout to 1 hour
docs: clarify that credential discards unrecognised attributes
Docs: describe how a credential-generating helper works
Martin Ågren (1):
test-lib-functions: drop redundant diagnostic print
Matthew John Cheetham (3):
wincred: ignore unknown lines (do not die)
netrc: ignore unknown lines (do not die)
osxkeychain: clarify that we ignore unknown lines
Michael J Gruber (1):
notes: avoid empty line in template
Michael McClimon (1):
Git.pm: add semicolon after catch statement
Noah Betzen (1):
mergetool.txt: typofix 'overwriten' -> 'overwritten'
Nsengiyumva Wilberforce (1):
t1002: modernize outdated conditional
Patrick Steinhardt (7):
refs: fix memory leak when parsing hideRefs config
refs: get rid of global list of hidden refs
revision: move together exclusion-related functions
revision: introduce struct to handle exclusions
revision: add new parameter to exclude hidden refs
rev-parse: add `--exclude-hidden=` option
receive-pack: only use visible refs for connectivity check
Paul Smith (1):
Makefile: avoid multiple patterns when recipes generate one file
Philip Oakley (4):
doc: use "commit-graph" hyphenation consistently
doc: use 'object database' not ODB or abbreviation
glossary: add "commit graph" description
glossary: add reachability bitmap description
Philippe Blain (9):
test-lib-functions: mark 'test_commit' variables as 'local'
subtree: use 'git rev-parse --verify [--quiet]' for better error messages
subtree: add 'die_incompatible_opt' function to reduce duplication
subtree: prefix die messages with 'fatal'
subtree: define a variable before its first use in 'find_latest_squash'
subtree: use named variables instead of "$@" in cmd_pull
subtree: process 'git-subtree-split' trailer in separate function
subtree: fix squash merging after annotated tag was squashed merged
subtree: fix split after annotated tag was squashed merged
Phillip Wood (26):
mailinfo -b: fix an out of bounds access
ssh signing: return an error when signature cannot be read
t3435: remove redundant test case
t3416: tighten two tests
t3416: set $EDITOR in subshell
rebase: be stricter when reading state files containing oids
rebase: store orig_head as a commit
rebase: rename merge_base to branch_base
rebase: factor out branch_base calculation
rebase --keep-base: imply --reapply-cherry-picks
rebase --keep-base: imply --no-fork-point
rebase --apply: remove duplicated code
t3406: rework rebase reflog tests
rebase --merge: fix reflog when continuing
rebase --merge: fix reflog message after skipping
rebase --apply: respect GIT_REFLOG_ACTION
rebase --apply: make reflog messages match rebase --merge
rebase --abort: improve reflog message
rebase: cleanup action handling
sequencer: stop exporting GIT_REFLOG_ACTION
rebase: stop exporting GIT_REFLOG_ACTION
git_parse_unsigned: reject negative values
config: require at least one digit when parsing numbers
git_parse_signed(): avoid integer overflow
sequencer: unify label lookup
sequencer: tighten label lookups
René Scharfe (21):
revision: use strtol_i() for exclude_parent
revisions.txt: unspecify order of resolved parts of ^!
diff: support ^! for merges
gc: simplify maintenance_task_pack_refs()
t/lib-httpd: pass LANG and LC_ALL to Apache
bisect--helper: plug strvec leak
archive: deduplicate verbose printing
submodule: use strvec_pushf() for --super-prefix
run-command: fix return value comment
am: simplify building "show" argument list
bisect: simplify building "checkout" argument list
bisect--helper: factor out do_bisect_run()
sequencer: simplify building argument list in do_exec()
use child_process member "args" instead of string array variable
use child_process members "args" and "env" directly
replace and remove run_command_v_opt_cd_env()
replace and remove run_command_v_opt_tr2()
replace and remove run_command_v_opt_cd_env_tr2()
replace and remove run_command_v_opt()
archive-tar: report filter start error only once
list-objects-filter: plug combine_filter_data leak
Ronan Pigott (2):
for-each-repo: interpolate repo path arguments
maintenance: add option to register in a specific config
Rubén Justo (5):
ref-filter.c: fix a leak in get_head_description
branch: description for non-existent branch errors
branch: support for shortcuts like @{-1}, completed
branch: error copying or renaming a detached HEAD
branch: error code with --edit-description
SZEDER Gábor (4):
Documentation/build-docdep.perl: generate sorted output
line-log: free diff queue when processing non-merge commits
line-log: free the diff queues' arrays when processing merge commits
diff.c: use diff_free_queue()
Sergey Organov (3):
diff-merges: cleanup func_by_opt()
diff-merges: cleanup set_diff_merges()
diff-merges: clarify log.diffMerges documentation
Shaoxuan Yuan (1):
builtin/grep.c: integrate with sparse index
Sotir Danailov (1):
docs: git-send-email: difference between ssl and tls smtp-encryption
Taylor Blau (64):
Documentation/git-multi-pack-index.txt: fix typo
Documentation/git-multi-pack-index.txt: clarify expire behavior
midx.c: prevent `expire` from removing the cruft pack
midx.c: avoid cruft packs with `repack --batch-size=0`
midx.c: replace `xcalloc()` with `CALLOC_ARRAY()`
midx.c: remove unnecessary loop condition
midx.c: avoid cruft packs with non-zero `repack --batch-size`
builtin/clone.c: disallow `--local` clones with symlinks
t/lib-submodule-update.sh: allow local submodules
t/t1NNN: allow local submodules
t/2NNNN: allow local submodules
t/t3NNN: allow local submodules
t/t4NNN: allow local submodules
t/t5NNN: allow local submodules
t/t6NNN: allow local submodules
t/t7NNN: allow local submodules
t/t9NNN: allow local submodules
transport: make `protocol.file.allow` be "user" by default
t1092: prepare for changing protocol.file.allow
t2080: prepare for changing protocol.file.allow
t1092: prepare for changing protocol.file.allow
t2080: prepare for changing protocol.file.allow
t3207: prepare for changing protocol.file.allow
t5516: prepare for changing protocol.file.allow
t5537: prepare for changing protocol.file.allow
t7814: prepare for changing protocol.file.allow
t3206: prepare for changing protocol.file.allow
t5537: prepare for changing protocol.file.allow
Git 2.30.6
Git 2.31.5
Git 2.32.4
Git 2.33.5
Git 2.34.5
Git 2.35.5
Git 2.36.3
t7527: prepare for changing protocol.file.allow
Git 2.37.4
Git 2.38.1
midx.c: fix whitespace typo
midx.c: consider annotated tags during bitmap selection
midx.c: instrument MIDX and bitmap generation with trace2 regions
pack-bitmap-write.c: instrument number of reused bitmaps
builtin/repack.c: remove redundant pack-based bitmaps
repack: don't remove .keep packs with `--pack-kept-objects`
builtin/repack.c: pass "out" to `prepare_pack_objects`
builtin/repack.c: pass "cruft_expiration" to `write_cruft_pack`
builtin/repack.c: write cruft packs to arbitrary locations
builtin/repack.c: implement `--expire-to` for storing pruned objects
shortlog: make trailer insertion a noop when appropriate
shortlog: extract `--group` fragment for translation
shortlog: support arbitrary commit format `--group`s
shortlog: extract `shortlog_finish_setup()`
shortlog: implement `--group=author` in terms of `--group=<format>`
shortlog: implement `--group=committer` in terms of `--group=<format>`
apply: reject patches larger than ~1 GiB
Documentation/howto/maintain-git.txt: fix Meta/redo-jch.sh invocation
The ninth batch
Documentation: build redo-jch.sh from master..jch
Documentation: build redo-seen.sh from jch..seen
The tenth batch
The eleventh batch
The twelfth batch
builtin/gc.c: fix use-after-free in maintenance_unregister()
The thirteenth batch
Torsten Bögershausen (1):
diff.c: use utf8_strwidth() to count display width
Victoria Dye (7):
read-cache: avoid misaligned reads in index v4
rebase --update-refs: avoid unintended ref deletion
cache-tree: add perf test comparing update and prime
unpack-trees: add 'skip_cache_tree_update' option
reset: use 'skip_cache_tree_update' option
read-tree: use 'skip_cache_tree_update' option
rebase: use 'skip_cache_tree_update' option
Vincent Bernat (1):
ls-files: fix --ignored and --killed flags in synopsis
Vlad-Stefan Harbuz (1):
Documentation: fix typo
srz_zumix (1):
fsmonitor--daemon: on macOS support symlink
Ævar Arnfjörð Bjarmason (115):
test-lib: have SANITIZE=leak imply TEST_NO_MALLOC_CHECK
CodingGuidelines: update for C99
CodingGuidelines: mention dynamic C99 initializer elements
CodingGuidelines: allow declaring variables in for loops
CodingGuidelines: mention C99 features we can't use
grep.c: remove "extended" in favor of "pattern_expression", fix segfault
CodingGuidelines: recommend against unportable C99 struct syntax
bundle-uri: create "key=value" line parsing
bundle-uri: unit test "key=value" parsing
run-command test helper: use "else if" pattern
run-command API: have "run_processes_parallel{,_tr2}()" return void
run-command tests: use "return", not "exit"
run-command API: make "n" parameter a "size_t"
run-command API: don't fall back on online_cpus()
run-command.c: use designated init for pp_init(), add "const"
run-command API: have run_process_parallel() take an "opts" struct
run-command API: move *_tr2() users to "run_processes_parallel()"
run-command.c: make "struct parallel_processes" const if possible
run-command.c: don't copy *_fn to "struct parallel_processes"
run-command.c: don't copy "ungroup" to "struct parallel_processes"
run-command.c: don't copy "data" to "struct parallel_processes"
run-command.c: use "opts->processes", not "pp->max_processes"
run-command.c: pass "opts" further down, and use "opts->processes"
run-command.c: remove "max_processes", add "const" to signal() handler
tests: assert *.txt SYNOPSIS and -h output
CodingGuidelines: update and clarify command-line conventions
builtin/bundle.c: indent with tabs
bundle: define subcommand -h in terms of command -h
doc SYNOPSIS: don't use ' for subcommands
doc SYNOPSIS: consistently use ' for commands
built-ins: consistently add "\n" between "usage" and options
doc txt & -h consistency: word-wrap
doc txt & -h consistency: fix incorrect alternates syntax
doc txt & -h consistency: add "-z" to cat-file "-h"
doc txt & -h consistency: balance unbalanced "[" and "]"
doc txt & -h consistency: correct padding around "[]()"
stash doc SYNOPSIS & -h: correct padding around "[]()"
doc txt & -h consistency: use "<options>", not "<options>..."
doc SYNOPSIS & -h: use "-" to separate words in labels, not "_"
doc txt & -h consistency: fix mismatching labels
doc txt & -h consistency: add or fix optional "--" syntax
doc txt & -h consistency: make output order consistent
doc txt & -h consistency: add missing options and labels
doc txt & -h consistency: make "rerere" consistent
doc txt & -h consistency: make "read-tree" consistent
doc txt & -h consistency: make "bundle" consistent
doc txt & -h consistency: use "git foo" form, not "git-foo"
doc txt & -h consistency: add missing options
doc txt & -h consistency: make "stash" consistent
doc txt & -h consistency: make "annotate" consistent
doc txt & -h consistency: use "[<label>...]" for "zero or more"
doc txt & -h consistency: make "diff-tree" consistent
doc txt & -h consistency: make "commit" consistent
reflog doc: list real subcommands up-front
worktree: define subcommand -h in terms of command -h
doc txt & -h consistency: make "worktree" consistent
tests: start asserting that *.txt SYNOPSIS matches -h output
tests: assert consistent whitespace in -h output
fsmonitor OSX: compile with DC_SHA1=YesPlease
merge: remove always-the-same "verbose" arguments
hook tests: fix redirection logic error in 96e7225b310
submodule tests: reset "trace.out" between "grep" invocations
run-command tests: test stdout of run_command_parallel()
Makefile + shared.mak: rename and indent $(QUIET_SPATCH_T)
cocci rules: remove unused "F" metavariable from pending rule
Makefile: add ability to TAB-complete cocci *.patch rules
Makefile: have "coccicheck" re-run if flags change
Makefile: split off SPATCH_BATCH_SIZE comment from "cocci" heading
cocci: split off include-less "tests" from SPATCH_FLAGS
cocci: split off "--all-includes" from SPATCH_FLAGS
cocci: make "coccicheck" rule incremental
cocci: optimistically use COMPUTE_HEADER_DEPENDENCIES
Makefile: copy contrib/coccinelle/*.cocci to build/
cocci rules: remove <id>'s from rules that don't need them
cocci: run against a generated ALL.cocci
spatchcache: add a ccache-alike for "spatch"
Makefile: always (re)set DC_SHA1 on fallback
INSTALL: remove discussion of SHA-1 backends
Makefile: correct DC_SHA1 documentation
Makefile: create and use sections for "define" flag listing
Makefile: rephrase the discussion of *_SHA1 knobs
Makefile: document default SHA-256 backend
Makefile: document SHA-1 and SHA-256 default and selection order
Makefile & test-tool: replace "DC_SHA1" variable with a "define"
Makefile: document default SHA-1 backend on OSX
Makefile: discuss SHAttered in *_SHA{1,256} discussion
submodule--helper: move "config" to a test-tool
submodule tests: add tests for top-level flag output
submodule--helper: fix a memory leak in "status"
submodule tests: test for a "foreach" blind-spot
submodule.c: refactor recursive block out of absorb function
submodule API & "absorbgitdirs": remove "----recursive" option
submodule--helper: remove --prefix from "absorbgitdirs"
submodule--helper: drop "update --prefix <pfx>" for "-C <pfx> update"
submodule--helper: use OPT_SUBCOMMAND() API
revisions API: extend the nascent REV_INFO_INIT macro
t7610: fix flaky timeout issue, don't clone from example.com
Makefile: don't create a ".build/.build/" for cocci, fix output
maintenance --unregister: fix uninit'd data use & -Wdeclaration-after-statement
t7610: use "file:///dev/null", not "/dev/null", fixes MinGW
cache.h: remove unused "the_index" compat macros
builtin/{grep,log}.: don't define "USE_THE_INDEX_COMPATIBILITY_MACROS"
cocci & cache.h: remove rarely used "the_index" compat macros
read-cache API & users: make discard_index() return void
cocci: add a index-compatibility.pending.cocci
cocci & cache.h: apply a selection of "pending" index-compatibility
cocci & cache.h: apply variable section of "pending" index-compatibility
cocci: apply "pending" index-compatibility to "t/helper/*.c"
{builtin/*,repository}.c: add & use "USE_THE_INDEX_VARIABLE"
cache.h & test-tool.h: add & use "USE_THE_INDEX_VARIABLE"
cocci: apply "pending" index-compatibility to some "builtin/*.c"
parse_object(): simplify blob conditional
trace2 tests: guard pthread test with "PTHREAD"
Makefiles: change search through $(MAKEFLAGS) for GNU make 4.4
cocci: avoid "should ... be a metavariable" warnings
Đoàn Trần Công Danh (8):
CodingGuidelines: allow grep -E
t: remove \{m,n\} from BRE grep usage
t: convert egrep usage to "grep -E"
t: convert fgrep usage to "grep -F"
Makefile: clarify runtime relative gitexecdir
bisect--helper: remove unused options
bisect--helper: move all subcommands into their own functions
bisect--helper: parse subcommand with OPT_SUBCOMMAND
^ permalink raw reply [relevance 3%]
* [ANNOUNCE] Git v2.39.0-rc1
@ 2022-11-30 6:12 3% Junio C Hamano
0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2022-11-30 6:12 UTC (permalink / raw)
To: git; +Cc: git-packagers
A release candidate Git v2.39.0-rc1 is now available for testing at
the usual places. It is comprised of 460 non-merge commits since
v2.38.0, contributed by 74 people, 30 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.39.0-rc1' tag and the 'master' branch that the tag points at:
url = https://git.kernel.org/pub/scm/git/git
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.38.0 are as follows.
Welcome to the Git development community!
Alexander Kanavin, Alexander Meshcheryakov, Andreas Hasenack,
Anh Le, Arthur Chan, Daniel Sonbolian, Debra Obondo, Diomidis
Spinellis, Erik Cervin Edin, Hank Leininger, herr.kaste, John
A. Leuenhagen, Julia Ramer, Kevin Backhouse, Kousik Sanagavarapu,
Lukáš Doktor, Martin Englund, M Hickford, Michael V. Scovetta,
Noah Betzen, Nsengiyumva Wilberforce, orygaw, Ronan Pigott,
Rubén Justo, Sotir Danailov, srz_zumix, Stefano Rivera, Tim
Jaacks, Vincent Bernat, and Vlad-Stefan Harbuz.
Returning contributors who helped this release are as follows.
Thanks for your continued support.
정재우, Ævar Arnfjörð Bjarmason, Alejandro R. Sedeño,
Alex Henrie, Derrick Stolee, Đoàn Trần Công Danh, Elijah
Newren, Emily Shaffer, Eric DeCosta, Eric Sunshine, Eric Wong,
Glen Choo, Han-Wen Nienhuys, Jan Pokorný, Jean-Noël Avila,
Jeff Hostetler, Jeff King, Jerry Zhang, Jiang Xin, Johannes
Altmanninger, Johannes Schindelin, John Cai, Jonathan Tan,
Julien Moutinho, Junio C Hamano, Kyle Meyer, Martin Ågren,
Martin von Zweigbergk, Matthew John Cheetham, Michael J Gruber,
Michael McClimon, Patrick Steinhardt, Paul Smith, Philip Oakley,
Philippe Blain, Phillip Wood, Randall S. Becker, René Scharfe,
Sergey Organov, Shaoxuan Yuan, SZEDER Gábor, Taylor Blau,
Torsten Bögershausen, and Victoria Dye.
[*] We are counting not just the authorship contribution but issue
reporting, mentoring, helping and reviewing that are recorded in
the commit trailers.
----------------------------------------------------------------
Git v2.39 Release Notes (draft)
===============================
UI, Workflows & Features
------------------------
* "git grep" learned to expand the sparse-index more lazily and on
demand in a sparse checkout.
* By default, use of fsmonitor on a repository on networked
filesystem is disabled. Add knobs to make it workable on macOS.
* After checking out a "branch" that is a symbolic-ref that points at
another branch, "git symbolic-ref HEAD" reports the underlying
branch, not the symbolic-ref the user gave checkout as argument.
The command learned the "--no-recurse" option to stop after
dereferencing a symbolic-ref only once.
* "git branch --edit-description @{-1}" is now a way to edit branch
description of the branch you were on before switching to the
current branch.
* "git merge-tree --stdin" is a new way to request a series of merges
and report the merge results.
* "git shortlog" learned to group by the "format" string.
* A new "--include-whitespace" option is added to "git patch-id", and
existing bugs in the internal patch-id logic that did not match
what "git patch-id" produces have been corrected.
* Enable gc.cruftpacks by default for those who opt into
feature.experimental setting.
* "git repack" learns to send cruft objects out of the way into
packfiles outside the repository.
* 'scalar reconfigure -a' is taught to automatically remove
scalar.repo entires which no longer exist.
* Redact headers from cURL's h2h3 module in GIT_CURL_VERBOSE and
others.
* 'git maintenance register' is taught to write configuration to an
arbitrary path, and 'git for-each-repo' is taught to expand tilde
characters in paths.
* When creating new notes, the template used to get a stray empty
newline, which has been removed.
* "git receive-pack" used to use all the local refs as the boundary for
checking connectivity of the data "git push" sent, but now it uses
only the refs that it advertised to the pusher. In a repository with
the .hideRefs configuration, this reduces the resources needed to
perform the check.
* With '--recurse-submodules=on-demand', all submodules are
recursively pushed.
Performance, Internal Implementation, Development Support etc.
--------------------------------------------------------------
* With a bit of header twiddling, use the native regexp library on
macOS instead of the compat/ one.
* Prepare for GNU [ef]grep that throw warning of their uses.
* Sources related to fuzz testing have been moved down to their own
directory.
* Most credential helpers ignored unknown entries in a credential
description, but a few died upon seeing them. The latter were
taught to ignore them, too
* "scalar unregister" in a repository that is already been
unregistered reported an error.
* Remove error detection from a function that fetches from promisor
remotes, and make it die when such a fetch fails to bring all the
requested objects, to give an early failure to various operations.
* Update CodingGuidelines to clarify what features to use and avoid
in C99.
* Avoid false-positive from LSan whose assumption may be broken with
higher optimization levels.
* Enable address and undefined sanitizer tasks at GitHub Actions CI.
* More UNUSED annotation to help using -Wunused option with the
compiler.
(merge 4b992f0a24 jk/unused-anno-more later to maint).
* Rewrite a deep recursion in the skipping negotiator to use a loop
with on-heap prio queue to avoid stack wastage.
* Add documentation for message IDs in fsck error messages.
* Define the logical elements of a "bundle list", data structure to
store them in-core, format to transfer them, and code to parse
them.
* The role the security mailing list plays in an embargoed release
has been documented.
* Two new facilities, "timer" and "counter", are introduced to the
trace2 API.
* Code simplification by using strvec_pushf() instead of building an
argument in a separate strbuf.
* Make sure generated dependency file is stably sorted to help
developers debugging their build issues.
* The glossary entries for "commit-graph file" and "reachability
bitmap" have been added.
* Various tests exercising the transfer.credentialsInUrl
configuration are taught to avoid making requests which require
resolving localhost to reduce CI-flakiness.
* A redundant diagnostic message is dropped from test_path_is_missing().
* Simplify the run-command API.
* Update the actions/github-script dependency in CI to avoid a
deprecation warning.
* Progress on being able to initialize a rev_info struct with a
macro.
* Add trace2 counters to the region to clear skip worktree bits in a
sparse checkout.
* Modernize test script to avoid "test -f" and friends.
* Avoid calling 'cache_tree_update()' when doing so would be
redundant.
* Update the credential-cache documentation to provide a more
realistic example.
* Makefile comments updates and reordering to clarify knobs used to
choose SHA implementations.
* A design document for sparse-checkout's future directions has been
added.
* Teach chainlint.pl to annotate the original test definition instead
of the token stream.
* "make coccicheck" is time consuming. It has been made to run more
incrementally.
* `parse_object()` has been hardened to check for the existence of a
suspected blob object.
* Adjust the documentation build procedure to GNUmake version 4.4,
which made some changes to how pattern rule with multiple targets
are handled.
Fixes since v2.38
-----------------
* The codepath that reads from the index v4 had unaligned memory
accesses, which has been corrected.
* Fix messages incorrectly marked for translation.
* "git fsck" failed to release contents of tree objects already used
from the memory, which has been fixed.
* "git clone" did not like to see the "--bare" and the "--origin"
options used together without a good reason.
* "git remote rename" failed to rename a remote without fetch
refspec, which has been corrected.
* Documentation on various Boolean GIT_* environment variables have
been clarified.
* "git rebase -i" can mistakenly attempt to apply a fixup to a commit
itself, which has been corrected.
* "git multi-pack-index repack/expire" used to repack unreachable
cruft into a new pack, which have been corrected.
* In read-only repositories, "git merge-tree" tried to come up with a
merge result tree object, which it failed (which is not wrong) and
led to a segfault (which is bad), which has been corrected.
* Force C locale while running tests around httpd to make sure we can
find expected error messages in the log.
* Fix a logic in "mailinfo -b" that miscomputed the length of a
substring, which lead to an out-of-bounds access.
* The codepath to sign learned to report errors when it fails to read
from "ssh-keygen".
* Code clean-up that results in plugging a leak.
* "GIT_EDITOR=: git branch --edit-description" resulted in failure,
which has been corrected.
* The code to clean temporary object directories (used for
quarantine) tried to remove them inside its signal handler, which
was a no-no.
* Update comment in the Makefile about the RUNTIME_PREFIX config knob.
* Clarify that "the sentence after <area>: prefix does not begin with
a capital letter" rule applies only to the commit title.
* "git branch --edit-description" on an unborh branch misleadingly
said that no such branch exists, which has been corrected.
* Work around older clang that warns against C99 zero initialization
syntax for struct.
* Giving "--invert-grep" and "--all-match" without "--grep" to the
"git log" command resulted in an attempt to access grep pattern
expression structure that has not been allocated, which has been
corrected.
(merge db84376f98 ab/grep-simplify-extended-expression later to maint).
* "git diff rev^!" did not show combined diff to go to the rev from
its parents.
(merge a79c6b6081 rs/diff-caret-bang-with-parents later to maint).
* Allow configuration files in "protected" scopes to include other
configuration files.
(merge ecec57b3c9 gc/bare-repo-discovery later to maint).
* Give a bit more diversity to macOS CI by using sha1dc in one of the
jobs (the other one tests Apple Common Crypto).
(merge 1ad5c3df35 jc/ci-osx-with-sha1dc later to maint).
* A bugfix with tracing support in midx codepath
(merge e9c3839944 tb/midx-bitmap-selection-fix later to maint).
* When geometric repacking feature is in use together with the
--pack-kept-objects option, we lost packs marked with .keep files.
(merge 197443e80a tb/save-keep-pack-during-geometric-repack later to maint).
* Move a global variable added as a hack during regression fixes to
its proper place in the API.
(merge 0b0ab95f17 ab/run-hook-api-cleanup later to maint).
* Update to build procedure with VS using CMake/CTest.
(merge c858750b41 js/cmake-updates later to maint).
* The short-help text shown by "git cmd -h" and the synopsis text
shown at the beginning of "git help cmd" have been made more
consistent.
* When creating a multi-pack bitmap, remove per-pack bitmap files
unconditionally as they will never be consulted.
(merge 55d902cd61 tb/remove-unused-pack-bitmap later to maint).
* Fix a longstanding syntax error in Git.pm error codepath.
* "git diff --stat" etc. were invented back when everything was ASCII
and strlen() was a way to measure the display width of a string;
adjust them to compute the display width assuming UTF-8 pathnames.
(merge ce8529b2bb tb/diffstat-with-utf8-strwidth later to maint).
* "git branch --edit-description" can exit with status -1 which is
not a good practice; it learned to use 1 as everybody else instead.
* "git apply" limits its input to a bit less than 1 GiB.
* Merging a branch with directory renames into a branch that changes
the directory to a symlink was mishandled by the ort merge
strategy, which has been corrected.
* A bugfix to "git subtree" in its split and merge features.
* Fix some bugs in the reflog messages when rebasing and changes the
reflog messages of "rebase --apply" to match "rebase --merge" with
the aim of making the reflog easier to parse.
* "git rebase --keep-base" used to discard the commits that are
already cherry-picked to the upstream, even when "keep-base" meant
that the base, on top of which the history is being rebuilt, does
not yet include these cherry-picked commits. The --keep-base
option now implies --reapply-cherry-picks and --no-fork-point
options.
* The way "git repack" creared temporary files when it received a
signal was prone to deadlocking, which has been corrected.
* Various tests exercising the transfer.credentialsInUrl
configuration are taught to avoid making requests which require
resolving localhost to reduce CI-flakiness.
* The adjust_shared_perm() helper function learned to refrain from
setting the "g+s" bit on directories when it is not necessary.
* "git archive" mistakenly complained twice about a missing
executable, which has been corrected.
* Fix a bug where `git branch -d` did not work on an orphaned HEAD.
* `git rebase --update-refs` would delete references when all
`update-ref` commands in the sequencer were removed, which has been
corrected.
* Fix a regression in the bisect-helper which mistakenly treats
arguments to the command given to 'git bisect run' as arguments to
the helper.
* Correct an error where `git rebase` would mistakenly use a branch or
tag named "refs/rewritten/xyz" when missing a rebase label.
* Assorted fixes of parsing end-user input as integers.
(merge 14770cf0de pw/config-int-parse-fixes later to maint).
* "git prune" may try to iterate over .git/objects/pack for trash
files to remove in it, and loudly fail when the directory is
missing, which is not necessary. The command has been taught to
ignore such a failure.
(merge 6974765352 ew/prune-with-missing-objects-pack later to maint).
* Add one more candidate directory that may house httpd modules while
running tests.
(merge 1c7dc23d41 es/locate-httpd-module-location-in-test later to maint).
* A handful of leaks in the line-log machinery have been plugged.
* The format of a line in /proc/cpuinfo that describes a CPU on s390x
looked different from everybody else, and the code in chainlint.pl
failed to parse it.
(merge 1f51b77f4f ah/chainlint-cpuinfo-parse-fix later to maint).
* Adjust the GitHub CI to newer ubuntu release.
(merge 0d3507f3e7 jx/ci-ubuntu-fix later to maint).
* Other code cleanup, docfix, build fix, etc.
(merge 413bc6d20a ds/cmd-main-reorder later to maint).
(merge 8d2863e4ed nw/t1002-cleanup later to maint).
(merge 7c2dc122f9 rs/list-objects-filter-leakfix later to maint).
(merge 288fcb1c94 zk/push-use-bitmaps later to maint).
(merge 42db324c0f km/merge-recursive-typofix later to maint).
----------------------------------------------------------------
Changes since v2.38.0 are as follows:
Alejandro R. Sedeño (1):
git-compat-util.h: GCC deprecated message arg only in GCC 4.5+
Alex Henrie (2):
fsmonitor--daemon: don't translate literal commands
push: improve grammar of branch.autoSetupMerge advice
Andreas Hasenack (1):
chainlint.pl: fix /proc/cpuinfo regexp
Anh Le (2):
index: add trace2 region for clear skip worktree
index: raise a bug if the index is materialised more than once
Arthur Chan (1):
fuzz: reorganise the path for existing oss-fuzz fuzzers
Daniel Sonbolian (1):
git.c: improve code readability in cmd_main()
Debra Obondo (1):
t7001-mv.sh: modernizing test script using functions
Derrick Stolee (15):
maintenance: add 'unregister --force'
scalar: make 'unregister' idempotent
gc: replace config subprocesses with API calls
string-list: document iterator behavior on NULL input
bundle-uri: fix technical doc issues
bundle-uri: use plain string in find_temp_filename()
bundle-uri: create bundle_list struct and helpers
bundle-uri: create base key-value pair parsing
bundle-uri: parse bundle list in config format
bundle-uri: limit recursion depth for bundle lists
bundle: properly clear all revision flags
bundle-uri: fetch a list of bundles
bundle: add flags to verify_bundle()
bundle-uri: quiet failed unbundlings
bundle-uri: suppress stderr from remote-https
Diomidis Spinellis (1):
grep: fix multibyte regex handling under macOS
Elijah Newren (4):
merge-ort: fix bug with dir rename vs change dir to symlink
merge-tree: update documentation for differences in -z output
merge-tree: support multiple batched merges with --stdin
sparse-checkout.txt: new document with sparse-checkout directions
Emily Shaffer (2):
gc: add tests for --cruft and friends
config: let feature.experimental imply gc.cruftPacks=true
Eric DeCosta (6):
fsmonitor: refactor filesystem checks to common interface
fsmonitor: relocate socket file if .git directory is remote
fsmonitor: avoid socket location check if using hook
fsmonitor: deal with synthetic firmlinks on macOS
fsmonitor: check for compatability before communicating with fsmonitor
fsmonitor: add documentation for allowRemote and socketDir options
Eric Sunshine (9):
check-non-portable-shell: detect obsolescent egrep/fgrep
chainlint: add explanatory comments
chainlint: tighten accuracy when consuming input stream
chainlint: latch start/end position of each token
chainlint: annotate original test definition rather than token stream
chainlint: sidestep impoverished macOS "terminfo"
chainlint: latch line numbers at which each token starts and ends
chainlint: prefix annotated test definition with line numbers
lib-httpd: extend module location auto-detection
Eric Wong (2):
delta-islands: free island-related data after use
prune: quiet ENOENT on missing directories
Glen Choo (3):
config: respect includes in protected config
http: redact curl h2h3 headers in info
object-file: use real paths when adding alternates
Han-Wen Nienhuys (1):
refs: unify parse_worktree_ref() and ref_type()
Jean-Noël Avila (1):
i18n: fix command template placeholder format
Jeff Hostetler (9):
config.mak.dev: disable suggest braces error on old clang versions
trace2: use size_t alloc,nr_open_regions in tr2tls_thread_ctx
tr2tls: clarify TLS terminology
api-trace2.txt: elminate section describing the public trace2 API
trace2: rename the thread_name argument to trace2_thread_start
trace2: improve thread-name documentation in the thread-context
trace2: convert ctx.thread_name from strbuf to pointer
trace2: add stopwatch timers
trace2: add global counter mechanism
Jeff King (43):
fsck: free tree buffers after walking unreachable objects
fsck: turn off save_commit_buffer
parse_object_buffer(): respect save_commit_buffer
clone: allow "--bare" with "-o"
remote: handle rename of remote without fetch refspec
shell: add basic tests
shell: limit size of interactive commands
sequencer: detect author name errors in read_author_script()
test-submodule: inline resolve_relative_url() function
multi-pack-index: avoid writing to global in option callback
commit: avoid writing to global in option callback
attr: drop DEBUG_ATTR code
dir: use fspathncmp() in pl_hashmap_cmp()
fsmonitor: fix leak of warning message
diffstat_consume(): assert non-zero length
submodule--helper: drop unused argc from module_list_compute()
update-index: drop unused argc from do_reupdate()
mark unused parameters in trivial compat functions
object-file: mark unused parameters in hash_unknown functions
string-list: mark unused callback parameters
date: mark unused parameters in handler functions
apply: mark unused parameters in handlers
apply: mark unused parameters in noop error/warning routine
convert: mark unused parameter in null stream filter
diffcore-pickaxe: mark unused parameters in pickaxe functions
ll-merge: mark unused parameters in callbacks
Makefile: force -O0 when compiling with SANITIZE=leak
repack: convert "names" util bitfield to array
repack: populate extension bits incrementally
repack: expand error message for missing pack files
repack: use tempfiles for signal cleanup
repack: drop remove_temporary_files()
Git.pm: trust rev-parse to find bare repositories
t7700: annotate cruft-pack failure with ok=sigpipe
shortlog: accept `--date`-related options
Makefile: force -O0 when compiling with SANITIZE=leak
t5516: move plaintext-password tests from t5601 and t5516
ref-filter: fix parsing of signatures without blank lines
ref-filter: fix parsing of signatures with CRLF and no body
branch: gracefully handle '-d' on orphan HEAD
t: run t5551 tests with both HTTP and HTTP/2
parse_object(): drop extra "has" check before checking object type
parse_object(): check on-disk type of suspected blob
Jerry Zhang (6):
patch-id: fix stable patch id for binary / header-only
patch-id: use stable patch-id for rebases
builtin: patch-id: fix patch-id with binary diffs
patch-id: fix patch-id for mode changes
builtin: patch-id: add --verbatim as a command mode
builtin: patch-id: remove unused diff-tree prefix
Jiang Xin (5):
t5516: fail to run in verbose mode
github-actions: run gcc-8 on ubuntu-20.04 image
ci: remove the pipe after "p4 -V" to catch errors
ci: use the same version of p4 on both Linux and macOS
ci: install python on ubuntu
Johannes Altmanninger (1):
sequencer: avoid dropping fixup commit that targets self via commit-ish
Johannes Schindelin (11):
merge-ort: fix segmentation fault in read-only repositories
merge-ort: return early when failing to write a blob
cmake: make it easier to diagnose regressions in CTest runs
cmake: copy the merge tools for testing
add -p: avoid ambiguous signed/unsigned comparison
cmake: avoid editing t/test-lib.sh
cmake: increase time-out for a long-running test
t5516/t5601: be less strict about the number of credential warnings
scalar reconfigure -a: remove stale `scalar.repo` entries
ci: use a newer `github-script` version
tests(scalar): tighten the stale `scalar.repo` test some
John Cai (3):
tmp-objdir: skip clean up when handling a signal
fsck: remove the unused BAD_TAG_OBJECT
fsck: document msg-id
Jonathan Tan (4):
promisor-remote: remove a return value
promisor-remote: die upon failing fetch
negotiator/skipping: avoid stack overflow
Doc: document push.recurseSubmodules=only
Julia Ramer (1):
embargoed releases: also describe the git-security list and the process
Junio C Hamano (29):
environ: document GIT_SSL_NO_VERIFY
environ: explain Boolean environment variables
environ: GIT_FLUSH should be made a usual Boolean
environ: simplify description of GIT_INDEX_FILE
environ: GIT_INDEX_VERSION affects not just a new repository
branch: do not fail a no-op --edit-desc
SubmittingPatches: use usual capitalization in the log message body
Start 2.39 cycle
symbolic-ref: teach "--[no-]recurse" option
The (real) first batch for 2.39
The second batch
The third batch
The fourth batch
ci: add address and undefined sanitizer tasks
ci: use DC_SHA1=YesPlease on osx-clang job for CI
The fifth batch
diff: leave NEEDWORK notes in show_stats() function
fsck: remove the unused MISSING_TREE_OBJECT
Documentation: add lint-fsck-msgids
Downmerge a handful of topics for 2.38.2
The sixth batch
Downmerge a bit more for 2.38.2
The seventh batch
The eighth batch
adjust_shared_perm(): leave g+s alone when the group does not matter
Git 2.39-rc0
Another batch before -rc1
A bit more before -rc1
Git 2.39-rc1
Kevin Backhouse (1):
alias.c: reject too-long cmdline strings in split_cmdline()
Kousik Sanagavarapu (1):
repository-version.txt: partialClone casing change
Kyle Meyer (1):
merge-recursive: fix variable typo in error message
M Hickford (4):
Documentation/gitcredentials.txt: mention password alternatives
Documentation: increase example cache timeout to 1 hour
docs: clarify that credential discards unrecognised attributes
Docs: describe how a credential-generating helper works
Martin Ågren (1):
test-lib-functions: drop redundant diagnostic print
Matthew John Cheetham (3):
wincred: ignore unknown lines (do not die)
netrc: ignore unknown lines (do not die)
osxkeychain: clarify that we ignore unknown lines
Michael J Gruber (1):
notes: avoid empty line in template
Michael McClimon (1):
Git.pm: add semicolon after catch statement
Noah Betzen (1):
mergetool.txt: typofix 'overwriten' -> 'overwritten'
Nsengiyumva Wilberforce (1):
t1002: modernize outdated conditional
Patrick Steinhardt (7):
refs: fix memory leak when parsing hideRefs config
refs: get rid of global list of hidden refs
revision: move together exclusion-related functions
revision: introduce struct to handle exclusions
revision: add new parameter to exclude hidden refs
rev-parse: add `--exclude-hidden=` option
receive-pack: only use visible refs for connectivity check
Paul Smith (1):
Makefile: avoid multiple patterns when recipes generate one file
Philip Oakley (4):
doc: use "commit-graph" hyphenation consistently
doc: use 'object database' not ODB or abbreviation
glossary: add "commit graph" description
glossary: add reachability bitmap description
Philippe Blain (9):
test-lib-functions: mark 'test_commit' variables as 'local'
subtree: use 'git rev-parse --verify [--quiet]' for better error messages
subtree: add 'die_incompatible_opt' function to reduce duplication
subtree: prefix die messages with 'fatal'
subtree: define a variable before its first use in 'find_latest_squash'
subtree: use named variables instead of "$@" in cmd_pull
subtree: process 'git-subtree-split' trailer in separate function
subtree: fix squash merging after annotated tag was squashed merged
subtree: fix split after annotated tag was squashed merged
Phillip Wood (26):
mailinfo -b: fix an out of bounds access
ssh signing: return an error when signature cannot be read
t3435: remove redundant test case
t3416: tighten two tests
t3416: set $EDITOR in subshell
rebase: be stricter when reading state files containing oids
rebase: store orig_head as a commit
rebase: rename merge_base to branch_base
rebase: factor out branch_base calculation
rebase --keep-base: imply --reapply-cherry-picks
rebase --keep-base: imply --no-fork-point
rebase --apply: remove duplicated code
t3406: rework rebase reflog tests
rebase --merge: fix reflog when continuing
rebase --merge: fix reflog message after skipping
rebase --apply: respect GIT_REFLOG_ACTION
rebase --apply: make reflog messages match rebase --merge
rebase --abort: improve reflog message
rebase: cleanup action handling
sequencer: stop exporting GIT_REFLOG_ACTION
rebase: stop exporting GIT_REFLOG_ACTION
git_parse_unsigned: reject negative values
config: require at least one digit when parsing numbers
git_parse_signed(): avoid integer overflow
sequencer: unify label lookup
sequencer: tighten label lookups
René Scharfe (21):
revision: use strtol_i() for exclude_parent
revisions.txt: unspecify order of resolved parts of ^!
diff: support ^! for merges
gc: simplify maintenance_task_pack_refs()
t/lib-httpd: pass LANG and LC_ALL to Apache
bisect--helper: plug strvec leak
archive: deduplicate verbose printing
submodule: use strvec_pushf() for --super-prefix
run-command: fix return value comment
am: simplify building "show" argument list
bisect: simplify building "checkout" argument list
bisect--helper: factor out do_bisect_run()
sequencer: simplify building argument list in do_exec()
use child_process member "args" instead of string array variable
use child_process members "args" and "env" directly
replace and remove run_command_v_opt_cd_env()
replace and remove run_command_v_opt_tr2()
replace and remove run_command_v_opt_cd_env_tr2()
replace and remove run_command_v_opt()
archive-tar: report filter start error only once
list-objects-filter: plug combine_filter_data leak
Ronan Pigott (2):
for-each-repo: interpolate repo path arguments
maintenance: add option to register in a specific config
Rubén Justo (5):
ref-filter.c: fix a leak in get_head_description
branch: description for non-existent branch errors
branch: support for shortcuts like @{-1}, completed
branch: error copying or renaming a detached HEAD
branch: error code with --edit-description
SZEDER Gábor (4):
Documentation/build-docdep.perl: generate sorted output
line-log: free diff queue when processing non-merge commits
line-log: free the diff queues' arrays when processing merge commits
diff.c: use diff_free_queue()
Sergey Organov (3):
diff-merges: cleanup func_by_opt()
diff-merges: cleanup set_diff_merges()
diff-merges: clarify log.diffMerges documentation
Shaoxuan Yuan (1):
builtin/grep.c: integrate with sparse index
Sotir Danailov (1):
docs: git-send-email: difference between ssl and tls smtp-encryption
Taylor Blau (64):
Documentation/git-multi-pack-index.txt: fix typo
Documentation/git-multi-pack-index.txt: clarify expire behavior
midx.c: prevent `expire` from removing the cruft pack
midx.c: avoid cruft packs with `repack --batch-size=0`
midx.c: replace `xcalloc()` with `CALLOC_ARRAY()`
midx.c: remove unnecessary loop condition
midx.c: avoid cruft packs with non-zero `repack --batch-size`
builtin/clone.c: disallow `--local` clones with symlinks
t/lib-submodule-update.sh: allow local submodules
t/t1NNN: allow local submodules
t/2NNNN: allow local submodules
t/t3NNN: allow local submodules
t/t4NNN: allow local submodules
t/t5NNN: allow local submodules
t/t6NNN: allow local submodules
t/t7NNN: allow local submodules
t/t9NNN: allow local submodules
transport: make `protocol.file.allow` be "user" by default
t1092: prepare for changing protocol.file.allow
t2080: prepare for changing protocol.file.allow
t1092: prepare for changing protocol.file.allow
t2080: prepare for changing protocol.file.allow
t3207: prepare for changing protocol.file.allow
t5516: prepare for changing protocol.file.allow
t5537: prepare for changing protocol.file.allow
t7814: prepare for changing protocol.file.allow
t3206: prepare for changing protocol.file.allow
t5537: prepare for changing protocol.file.allow
Git 2.30.6
Git 2.31.5
Git 2.32.4
Git 2.33.5
Git 2.34.5
Git 2.35.5
Git 2.36.3
t7527: prepare for changing protocol.file.allow
Git 2.37.4
Git 2.38.1
midx.c: fix whitespace typo
midx.c: consider annotated tags during bitmap selection
midx.c: instrument MIDX and bitmap generation with trace2 regions
pack-bitmap-write.c: instrument number of reused bitmaps
builtin/repack.c: remove redundant pack-based bitmaps
repack: don't remove .keep packs with `--pack-kept-objects`
builtin/repack.c: pass "out" to `prepare_pack_objects`
builtin/repack.c: pass "cruft_expiration" to `write_cruft_pack`
builtin/repack.c: write cruft packs to arbitrary locations
builtin/repack.c: implement `--expire-to` for storing pruned objects
shortlog: make trailer insertion a noop when appropriate
shortlog: extract `--group` fragment for translation
shortlog: support arbitrary commit format `--group`s
shortlog: extract `shortlog_finish_setup()`
shortlog: implement `--group=author` in terms of `--group=<format>`
shortlog: implement `--group=committer` in terms of `--group=<format>`
apply: reject patches larger than ~1 GiB
Documentation/howto/maintain-git.txt: fix Meta/redo-jch.sh invocation
The ninth batch
Documentation: build redo-jch.sh from master..jch
Documentation: build redo-seen.sh from jch..seen
The tenth batch
The eleventh batch
The twelfth batch
builtin/gc.c: fix use-after-free in maintenance_unregister()
The thirteenth batch
Torsten Bögershausen (1):
diff.c: use utf8_strwidth() to count display width
Victoria Dye (7):
read-cache: avoid misaligned reads in index v4
rebase --update-refs: avoid unintended ref deletion
cache-tree: add perf test comparing update and prime
unpack-trees: add 'skip_cache_tree_update' option
reset: use 'skip_cache_tree_update' option
read-tree: use 'skip_cache_tree_update' option
rebase: use 'skip_cache_tree_update' option
Vincent Bernat (1):
ls-files: fix --ignored and --killed flags in synopsis
Vlad-Stefan Harbuz (1):
Documentation: fix typo
srz_zumix (1):
fsmonitor--daemon: on macOS support symlink
Ævar Arnfjörð Bjarmason (113):
test-lib: have SANITIZE=leak imply TEST_NO_MALLOC_CHECK
CodingGuidelines: update for C99
CodingGuidelines: mention dynamic C99 initializer elements
CodingGuidelines: allow declaring variables in for loops
CodingGuidelines: mention C99 features we can't use
grep.c: remove "extended" in favor of "pattern_expression", fix segfault
CodingGuidelines: recommend against unportable C99 struct syntax
bundle-uri: create "key=value" line parsing
bundle-uri: unit test "key=value" parsing
run-command test helper: use "else if" pattern
run-command API: have "run_processes_parallel{,_tr2}()" return void
run-command tests: use "return", not "exit"
run-command API: make "n" parameter a "size_t"
run-command API: don't fall back on online_cpus()
run-command.c: use designated init for pp_init(), add "const"
run-command API: have run_process_parallel() take an "opts" struct
run-command API: move *_tr2() users to "run_processes_parallel()"
run-command.c: make "struct parallel_processes" const if possible
run-command.c: don't copy *_fn to "struct parallel_processes"
run-command.c: don't copy "ungroup" to "struct parallel_processes"
run-command.c: don't copy "data" to "struct parallel_processes"
run-command.c: use "opts->processes", not "pp->max_processes"
run-command.c: pass "opts" further down, and use "opts->processes"
run-command.c: remove "max_processes", add "const" to signal() handler
tests: assert *.txt SYNOPSIS and -h output
CodingGuidelines: update and clarify command-line conventions
builtin/bundle.c: indent with tabs
bundle: define subcommand -h in terms of command -h
doc SYNOPSIS: don't use ' for subcommands
doc SYNOPSIS: consistently use ' for commands
built-ins: consistently add "\n" between "usage" and options
doc txt & -h consistency: word-wrap
doc txt & -h consistency: fix incorrect alternates syntax
doc txt & -h consistency: add "-z" to cat-file "-h"
doc txt & -h consistency: balance unbalanced "[" and "]"
doc txt & -h consistency: correct padding around "[]()"
stash doc SYNOPSIS & -h: correct padding around "[]()"
doc txt & -h consistency: use "<options>", not "<options>..."
doc SYNOPSIS & -h: use "-" to separate words in labels, not "_"
doc txt & -h consistency: fix mismatching labels
doc txt & -h consistency: add or fix optional "--" syntax
doc txt & -h consistency: make output order consistent
doc txt & -h consistency: add missing options and labels
doc txt & -h consistency: make "rerere" consistent
doc txt & -h consistency: make "read-tree" consistent
doc txt & -h consistency: make "bundle" consistent
doc txt & -h consistency: use "git foo" form, not "git-foo"
doc txt & -h consistency: add missing options
doc txt & -h consistency: make "stash" consistent
doc txt & -h consistency: make "annotate" consistent
doc txt & -h consistency: use "[<label>...]" for "zero or more"
doc txt & -h consistency: make "diff-tree" consistent
doc txt & -h consistency: make "commit" consistent
reflog doc: list real subcommands up-front
worktree: define subcommand -h in terms of command -h
doc txt & -h consistency: make "worktree" consistent
tests: start asserting that *.txt SYNOPSIS matches -h output
tests: assert consistent whitespace in -h output
fsmonitor OSX: compile with DC_SHA1=YesPlease
merge: remove always-the-same "verbose" arguments
hook tests: fix redirection logic error in 96e7225b310
submodule tests: reset "trace.out" between "grep" invocations
run-command tests: test stdout of run_command_parallel()
Makefile + shared.mak: rename and indent $(QUIET_SPATCH_T)
cocci rules: remove unused "F" metavariable from pending rule
Makefile: add ability to TAB-complete cocci *.patch rules
Makefile: have "coccicheck" re-run if flags change
Makefile: split off SPATCH_BATCH_SIZE comment from "cocci" heading
cocci: split off include-less "tests" from SPATCH_FLAGS
cocci: split off "--all-includes" from SPATCH_FLAGS
cocci: make "coccicheck" rule incremental
cocci: optimistically use COMPUTE_HEADER_DEPENDENCIES
Makefile: copy contrib/coccinelle/*.cocci to build/
cocci rules: remove <id>'s from rules that don't need them
cocci: run against a generated ALL.cocci
spatchcache: add a ccache-alike for "spatch"
Makefile: always (re)set DC_SHA1 on fallback
INSTALL: remove discussion of SHA-1 backends
Makefile: correct DC_SHA1 documentation
Makefile: create and use sections for "define" flag listing
Makefile: rephrase the discussion of *_SHA1 knobs
Makefile: document default SHA-256 backend
Makefile: document SHA-1 and SHA-256 default and selection order
Makefile & test-tool: replace "DC_SHA1" variable with a "define"
Makefile: document default SHA-1 backend on OSX
Makefile: discuss SHAttered in *_SHA{1,256} discussion
submodule--helper: move "config" to a test-tool
submodule tests: add tests for top-level flag output
submodule--helper: fix a memory leak in "status"
submodule tests: test for a "foreach" blind-spot
submodule.c: refactor recursive block out of absorb function
submodule API & "absorbgitdirs": remove "----recursive" option
submodule--helper: remove --prefix from "absorbgitdirs"
submodule--helper: drop "update --prefix <pfx>" for "-C <pfx> update"
submodule--helper: use OPT_SUBCOMMAND() API
revisions API: extend the nascent REV_INFO_INIT macro
t7610: fix flaky timeout issue, don't clone from example.com
Makefile: don't create a ".build/.build/" for cocci, fix output
maintenance --unregister: fix uninit'd data use & -Wdeclaration-after-statement
t7610: use "file:///dev/null", not "/dev/null", fixes MinGW
cache.h: remove unused "the_index" compat macros
builtin/{grep,log}.: don't define "USE_THE_INDEX_COMPATIBILITY_MACROS"
cocci & cache.h: remove rarely used "the_index" compat macros
read-cache API & users: make discard_index() return void
cocci: add a index-compatibility.pending.cocci
cocci & cache.h: apply a selection of "pending" index-compatibility
cocci & cache.h: apply variable section of "pending" index-compatibility
cocci: apply "pending" index-compatibility to "t/helper/*.c"
{builtin/*,repository}.c: add & use "USE_THE_INDEX_VARIABLE"
cache.h & test-tool.h: add & use "USE_THE_INDEX_VARIABLE"
cocci: apply "pending" index-compatibility to some "builtin/*.c"
parse_object(): simplify blob conditional
trace2 tests: guard pthread test with "PTHREAD"
Đoàn Trần Công Danh (8):
CodingGuidelines: allow grep -E
t: remove \{m,n\} from BRE grep usage
t: convert egrep usage to "grep -E"
t: convert fgrep usage to "grep -F"
Makefile: clarify runtime relative gitexecdir
bisect--helper: remove unused options
bisect--helper: move all subcommands into their own functions
bisect--helper: parse subcommand with OPT_SUBCOMMAND
^ permalink raw reply [relevance 3%]
* [ANNOUNCE] Git v2.39.0-rc0
@ 2022-11-23 7:25 3% Junio C Hamano
0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2022-11-23 7:25 UTC (permalink / raw)
To: git; +Cc: git-packagers, lwn
An early preview release Git v2.39.0-rc0 is now available for
testing at the usual places. It is comprised of 423 non-merge
commits since v2.38.0, contributed by 67 people, 28 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.39.0-rc0' tag and the 'master' branch that the tag points at:
url = https://git.kernel.org/pub/scm/git/git
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.38.0 are as follows.
Welcome to the Git development community!
Alexander Meshcheryakov, Anh Le, Arthur Chan, Daniel
Sonbolian, Debra Obondo, Diomidis Spinellis, Erik Cervin
Edin, Hank Leininger, herr.kaste, John A. Leuenhagen, Julia
Ramer, Kevin Backhouse, Kousik Sanagavarapu, Lukáš Doktor,
Martin Englund, M Hickford, Michael V. Scovetta, Noah Betzen,
Nsengiyumva Wilberforce, orygaw, Ronan Pigott, Rubén Justo,
Sotir Danailov, srz_zumix, Stefano Rivera, Tim Jaacks, Vincent
Bernat, and Vlad-Stefan Harbuz.
Returning contributors who helped this release are as follows.
Thanks for your continued support.
정재우, Ævar Arnfjörð Bjarmason, Alejandro R. Sedeño,
Alex Henrie, Derrick Stolee, Đoàn Trần Công Danh, Elijah
Newren, Emily Shaffer, Eric DeCosta, Eric Sunshine, Eric Wong,
Glen Choo, Han-Wen Nienhuys, Jan Pokorný, Jeff Hostetler, Jeff
King, Jerry Zhang, Johannes Altmanninger, Johannes Schindelin,
John Cai, Jonathan Tan, Julien Moutinho, Junio C Hamano, Martin
Ågren, Martin von Zweigbergk, Matthew John Cheetham, Michael
J Gruber, Michael McClimon, Patrick Steinhardt, Philip Oakley,
Philippe Blain, Phillip Wood, René Scharfe, Sergey Organov,
Shaoxuan Yuan, SZEDER Gábor, Taylor Blau, Torsten Bögershausen,
and Victoria Dye.
[*] We are counting not just the authorship contribution but issue
reporting, mentoring, helping and reviewing that are recorded in
the commit trailers.
----------------------------------------------------------------
Git v2.39 Release Notes (draft)
===============================
UI, Workflows & Features
------------------------
* "git grep" learned to expand the sparse-index more lazily and on
demand in a sparse checkout.
* By default, use of fsmonitor on a repository on networked
filesystem is disabled. Add knobs to make it workable on macOS.
* After checking out a "branch" that is a symbolic-ref that points at
another branch, "git symbolic-ref HEAD" reports the underlying
branch, not the symbolic-ref the user gave checkout as argument.
The command learned the "--no-recurse" option to stop after
dereferencing a symbolic-ref only once.
* "git branch --edit-description @{-1}" is now a way to edit branch
description of the branch you were on before switching to the
current branch.
* "git merge-tree --stdin" is a new way to request a series of merges
and report the merge results.
* "git shortlog" learned to group by the "format" string.
* A new "--include-whitespace" option is added to "git patch-id", and
existing bugs in the internal patch-id logic that did not match
what "git patch-id" produces have been corrected.
* Enable gc.cruftpacks by default for those who opt into
feature.experimental setting.
* "git repack" learns to send cruft objects out of the way into
packfiles outside the repository.
* 'scalar reconfigure -a' is taught to automatically remove
scalar.repo entires which no longer exist.
* Redact headers from cURL's h2h3 module in GIT_CURL_VERBOSE and
others.
* 'git maintenance register' is taught to write configuration to an
arbitrary path, and 'git for-each-repo' is taught to expand tilde
characters in paths.
* When creating new notes, the template used to get a stray empty
newline, which has been removed.
* "git receive-pack" used to use all the local refs as the boundary for
checking connectivity of the data "git push" sent, but now it uses
only the refs that it advertised to the pusher. In a repository with
the .hideRefs configuration, this reduces the resources needed to
perform the check.
* With '--recurse-submodules=on-demand', all submodules are
recursively pushed.
Performance, Internal Implementation, Development Support etc.
--------------------------------------------------------------
* With a bit of header twiddling, use the native regexp library on
macOS instead of the compat/ one.
* Prepare for GNU [ef]grep that throw warning of their uses.
* Sources related to fuzz testing have been moved down to their own
directory.
* Most credential helpers ignored unknown entries in a credential
description, but a few died upon seeing them. The latter were
taught to ignore them, too
* "scalar unregister" in a repository that is already been
unregistered reported an error.
* Remove error detection from a function that fetches from promisor
remotes, and make it die when such a fetch fails to bring all the
requested objects, to give an early failure to various operations.
* Update CodingGuidelines to clarify what features to use and avoid
in C99.
* Avoid false-positive from LSan whose assumption may be broken with
higher optimization levels.
* Enable address and undefined sanitizer tasks at GitHub Actions CI.
* More UNUSED annotation to help using -Wunused option with the
compiler.
(merge 4b992f0a24 jk/unused-anno-more later to maint).
* Rewrite a deep recursion in the skipping negotiator to use a loop
with on-heap prio queue to avoid stack wastage.
* Add documentation for message IDs in fsck error messages.
* Define the logical elements of a "bundle list", data structure to
store them in-core, format to transfer them, and code to parse
them.
* The role the security mailing list plays in an embargoed release
has been documented.
* Two new facilities, "timer" and "counter", are introduced to the
trace2 API.
* Code simplification by using strvec_pushf() instead of building an
argument in a separate strbuf.
* Make sure generated dependency file is stably sorted to help
developers debugging their build issues.
* The glossary entries for "commit-graph file" and "reachability
bitmap" have been added.
* Various tests exercising the transfer.credentialsInUrl
configuration are taught to avoid making requests which require
resolving localhost to reduce CI-flakiness.
* A redundant diagnostic message is dropped from test_path_is_missing().
* Simplify the run-command API.
* Update the actions/github-script dependency in CI to avoid a
deprecation warning.
* Progress on being able to initialize a rev_info struct with a
macro.
* Add trace2 counters to the region to clear skip worktree bits in a
sparse checkout.
* Modernize test script to avoid "test -f" and friends.
* Avoid calling 'cache_tree_update()' when doing so would be
redundant.
* Update the credential-cache documentation to provide a more
realistic example.
* Makefile comments updates and reordering to clarify knobs used to
choose SHA implementations.
* A design document for sparse-checkout's future directions has been
added.
* Teach chainlint.pl to annotate the original test definition instead
of the token stream.
* "make coccicheck" is time consuming. It has been made to run more
incrementally.
Fixes since v2.38
-----------------
* The codepath that reads from the index v4 had unaligned memory
accesses, which has been corrected.
* Fix messages incorrectly marked for translation.
* "git fsck" failed to release contents of tree objects already used
from the memory, which has been fixed.
* "git clone" did not like to see the "--bare" and the "--origin"
options used together without a good reason.
* "git remote rename" failed to rename a remote without fetch
refspec, which has been corrected.
* Documentation on various Boolean GIT_* environment variables have
been clarified.
* "git rebase -i" can mistakenly attempt to apply a fixup to a commit
itself, which has been corrected.
* "git multi-pack-index repack/expire" used to repack unreachable
cruft into a new pack, which have been corrected.
* In read-only repositories, "git merge-tree" tried to come up with a
merge result tree object, which it failed (which is not wrong) and
led to a segfault (which is bad), which has been corrected.
* Force C locale while running tests around httpd to make sure we can
find expected error messages in the log.
* Fix a logic in "mailinfo -b" that miscomputed the length of a
substring, which lead to an out-of-bounds access.
* The codepath to sign learned to report errors when it fails to read
from "ssh-keygen".
* Code clean-up that results in plugging a leak.
* "GIT_EDITOR=: git branch --edit-description" resulted in failure,
which has been corrected.
* The code to clean temporary object directories (used for
quarantine) tried to remove them inside its signal handler, which
was a no-no.
* Update comment in the Makefile about the RUNTIME_PREFIX config knob.
* Clarify that "the sentence after <area>: prefix does not begin with
a capital letter" rule applies only to the commit title.
* "git branch --edit-description" on an unborh branch misleadingly
said that no such branch exists, which has been corrected.
* Work around older clang that warns against C99 zero initialization
syntax for struct.
* Giving "--invert-grep" and "--all-match" without "--grep" to the
"git log" command resulted in an attempt to access grep pattern
expression structure that has not been allocated, which has been
corrected.
(merge db84376f98 ab/grep-simplify-extended-expression later to maint).
* "git diff rev^!" did not show combined diff to go to the rev from
its parents.
(merge a79c6b6081 rs/diff-caret-bang-with-parents later to maint).
* Allow configuration files in "protected" scopes to include other
configuration files.
(merge ecec57b3c9 gc/bare-repo-discovery later to maint).
* Give a bit more diversity to macOS CI by using sha1dc in one of the
jobs (the other one tests Apple Common Crypto).
(merge 1ad5c3df35 jc/ci-osx-with-sha1dc later to maint).
* A bugfix with tracing support in midx codepath
(merge e9c3839944 tb/midx-bitmap-selection-fix later to maint).
* When geometric repacking feature is in use together with the
--pack-kept-objects option, we lost packs marked with .keep files.
(merge 197443e80a tb/save-keep-pack-during-geometric-repack later to maint).
* Move a global variable added as a hack during regression fixes to
its proper place in the API.
(merge 0b0ab95f17 ab/run-hook-api-cleanup later to maint).
* Update to build procedure with VS using CMake/CTest.
(merge c858750b41 js/cmake-updates later to maint).
* The short-help text shown by "git cmd -h" and the synopsis text
shown at the beginning of "git help cmd" have been made more
consistent.
* When creating a multi-pack bitmap, remove per-pack bitmap files
unconditionally as they will never be consulted.
(merge 55d902cd61 tb/remove-unused-pack-bitmap later to maint).
* Fix a longstanding syntax error in Git.pm error codepath.
* "git diff --stat" etc. were invented back when everything was ASCII
and strlen() was a way to measure the display width of a string;
adjust them to compute the display width assuming UTF-8 pathnames.
(merge ce8529b2bb tb/diffstat-with-utf8-strwidth later to maint).
* "git branch --edit-description" can exit with status -1 which is
not a good practice; it learned to use 1 as everybody else instead.
* "git apply" limits its input to a bit less than 1 GiB.
* Merging a branch with directory renames into a branch that changes
the directory to a symlink was mishandled by the ort merge
strategy, which has been corrected.
* A bugfix to "git subtree" in its split and merge features.
* Fix some bugs in the reflog messages when rebasing and changes the
reflog messages of "rebase --apply" to match "rebase --merge" with
the aim of making the reflog easier to parse.
* "git rebase --keep-base" used to discard the commits that are
already cherry-picked to the upstream, even when "keep-base" meant
that the base, on top of which the history is being rebuilt, does
not yet include these cherry-picked commits. The --keep-base
option now implies --reapply-cherry-picks and --no-fork-point
options.
* The way "git repack" creared temporary files when it received a
signal was prone to deadlocking, which has been corrected.
* Various tests exercising the transfer.credentialsInUrl
configuration are taught to avoid making requests which require
resolving localhost to reduce CI-flakiness.
* The adjust_shared_perm() helper function learned to refrain from
setting the "g+s" bit on directories when it is not necessary.
* "git archive" mistakenly complained twice about a missing
executable, which has been corrected.
* Fix a bug where `git branch -d` did not work on an orphaned HEAD.
* `git rebase --update-refs` would delete references when all
`update-ref` commands in the sequencer were removed, which has been
corrected.
* Fix a regression in the bisect-helper which mistakenly treats
arguments to the command given to 'git bisect run' as arguments to
the helper.
* Correct an error where `git rebase` would mistakenly use a branch or
tag named "refs/rewritten/xyz" when missing a rebase label.
* Other code cleanup, docfix, build fix, etc.
(merge 413bc6d20a ds/cmd-main-reorder later to maint).
(merge 8d2863e4ed nw/t1002-cleanup later to maint).
----------------------------------------------------------------
Changes since v2.38.0 are as follows:
Alejandro R. Sedeño (1):
git-compat-util.h: GCC deprecated message arg only in GCC 4.5+
Alex Henrie (2):
fsmonitor--daemon: don't translate literal commands
push: improve grammar of branch.autoSetupMerge advice
Anh Le (2):
index: add trace2 region for clear skip worktree
index: raise a bug if the index is materialised more than once
Arthur Chan (1):
fuzz: reorganise the path for existing oss-fuzz fuzzers
Daniel Sonbolian (1):
git.c: improve code readability in cmd_main()
Debra Obondo (1):
t7001-mv.sh: modernizing test script using functions
Derrick Stolee (15):
maintenance: add 'unregister --force'
scalar: make 'unregister' idempotent
gc: replace config subprocesses with API calls
string-list: document iterator behavior on NULL input
bundle-uri: fix technical doc issues
bundle-uri: use plain string in find_temp_filename()
bundle-uri: create bundle_list struct and helpers
bundle-uri: create base key-value pair parsing
bundle-uri: parse bundle list in config format
bundle-uri: limit recursion depth for bundle lists
bundle: properly clear all revision flags
bundle-uri: fetch a list of bundles
bundle: add flags to verify_bundle()
bundle-uri: quiet failed unbundlings
bundle-uri: suppress stderr from remote-https
Diomidis Spinellis (1):
grep: fix multibyte regex handling under macOS
Elijah Newren (4):
merge-ort: fix bug with dir rename vs change dir to symlink
merge-tree: update documentation for differences in -z output
merge-tree: support multiple batched merges with --stdin
sparse-checkout.txt: new document with sparse-checkout directions
Emily Shaffer (2):
gc: add tests for --cruft and friends
config: let feature.experimental imply gc.cruftPacks=true
Eric DeCosta (6):
fsmonitor: refactor filesystem checks to common interface
fsmonitor: relocate socket file if .git directory is remote
fsmonitor: avoid socket location check if using hook
fsmonitor: deal with synthetic firmlinks on macOS
fsmonitor: check for compatability before communicating with fsmonitor
fsmonitor: add documentation for allowRemote and socketDir options
Eric Sunshine (8):
check-non-portable-shell: detect obsolescent egrep/fgrep
chainlint: add explanatory comments
chainlint: tighten accuracy when consuming input stream
chainlint: latch start/end position of each token
chainlint: annotate original test definition rather than token stream
chainlint: sidestep impoverished macOS "terminfo"
chainlint: latch line numbers at which each token starts and ends
chainlint: prefix annotated test definition with line numbers
Eric Wong (1):
delta-islands: free island-related data after use
Glen Choo (2):
config: respect includes in protected config
http: redact curl h2h3 headers in info
Han-Wen Nienhuys (1):
refs: unify parse_worktree_ref() and ref_type()
Jeff Hostetler (9):
config.mak.dev: disable suggest braces error on old clang versions
trace2: use size_t alloc,nr_open_regions in tr2tls_thread_ctx
tr2tls: clarify TLS terminology
api-trace2.txt: elminate section describing the public trace2 API
trace2: rename the thread_name argument to trace2_thread_start
trace2: improve thread-name documentation in the thread-context
trace2: convert ctx.thread_name from strbuf to pointer
trace2: add stopwatch timers
trace2: add global counter mechanism
Jeff King (41):
fsck: free tree buffers after walking unreachable objects
fsck: turn off save_commit_buffer
parse_object_buffer(): respect save_commit_buffer
clone: allow "--bare" with "-o"
remote: handle rename of remote without fetch refspec
shell: add basic tests
shell: limit size of interactive commands
sequencer: detect author name errors in read_author_script()
test-submodule: inline resolve_relative_url() function
multi-pack-index: avoid writing to global in option callback
commit: avoid writing to global in option callback
attr: drop DEBUG_ATTR code
dir: use fspathncmp() in pl_hashmap_cmp()
fsmonitor: fix leak of warning message
diffstat_consume(): assert non-zero length
submodule--helper: drop unused argc from module_list_compute()
update-index: drop unused argc from do_reupdate()
mark unused parameters in trivial compat functions
object-file: mark unused parameters in hash_unknown functions
string-list: mark unused callback parameters
date: mark unused parameters in handler functions
apply: mark unused parameters in handlers
apply: mark unused parameters in noop error/warning routine
convert: mark unused parameter in null stream filter
diffcore-pickaxe: mark unused parameters in pickaxe functions
ll-merge: mark unused parameters in callbacks
Makefile: force -O0 when compiling with SANITIZE=leak
repack: convert "names" util bitfield to array
repack: populate extension bits incrementally
repack: expand error message for missing pack files
repack: use tempfiles for signal cleanup
repack: drop remove_temporary_files()
Git.pm: trust rev-parse to find bare repositories
t7700: annotate cruft-pack failure with ok=sigpipe
shortlog: accept `--date`-related options
Makefile: force -O0 when compiling with SANITIZE=leak
t5516: move plaintext-password tests from t5601 and t5516
ref-filter: fix parsing of signatures without blank lines
ref-filter: fix parsing of signatures with CRLF and no body
branch: gracefully handle '-d' on orphan HEAD
t: run t5551 tests with both HTTP and HTTP/2
Jerry Zhang (6):
patch-id: fix stable patch id for binary / header-only
patch-id: use stable patch-id for rebases
builtin: patch-id: fix patch-id with binary diffs
patch-id: fix patch-id for mode changes
builtin: patch-id: add --verbatim as a command mode
builtin: patch-id: remove unused diff-tree prefix
Johannes Altmanninger (1):
sequencer: avoid dropping fixup commit that targets self via commit-ish
Johannes Schindelin (11):
merge-ort: fix segmentation fault in read-only repositories
merge-ort: return early when failing to write a blob
cmake: make it easier to diagnose regressions in CTest runs
cmake: copy the merge tools for testing
add -p: avoid ambiguous signed/unsigned comparison
cmake: avoid editing t/test-lib.sh
cmake: increase time-out for a long-running test
t5516/t5601: be less strict about the number of credential warnings
scalar reconfigure -a: remove stale `scalar.repo` entries
ci: use a newer `github-script` version
tests(scalar): tighten the stale `scalar.repo` test some
John Cai (3):
tmp-objdir: skip clean up when handling a signal
fsck: remove the unused BAD_TAG_OBJECT
fsck: document msg-id
Jonathan Tan (4):
promisor-remote: remove a return value
promisor-remote: die upon failing fetch
negotiator/skipping: avoid stack overflow
Doc: document push.recurseSubmodules=only
Julia Ramer (1):
embargoed releases: also describe the git-security list and the process
Junio C Hamano (26):
environ: document GIT_SSL_NO_VERIFY
environ: explain Boolean environment variables
environ: GIT_FLUSH should be made a usual Boolean
environ: simplify description of GIT_INDEX_FILE
environ: GIT_INDEX_VERSION affects not just a new repository
branch: do not fail a no-op --edit-desc
SubmittingPatches: use usual capitalization in the log message body
Start 2.39 cycle
symbolic-ref: teach "--[no-]recurse" option
The (real) first batch for 2.39
The second batch
The third batch
The fourth batch
ci: add address and undefined sanitizer tasks
ci: use DC_SHA1=YesPlease on osx-clang job for CI
The fifth batch
diff: leave NEEDWORK notes in show_stats() function
fsck: remove the unused MISSING_TREE_OBJECT
Documentation: add lint-fsck-msgids
Downmerge a handful of topics for 2.38.2
The sixth batch
Downmerge a bit more for 2.38.2
The seventh batch
The eighth batch
adjust_shared_perm(): leave g+s alone when the group does not matter
Git 2.39-rc0
Kevin Backhouse (1):
alias.c: reject too-long cmdline strings in split_cmdline()
Kousik Sanagavarapu (1):
repository-version.txt: partialClone casing change
M Hickford (4):
Documentation/gitcredentials.txt: mention password alternatives
Documentation: increase example cache timeout to 1 hour
docs: clarify that credential discards unrecognised attributes
Docs: describe how a credential-generating helper works
Martin Ågren (1):
test-lib-functions: drop redundant diagnostic print
Matthew John Cheetham (3):
wincred: ignore unknown lines (do not die)
netrc: ignore unknown lines (do not die)
osxkeychain: clarify that we ignore unknown lines
Michael J Gruber (1):
notes: avoid empty line in template
Michael McClimon (1):
Git.pm: add semicolon after catch statement
Noah Betzen (1):
mergetool.txt: typofix 'overwriten' -> 'overwritten'
Nsengiyumva Wilberforce (1):
t1002: modernize outdated conditional
Patrick Steinhardt (7):
refs: fix memory leak when parsing hideRefs config
refs: get rid of global list of hidden refs
revision: move together exclusion-related functions
revision: introduce struct to handle exclusions
revision: add new parameter to exclude hidden refs
rev-parse: add `--exclude-hidden=` option
receive-pack: only use visible refs for connectivity check
Philip Oakley (4):
doc: use "commit-graph" hyphenation consistently
doc: use 'object database' not ODB or abbreviation
glossary: add "commit graph" description
glossary: add reachability bitmap description
Philippe Blain (9):
test-lib-functions: mark 'test_commit' variables as 'local'
subtree: use 'git rev-parse --verify [--quiet]' for better error messages
subtree: add 'die_incompatible_opt' function to reduce duplication
subtree: prefix die messages with 'fatal'
subtree: define a variable before its first use in 'find_latest_squash'
subtree: use named variables instead of "$@" in cmd_pull
subtree: process 'git-subtree-split' trailer in separate function
subtree: fix squash merging after annotated tag was squashed merged
subtree: fix split after annotated tag was squashed merged
Phillip Wood (23):
mailinfo -b: fix an out of bounds access
ssh signing: return an error when signature cannot be read
t3435: remove redundant test case
t3416: tighten two tests
t3416: set $EDITOR in subshell
rebase: be stricter when reading state files containing oids
rebase: store orig_head as a commit
rebase: rename merge_base to branch_base
rebase: factor out branch_base calculation
rebase --keep-base: imply --reapply-cherry-picks
rebase --keep-base: imply --no-fork-point
rebase --apply: remove duplicated code
t3406: rework rebase reflog tests
rebase --merge: fix reflog when continuing
rebase --merge: fix reflog message after skipping
rebase --apply: respect GIT_REFLOG_ACTION
rebase --apply: make reflog messages match rebase --merge
rebase --abort: improve reflog message
rebase: cleanup action handling
sequencer: stop exporting GIT_REFLOG_ACTION
rebase: stop exporting GIT_REFLOG_ACTION
sequencer: unify label lookup
sequencer: tighten label lookups
René Scharfe (20):
revision: use strtol_i() for exclude_parent
revisions.txt: unspecify order of resolved parts of ^!
diff: support ^! for merges
gc: simplify maintenance_task_pack_refs()
t/lib-httpd: pass LANG and LC_ALL to Apache
bisect--helper: plug strvec leak
archive: deduplicate verbose printing
submodule: use strvec_pushf() for --super-prefix
run-command: fix return value comment
am: simplify building "show" argument list
bisect: simplify building "checkout" argument list
bisect--helper: factor out do_bisect_run()
sequencer: simplify building argument list in do_exec()
use child_process member "args" instead of string array variable
use child_process members "args" and "env" directly
replace and remove run_command_v_opt_cd_env()
replace and remove run_command_v_opt_tr2()
replace and remove run_command_v_opt_cd_env_tr2()
replace and remove run_command_v_opt()
archive-tar: report filter start error only once
Ronan Pigott (2):
for-each-repo: interpolate repo path arguments
maintenance: add option to register in a specific config
Rubén Justo (5):
ref-filter.c: fix a leak in get_head_description
branch: description for non-existent branch errors
branch: support for shortcuts like @{-1}, completed
branch: error copying or renaming a detached HEAD
branch: error code with --edit-description
SZEDER Gábor (1):
Documentation/build-docdep.perl: generate sorted output
Sergey Organov (3):
diff-merges: cleanup func_by_opt()
diff-merges: cleanup set_diff_merges()
diff-merges: clarify log.diffMerges documentation
Shaoxuan Yuan (1):
builtin/grep.c: integrate with sparse index
Sotir Danailov (1):
docs: git-send-email: difference between ssl and tls smtp-encryption
Taylor Blau (64):
Documentation/git-multi-pack-index.txt: fix typo
Documentation/git-multi-pack-index.txt: clarify expire behavior
midx.c: prevent `expire` from removing the cruft pack
midx.c: avoid cruft packs with `repack --batch-size=0`
midx.c: replace `xcalloc()` with `CALLOC_ARRAY()`
midx.c: remove unnecessary loop condition
midx.c: avoid cruft packs with non-zero `repack --batch-size`
builtin/clone.c: disallow `--local` clones with symlinks
t/lib-submodule-update.sh: allow local submodules
t/t1NNN: allow local submodules
t/2NNNN: allow local submodules
t/t3NNN: allow local submodules
t/t4NNN: allow local submodules
t/t5NNN: allow local submodules
t/t6NNN: allow local submodules
t/t7NNN: allow local submodules
t/t9NNN: allow local submodules
transport: make `protocol.file.allow` be "user" by default
t1092: prepare for changing protocol.file.allow
t2080: prepare for changing protocol.file.allow
t1092: prepare for changing protocol.file.allow
t2080: prepare for changing protocol.file.allow
t3207: prepare for changing protocol.file.allow
t5516: prepare for changing protocol.file.allow
t5537: prepare for changing protocol.file.allow
t7814: prepare for changing protocol.file.allow
t3206: prepare for changing protocol.file.allow
t5537: prepare for changing protocol.file.allow
Git 2.30.6
Git 2.31.5
Git 2.32.4
Git 2.33.5
Git 2.34.5
Git 2.35.5
Git 2.36.3
t7527: prepare for changing protocol.file.allow
Git 2.37.4
Git 2.38.1
midx.c: fix whitespace typo
midx.c: consider annotated tags during bitmap selection
midx.c: instrument MIDX and bitmap generation with trace2 regions
pack-bitmap-write.c: instrument number of reused bitmaps
builtin/repack.c: remove redundant pack-based bitmaps
repack: don't remove .keep packs with `--pack-kept-objects`
builtin/repack.c: pass "out" to `prepare_pack_objects`
builtin/repack.c: pass "cruft_expiration" to `write_cruft_pack`
builtin/repack.c: write cruft packs to arbitrary locations
builtin/repack.c: implement `--expire-to` for storing pruned objects
shortlog: make trailer insertion a noop when appropriate
shortlog: extract `--group` fragment for translation
shortlog: support arbitrary commit format `--group`s
shortlog: extract `shortlog_finish_setup()`
shortlog: implement `--group=author` in terms of `--group=<format>`
shortlog: implement `--group=committer` in terms of `--group=<format>`
apply: reject patches larger than ~1 GiB
Documentation/howto/maintain-git.txt: fix Meta/redo-jch.sh invocation
The ninth batch
Documentation: build redo-jch.sh from master..jch
Documentation: build redo-seen.sh from jch..seen
The tenth batch
The eleventh batch
The twelfth batch
builtin/gc.c: fix use-after-free in maintenance_unregister()
The thirteenth batch
Torsten Bögershausen (1):
diff.c: use utf8_strwidth() to count display width
Victoria Dye (7):
read-cache: avoid misaligned reads in index v4
rebase --update-refs: avoid unintended ref deletion
cache-tree: add perf test comparing update and prime
unpack-trees: add 'skip_cache_tree_update' option
reset: use 'skip_cache_tree_update' option
read-tree: use 'skip_cache_tree_update' option
rebase: use 'skip_cache_tree_update' option
Vincent Bernat (1):
ls-files: fix --ignored and --killed flags in synopsis
Vlad-Stefan Harbuz (1):
Documentation: fix typo
srz_zumix (1):
fsmonitor--daemon: on macOS support symlink
Ævar Arnfjörð Bjarmason (100):
test-lib: have SANITIZE=leak imply TEST_NO_MALLOC_CHECK
CodingGuidelines: update for C99
CodingGuidelines: mention dynamic C99 initializer elements
CodingGuidelines: allow declaring variables in for loops
CodingGuidelines: mention C99 features we can't use
grep.c: remove "extended" in favor of "pattern_expression", fix segfault
CodingGuidelines: recommend against unportable C99 struct syntax
bundle-uri: create "key=value" line parsing
bundle-uri: unit test "key=value" parsing
run-command test helper: use "else if" pattern
run-command API: have "run_processes_parallel{,_tr2}()" return void
run-command tests: use "return", not "exit"
run-command API: make "n" parameter a "size_t"
run-command API: don't fall back on online_cpus()
run-command.c: use designated init for pp_init(), add "const"
run-command API: have run_process_parallel() take an "opts" struct
run-command API: move *_tr2() users to "run_processes_parallel()"
run-command.c: make "struct parallel_processes" const if possible
run-command.c: don't copy *_fn to "struct parallel_processes"
run-command.c: don't copy "ungroup" to "struct parallel_processes"
run-command.c: don't copy "data" to "struct parallel_processes"
run-command.c: use "opts->processes", not "pp->max_processes"
run-command.c: pass "opts" further down, and use "opts->processes"
run-command.c: remove "max_processes", add "const" to signal() handler
tests: assert *.txt SYNOPSIS and -h output
CodingGuidelines: update and clarify command-line conventions
builtin/bundle.c: indent with tabs
bundle: define subcommand -h in terms of command -h
doc SYNOPSIS: don't use ' for subcommands
doc SYNOPSIS: consistently use ' for commands
built-ins: consistently add "\n" between "usage" and options
doc txt & -h consistency: word-wrap
doc txt & -h consistency: fix incorrect alternates syntax
doc txt & -h consistency: add "-z" to cat-file "-h"
doc txt & -h consistency: balance unbalanced "[" and "]"
doc txt & -h consistency: correct padding around "[]()"
stash doc SYNOPSIS & -h: correct padding around "[]()"
doc txt & -h consistency: use "<options>", not "<options>..."
doc SYNOPSIS & -h: use "-" to separate words in labels, not "_"
doc txt & -h consistency: fix mismatching labels
doc txt & -h consistency: add or fix optional "--" syntax
doc txt & -h consistency: make output order consistent
doc txt & -h consistency: add missing options and labels
doc txt & -h consistency: make "rerere" consistent
doc txt & -h consistency: make "read-tree" consistent
doc txt & -h consistency: make "bundle" consistent
doc txt & -h consistency: use "git foo" form, not "git-foo"
doc txt & -h consistency: add missing options
doc txt & -h consistency: make "stash" consistent
doc txt & -h consistency: make "annotate" consistent
doc txt & -h consistency: use "[<label>...]" for "zero or more"
doc txt & -h consistency: make "diff-tree" consistent
doc txt & -h consistency: make "commit" consistent
reflog doc: list real subcommands up-front
worktree: define subcommand -h in terms of command -h
doc txt & -h consistency: make "worktree" consistent
tests: start asserting that *.txt SYNOPSIS matches -h output
tests: assert consistent whitespace in -h output
fsmonitor OSX: compile with DC_SHA1=YesPlease
merge: remove always-the-same "verbose" arguments
hook tests: fix redirection logic error in 96e7225b310
submodule tests: reset "trace.out" between "grep" invocations
run-command tests: test stdout of run_command_parallel()
Makefile + shared.mak: rename and indent $(QUIET_SPATCH_T)
cocci rules: remove unused "F" metavariable from pending rule
Makefile: add ability to TAB-complete cocci *.patch rules
Makefile: have "coccicheck" re-run if flags change
Makefile: split off SPATCH_BATCH_SIZE comment from "cocci" heading
cocci: split off include-less "tests" from SPATCH_FLAGS
cocci: split off "--all-includes" from SPATCH_FLAGS
cocci: make "coccicheck" rule incremental
cocci: optimistically use COMPUTE_HEADER_DEPENDENCIES
Makefile: copy contrib/coccinelle/*.cocci to build/
cocci rules: remove <id>'s from rules that don't need them
cocci: run against a generated ALL.cocci
spatchcache: add a ccache-alike for "spatch"
Makefile: always (re)set DC_SHA1 on fallback
INSTALL: remove discussion of SHA-1 backends
Makefile: correct DC_SHA1 documentation
Makefile: create and use sections for "define" flag listing
Makefile: rephrase the discussion of *_SHA1 knobs
Makefile: document default SHA-256 backend
Makefile: document SHA-1 and SHA-256 default and selection order
Makefile & test-tool: replace "DC_SHA1" variable with a "define"
Makefile: document default SHA-1 backend on OSX
Makefile: discuss SHAttered in *_SHA{1,256} discussion
submodule--helper: move "config" to a test-tool
submodule tests: add tests for top-level flag output
submodule--helper: fix a memory leak in "status"
submodule tests: test for a "foreach" blind-spot
submodule.c: refactor recursive block out of absorb function
submodule API & "absorbgitdirs": remove "----recursive" option
submodule--helper: remove --prefix from "absorbgitdirs"
submodule--helper: drop "update --prefix <pfx>" for "-C <pfx> update"
submodule--helper: use OPT_SUBCOMMAND() API
revisions API: extend the nascent REV_INFO_INIT macro
t7610: fix flaky timeout issue, don't clone from example.com
Makefile: don't create a ".build/.build/" for cocci, fix output
maintenance --unregister: fix uninit'd data use & -Wdeclaration-after-statement
t7610: use "file:///dev/null", not "/dev/null", fixes MinGW
Đoàn Trần Công Danh (8):
CodingGuidelines: allow grep -E
t: remove \{m,n\} from BRE grep usage
t: convert egrep usage to "grep -E"
t: convert fgrep usage to "grep -F"
Makefile: clarify runtime relative gitexecdir
bisect--helper: remove unused options
bisect--helper: move all subcommands into their own functions
bisect--helper: parse subcommand with OPT_SUBCOMMAND
^ permalink raw reply [relevance 3%]
* [PATCH 14/17] sequencer.c: fix sequencer_continue() leak
@ 2022-11-03 17:06 2% ` Ævar Arnfjörð Bjarmason
0 siblings, 0 replies; 200+ results
From: Ævar Arnfjörð Bjarmason @ 2022-11-03 17:06 UTC (permalink / raw)
To: git
Cc: Junio C Hamano, Phillip Wood, Jeff King, Derrick Stolee,
Elijah Newren, Ævar Arnfjörð Bjarmason
Fix a leak in the recent da1d63363f1 (rebase --merge: fix reflog when
continuing, 2022-10-12), per [1] the author was under the impression
that by calling "setenv()" the C library took possession of the
string, but we need to free() it.
As [1] also notes there's upcoming changes to do some larger rewrite
of these codepaths in sequencer.c, but let's first do this much
smaller and isolated leak fix.
1. https://lore.kernel.org/git/86699708-d631-fb49-482c-af27204a3570@dunelm.org.uk/
Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
---
sequencer.c | 2 ++
1 file changed, 2 insertions(+)
diff --git a/sequencer.c b/sequencer.c
index 14ca0af2ade..3095d0d2b3b 100644
--- a/sequencer.c
+++ b/sequencer.c
@@ -5069,10 +5069,12 @@ int sequencer_continue(struct repository *r, struct replay_opts *opts)
previous_reflog_action = xstrdup(getenv(GIT_REFLOG_ACTION));
setenv(GIT_REFLOG_ACTION, reflog_message(opts, "continue", NULL), 1);
if (commit_staged_changes(r, opts, &todo_list)) {
+ free(previous_reflog_action);
res = -1;
goto release_todo_list;
}
setenv(GIT_REFLOG_ACTION, previous_reflog_action, 1);
+ free(previous_reflog_action);
} else if (!file_exists(get_todo_path(opts)))
return continue_single_pick(r, opts);
else if ((res = read_populate_todo(r, &todo_list, opts)))
--
2.38.0.1451.g86b35f4140a
^ permalink raw reply related [relevance 2%]
* What's cooking in git.git (Oct 2022, #09; Mon, 31)
@ 2022-10-31 5:31 3% Taylor Blau
0 siblings, 0 replies; 200+ results
From: Taylor Blau @ 2022-10-31 5:31 UTC (permalink / raw)
To: git
What's cooking in git.git (Oct 2022, #09; Mon, 31)
--------------------------------------------------
Here are the topics that have been cooking in my tree. Commits
prefixed with '+' are in 'next' (being in 'next' is a sign that a
topic is stable enough to be used and are candidate to be in a future
release). Commits prefixed with '-' are only in 'seen', and aren't
considered "accepted" at all. A topic without enough support may be
discarded after a long period of no activity.
This is the first pushout from the interim maintainer. Topics which
were marked as ready for 'master' have been merged, and 'next' is now
empty. A number of topics have been marked for 'next' which will start
graduating in the next round.
Please point out any glitches you see along the way. If a topic you
sent doesn't appear here, please nudge me or resend it.
Copies of the source code to Git live in many repositories, and the
following is a list of the ones I push into or their mirrors. Some
repositories have only a subset of branches.
With maint, master, next, seen, todo:
https://github.com/git/git/
The following mirrors are currently out-of-date while the usual
maintainer is offline.
git://git.kernel.org/pub/scm/git/git.git/
git://repo.or.cz/alt-git.git/
https://kernel.googlesource.com/pub/scm/git/git/
https://gitlab.com/git-vcs/git/
With all the integration branches and topics broken out:
https://github.com/ttaylorr/git/
Even though the preformatted documentation in HTML and man format
are not sources, they are typically published in these repositories
for convenience (replace "htmldocs" with "manpages" for the manual
pages):
git://git.kernel.org/pub/scm/git/git-htmldocs.git/
https://github.com/gitster/git-htmldocs.git/
...but these and the release tarballs below are similarly out-of-date:
https://www.kernel.org/pub/software/scm/git/
--------------------------------------------------
[Graduated to 'master']
* ds/bundle-uri-3 (2022-10-12) 13 commits
(merged to 'next' on 2022-10-28 at 9d9092b4cc)
+ bundle-uri: suppress stderr from remote-https
+ bundle-uri: quiet failed unbundlings
+ bundle: add flags to verify_bundle()
+ bundle-uri: fetch a list of bundles
+ bundle: properly clear all revision flags
+ bundle-uri: limit recursion depth for bundle lists
+ bundle-uri: parse bundle list in config format
+ bundle-uri: unit test "key=value" parsing
+ bundle-uri: create "key=value" line parsing
+ bundle-uri: create base key-value pair parsing
+ bundle-uri: create bundle_list struct and helpers
+ bundle-uri: use plain string in find_temp_filename()
+ Merge branch 'ds/bundle-uri-clone' into ds/bundle-uri-3
Define the logical elements of a "bundle list", data structure to
store them in-core, format to transfer them, and code to parse
them.
source: <pull.1333.v5.git.1665579160.gitgitgadget@gmail.com>
* en/merge-tree-sequence (2022-10-22) 2 commits
(merged to 'next' on 2022-10-28 at 31459cd5a8)
+ merge-tree: support multiple batched merges with --stdin
+ merge-tree: update documentation for differences in -z output
"git merge-tree --stdin" is a new way to request a series of merges
and report the merge results.
source: <pull.1361.git.1666488485.gitgitgadget@gmail.com>
* en/ort-dir-rename-and-symlink-fix (2022-10-22) 1 commit
(merged to 'next' on 2022-10-27 at 56f1e5222d)
+ merge-ort: fix bug with dir rename vs change dir to symlink
Merging a branch with directory renames into a branch that changes
the directory to a symlink was mishandled by the ort merge
strategy, which has been corrected.
source: <pull.1391.git.1666465450590.gitgitgadget@gmail.com>
* jc/doc-fsck-msgids (2022-10-25) 4 commits
(merged to 'next' on 2022-10-28 at 3c00edabf8)
+ Documentation: add lint-fsck-msgids
+ fsck: document msg-id
+ fsck: remove the unused MISSING_TREE_OBJECT
+ fsck: remove the unused BAD_TAG_OBJECT
Add documentation for message IDs in fsck error messages.
source: <20221025224224.2352979-1-gitster@pobox.com>
* jh/trace2-timers-and-counters (2022-10-24) 8 commits
(merged to 'next' on 2022-10-26 at e4933e2658)
+ trace2: add global counter mechanism
+ trace2: add stopwatch timers
+ trace2: convert ctx.thread_name from strbuf to pointer
+ trace2: improve thread-name documentation in the thread-context
+ trace2: rename the thread_name argument to trace2_thread_start
+ api-trace2.txt: elminate section describing the public trace2 API
+ tr2tls: clarify TLS terminology
+ trace2: use size_t alloc,nr_open_regions in tr2tls_thread_ctx
Two new facilities, "timer" and "counter", are introduced to the
trace2 API.
source: <pull.1373.v4.git.1666618868.gitgitgadget@gmail.com>
* jk/repack-tempfile-cleanup (2022-10-23) 6 commits
(merged to 'next' on 2022-10-26 at e706eb120c)
+ t7700: annotate cruft-pack failure with ok=sigpipe
+ repack: drop remove_temporary_files()
+ repack: use tempfiles for signal cleanup
+ repack: expand error message for missing pack files
+ repack: populate extension bits incrementally
+ repack: convert "names" util bitfield to array
The way "git repack" creared temporary files when it received a
signal was prone to deadlocking, which has been corrected.
source: <Y1M3fVnixJHvKiSg@coredump.intra.peff.net>
* jr/embargoed-releases-doc (2022-10-24) 1 commit
(merged to 'next' on 2022-10-27 at c000502eaa)
+ embargoed releases: also describe the git-security list and the process
The role the security mailing list plays in an embargoed release
has been documented.
source: <pull.1345.v4.git.1666649239302.gitgitgadget@gmail.com>
* jt/skipping-negotiator-wo-recursion (2022-10-25) 1 commit
(merged to 'next' on 2022-10-28 at 4a2588ab9e)
+ negotiator/skipping: avoid stack overflow
Rewrite a deep recursion in the skipping negotiator to use a loop
with on-heap prio queue to avoid stack wastage.
source: <20221025232934.1504445-1-jonathantanmy@google.com>
* jz/patch-id (2022-10-24) 6 commits
(merged to 'next' on 2022-10-24 at 1ac3b46fbe)
+ builtin: patch-id: remove unused diff-tree prefix
+ builtin: patch-id: add --verbatim as a command mode
+ patch-id: fix patch-id for mode changes
+ builtin: patch-id: fix patch-id with binary diffs
+ patch-id: use stable patch-id for rebases
+ patch-id: fix stable patch id for binary / header-only
A new "--include-whitespace" option is added to "git patch-id", and
existing bugs in the internal patch-id logic that did not match
what "git patch-id" produces have been corrected.
source: <pull.1359.v5.git.1666642064.gitgitgadget@gmail.com>
* pb/subtree-split-and-merge-after-squashing-tag-fix (2022-10-21) 9 commits
(merged to 'next' on 2022-10-27 at 4f2134dd87)
+ subtree: fix split after annotated tag was squashed merged
+ subtree: fix squash merging after annotated tag was squashed merged
+ subtree: process 'git-subtree-split' trailer in separate function
+ subtree: use named variables instead of "$@" in cmd_pull
+ subtree: define a variable before its first use in 'find_latest_squash'
+ subtree: prefix die messages with 'fatal'
+ subtree: add 'die_incompatible_opt' function to reduce duplication
+ subtree: use 'git rev-parse --verify [--quiet]' for better error messages
+ test-lib-functions: mark 'test_commit' variables as 'local'
A bugfix to "git subtree" in its split and merge features.
source: <pull.1390.git.1666365219.gitgitgadget@gmail.com>
* pw/rebase-keep-base-fixes (2022-10-17) 8 commits
(merged to 'next' on 2022-10-27 at 802359afac)
+ rebase --keep-base: imply --no-fork-point
+ rebase --keep-base: imply --reapply-cherry-picks
+ rebase: factor out branch_base calculation
+ rebase: rename merge_base to branch_base
+ rebase: store orig_head as a commit
+ rebase: be stricter when reading state files containing oids
+ t3416: set $EDITOR in subshell
+ t3416: tighten two tests
(this branch is used by pw/rebase-reflog-fixes.)
"git rebase --keep-base" used to discard the commits that are
already cherry-picked to the upstream, even when "keep-base" meant
that the base, on top of which the history is being rebuilt, does
not yet include these cherry-picked commits. The --keep-base
option now implies --reapply-cherry-picks and --no-fork-point
options.
source: <pull.1323.v4.git.1666012665.gitgitgadget@gmail.com>
* pw/rebase-reflog-fixes (2022-10-17) 9 commits
(merged to 'next' on 2022-10-27 at 60738821ef)
+ rebase: cleanup action handling
+ rebase --abort: improve reflog message
+ rebase --apply: make reflog messages match rebase --merge
+ rebase --apply: respect GIT_REFLOG_ACTION
+ rebase --merge: fix reflog message after skipping
+ rebase --merge: fix reflog when continuing
+ t3406: rework rebase reflog tests
+ rebase --apply: remove duplicated code
+ Merge branch 'pw/rebase-keep-base-fixes' into pw/rebase-reflog-fixes
(this branch uses pw/rebase-keep-base-fixes.)
Fix some bugs in the reflog messages when rebasing and changes the
reflog messages of "rebase --apply" to match "rebase --merge" with
the aim of making the reflog easier to parse.
source: <pull.1150.v3.git.1665567312.gitgitgadget@gmail.com>
* rj/branch-copy-rename-error-codepath-cleanup (2022-10-26) 1 commit
(merged to 'next' on 2022-10-27 at f01a4ff619)
+ branch: error copying or renaming a detached HEAD
Code simplification.
source: <0ac8cd48-08d7-9bdd-b074-c8d5ded522f6@gmail.com>
* rj/branch-do-not-exit-with-minus-one-status (2022-10-26) 1 commit
(merged to 'next' on 2022-10-27 at 061f63d4e2)
+ branch: error code with --edit-description
"git branch --edit-description" can exit with status -1 which is
not a good practice; it learned to use 1 as everybody else instead.
source: <b0f96b35-4e69-a889-bcdf-e0b40b89384f@gmail.com>
* rs/absorb-git-dir-simplify (2022-10-23) 1 commit
(merged to 'next' on 2022-10-26 at 3d23cfd399)
+ submodule: use strvec_pushf() for --super-prefix
Code simplification by using strvec_pushf() instead of building an
argument in a separate strbuf.
source: <7a4e2fc6-3e01-5683-2be5-13b7e67c7fe5@web.de>
* sd/doc-smtp-encryption (2022-10-12) 1 commit
(merged to 'next' on 2022-10-26 at b984763a1b)
+ docs: git-send-email: difference between ssl and tls smtp-encryption
Will merge to 'master'.
source: <20221012150619.12877-1-sndanailov@wired4ever.net>
* sg/stable-docdep (2022-10-21) 1 commit
(merged to 'next' on 2022-10-26 at 68432e1b2c)
+ Documentation/build-docdep.perl: generate sorted output
Make sure generated dependency file is stably sorted to help
developers debugging their build issues.
source: <20221021102950.539148-1-szeder.dev@gmail.com>
* tb/cap-patch-at-1gb (2022-10-25) 1 commit
(merged to 'next' on 2022-10-27 at f0b4f9c12a)
+ apply: reject patches larger than ~1 GiB
"git apply" limits its input to a bit less than 1 GiB.
source: <70f5763834dff373a5573a99ec4cdfa36cadf34c.1666722251.git.me@ttaylorr.com>
* tb/midx-cleanup-fix (2022-10-25) 1 commit
- midx.c: clear auxiliary MIDX files first
The order in which multi-pack-index and its associated files are
dropped has been tweaked to make it safer for concurrent users.
Under discussion, but leaning to negative..
cf. <143a588a-c98b-733b-2b23-34a87ca89431@github.com>
source: <bf36093cd6d7ac83b16241b0199b3a8c904e6774.1666722316.git.me@ttaylorr.com>
* tb/shortlog-group (2022-10-24) 7 commits
(merged to 'next' on 2022-10-26 at 76e64a6036)
+ shortlog: implement `--group=committer` in terms of `--group=<format>`
+ shortlog: implement `--group=author` in terms of `--group=<format>`
+ shortlog: extract `shortlog_finish_setup()`
+ shortlog: support arbitrary commit format `--group`s
+ shortlog: extract `--group` fragment for translation
+ shortlog: make trailer insertion a noop when appropriate
+ shortlog: accept `--date`-related options
"git shortlog" learned to group by the "format" string.
source: <cover.1666637725.git.me@ttaylorr.com>
--------------------------------------------------
[New Topics]
* ab/cmake-nix-and-ci (2022-10-30) 11 commits
- CI: add a "linux-cmake-test" to run cmake & ctest on linux
- cmake: copy over git-p4.py for t983[56] perforce test
- cmake: support GIT_TEST_OPTS, abstract away WIN32 defaults
- Makefile + cmake: use environment, not GIT-BUILD-DIR
- test-lib.sh: support a "GIT_TEST_BUILD_DIR"
- cmake: set "USE_LIBPCRE2" in "GIT-BUILD-OPTIONS" for test-lib.sh
- cmake & test-lib.sh: add a $GIT_SOURCE_DIR variable
- cmake: chmod +x the bin-wrappers/* & SCRIPT_{SH,PERL} & git-p4
- cmake: don't copy chainlint.pl to build directory
- cmake: update instructions for portable CMakeLists.txt
- cmake: don't "mkdir -p" and "cd" in build instructions
Fix assorted issues with CTest on *nix machines.
Waiting for review.
source: <cover-v2-00.11-00000000000-20221027T032622Z-avarab@gmail.com>
* ab/make-bin-wrappers (2022-10-30) 3 commits
- Makefile: simplify $(test_bindir_programs) rule by splitting it up
- Makefile: define "TEST_{PROGRAM,OBJS}" variables earlier
- Makefile: factor sed-powered '#!/bin/sh' munging into a variable
Resolve issues with the bin-wrappers/% rules where "make
bin-wrappers/git" would generate the script but not "git" itself.
Waiting for review.
source: <cover-v2-0.3-00000000000-20221026T143533Z-avarab@gmail.com>
* ab/misc-hook-submodule-run-command (2022-10-31) 3 commits
- run-command tests: test stdout of run_command_parallel()
- submodule tests: reset "trace.out" between "grep" invocations
- hook tests: fix redirection logic error in 96e7225b310
Various test updates.
Waiting for review.
source: <cover-0.3-00000000000-20221029T025520Z-avarab@gmail.com>
* do/modernize-t7001 (2022-10-31) 1 commit
- t7001-mv.sh:modernizing test script using function
Modernize test script to avoid "test -f" and friends.
Will merge to 'next'.
source: <pull.1372.git.git.1667150441883.gitgitgadget@gmail.com>
* kz/merge-tree-merge-base (2022-10-29) 1 commit
- merge-tree.c: add --merge-base=<commit> option
"merge-tree" learns a new `--merge-base` option.
Waiting for review.
source: <pull.1397.v3.git.1667014975042.gitgitgadget@gmail.com>
* mh/password-can-be-pat (2022-10-30) 1 commit
- Mention that password could be a personal access token.
Documentation update to git-credential(1).
Will merge to 'next'.
source: <pull.1396.git.1666845947898.gitgitgadget@gmail.com>
* po/pretty-hard-trunc (2022-10-30) 1 commit
- pretty-formats: add hard truncation, without ellipsis, options
Add a new pretty format which truncates without ellipsis.
Missing test coverage.
source: <20221030185614.3842-1-philipoakley@iee.email>
* rr/long-status-advice (2022-10-31) 1 commit
- status: long status advice adapted to recent capabilities
The advice message emitted by a slow "status" run is amended to
mention fsmonitor.
Waiting for reviewer feedback on the updated round.
source: <pull.1384.v2.git.1667002005494.gitgitgadget@gmail.com>
* rs/archive-filter-error-once (2022-10-30) 1 commit
- archive-tar: report filter start error only once
"git archive" mistakenly complained twice about a missing executable,
which has been corrected.
Will merge to 'next'.
source: <c51b72e5-1c32-65e4-6faa-04693b623e2e@web.de>
--------------------------------------------------
[Stalled]
* cw/submodule-status-in-parallel (2022-10-20) 7 commits
. diff-lib: parallelize run_diff_files for submodules
. diff-lib: refactor match_stat_with_submodule
. submodule: move status parsing into function
. submodule: strbuf variable rename
. run-command: add hide_output to run_processes_parallel_opts
. run-command: add pipe_output_fn to run_processes_parallel_opts
. Merge branch 'ab/run-hook-api-cleanup' into cw/submodule-status-in-parallel
Allow the internal "diff-files" engine to run "how has this
submodule changed?" in parallel to speed up "git status".
Breaks winVS test?
cf. <https://github.com/git/git/actions/runs/3298596454/jobs/5441029092>
source: <20221011232604.839941-1-calvinwan@google.com>
* js/bisect-in-c (2022-08-30) 17 commits
. bisect: no longer try to clean up left-over `.git/head-name` files
. bisect: remove Cogito-related code
. Turn `git bisect` into a full built-in
. bisect: move even the command-line parsing to `bisect--helper`
. bisect--helper: make `state` optional
. bisect--helper: calling `bisect_state()` without an argument is a bug
. bisect: avoid double-quoting when printing the failed command
. bisect run: fix the error message
. bisect: verify that a bogus option won't try to start a bisection
. bisect--helper: migrate to OPT_SUBCOMMAND()
. bisect--helper: make the order consistently `argc, argv`
. bisect--helper: make `terms` an explicit singleton
. bisect--helper: simplify exit code computation
. bisect--helper: really retire `--bisect-autostart`
. bisect--helper: really retire --bisect-next-check
. bisect--helper: retire the --no-log option
. Merge branch 'sg/parse-options-subcommand' into js/bisect-in-c
Final bits of "git bisect.sh" have been rewritten in C.
Needs review.
cf. <xmqqv8pr8903.fsf@gitster.g>
source: <pull.1132.v6.git.1661885419.gitgitgadget@gmail.com>
* od/ci-use-checkout-v3-when-applicable (2022-10-10) 2 commits
. ci(main): linux32 uses actions/checkout@v2
. ci(main): upgrade actions/checkout to v3
Attempt to update GitHub CI to use actions/checkout@v3
Expecting a reroll.
Seems to break the CI completely.
source: <pull.1354.git.git.1665388136.gitgitgadget@gmail.com>
* ed/fsmonitor-inotify (2022-10-14) 7 commits
. fsmonitor: update doc for Linux
. fsmonitor: test updates
. fsmonitor: enable fsmonitor for Linux
. fsmonitor: implement filesystem change listener for Linux
. fsmonitor: determine if filesystem is local or remote
. fsmonitor: prepare to share code between Mac OS and Linux
. Merge branch 'ed/fsmonitor-on-networked-macos' into ed/fsmonitor-inotify
Bundled fsmonitor for Linux using inotify API.
Needs review.
Occasional breakages of t7527.16?
source: <pull.1352.v2.git.git.1665783944.gitgitgadget@gmail.com>
* ag/merge-strategies-in-c (2022-08-10) 14 commits
. sequencer: use the "octopus" strategy without forking
. sequencer: use the "resolve" strategy without forking
. merge: use the "octopus" strategy without forking
. merge: use the "resolve" strategy without forking
. merge-octopus: rewrite in C
. merge-recursive: move better_branch_name() to merge.c
. merge-resolve: rewrite in C
. merge-one-file: rewrite in C
. update-index: move add_cacheinfo() to read-cache.c
. merge-index: add a new way to invoke `git-merge-one-file'
. merge-index: drop the index
. merge-index: libify merge_one_path() and merge_all()
. t6060: add tests for removed files
. t6060: modify multiple files to expose a possible issue with merge-index
An attempt to rewrite remaining merge strategies from shell to C.
Needs more work.
At the minimum, we should lose 11/14 and possibly 08/14.
cf. <xmqq7d36vfur.fsf@gitster.g>
source: <20220809185429.20098-1-alban.gruin@gmail.com>
* es/doc-creation-factor-fix (2022-07-28) 2 commits
. range-diff: clarify --creation-factor=<factor>
. format-patch: clarify --creation-factor=<factor>
Expecting a reroll by somebody more familiar with the logic
cf. <xmqqo7wfix7p.fsf@gitster.g>
source: <7229p500-p2r4-on87-6802-8o90s36rr3s4@tzk.qr>
* cw/remote-object-info (2022-08-13) 7 commits
. SQUASH???
. cat-file: add remote-object-info to batch-command
. transport: add client support for object-info
. serve: advertise object-info feature
. protocol-caps: initialization bug fix
. fetch-pack: move fetch initialization
. fetch-pack: refactor packet writing
A client component to talk with the object-info endpoint.
Expecting a reroll.
Under SANITIZE=address, t1006-cat-file.sh finds a breakage.
cf. <20220728230210.2952731-1-calvinwan@google.com>
cf. <CAFySSZDvgwbbHCHfyuaqX3tKsr-GjJ9iihygg6rNNe46Ys7_EA@mail.gmail.com>
source: <20220728230210.2952731-1-calvinwan@google.com>
--------------------------------------------------
[Cooking]
* ab/config-multi-and-nonbool (2022-10-27) 10 commits
- for-each-repo: with bad config, don't conflate <path> and <cmd>
- config API: add "string" version of *_value_multi(), fix segfaults
- config tests: add "NULL" tests for *_get_value_multi()
- config API: add and use "lookup_value" functions
- builtin/gc.c: use "unsorted_string_list_has_string()" where appropriate
- string-list API: make has_string() and list_lookup() "const"
- string-list API: mark "struct_string_list" to "for_each_string_list" const
- config API: mark *_multi() with RESULT_MUST_BE_USED
- for-each-repo: error on bad --config
- config API: have *_multi() return an "int" and take a "dest"
A mixed bag of config API updates.
Expecting a reroll.
cf. <221026.86pmeebcj9.gmgdl@evledraar.gmail.com>
source: <cover-00.10-00000000000-20221026T151328Z-avarab@gmail.com>
* ab/sha-makefile-doc (2022-10-26) 9 commits
- Makefile: discuss SHAttered in *_SHA{1,256} discussion
- Makefile: document default SHA-1 backend on OSX
- Makefile: document SHA-1 and SHA-256 default and selection order
- Makefile: document default SHA-256 backend
- Makefile: rephrase the discussion of *_SHA1 knobs
- Makefile: create and use sections for "define" flag listing
- Makefile: correct DC_SHA1 documentation
- INSTALL: remove discussion of SHA-1 backends
- Makefile: always (re)set DC_SHA1 on fallback
Makefile comments updates and reordering to clarify knobs used to
choose SHA implementations.
Will merge to 'next'?
source: <cover-v4-0.9-00000000000-20221026T145255Z-avarab@gmail.com>
* rs/no-more-run-command-v (2022-10-30) 12 commits
- replace and remove run_command_v_opt()
- replace and remove run_command_v_opt_cd_env_tr2()
- replace and remove run_command_v_opt_tr2()
- replace and remove run_command_v_opt_cd_env()
- use child_process members "args" and "env" directly
- use child_process member "args" instead of string array variable
- sequencer: simplify building argument list in do_exec()
- bisect--helper: factor out do_bisect_run()
- bisect: simplify building "checkout" argument list
- am: simplify building "show" argument list
- run-command: fix return value comment
- merge: remove always-the-same "verbose" arguments
Simplify the run-command API.
Will merge to 'next'.
source: <ea061164-b36b-485c-963f-8c13e813a47e@web.de>
* tb/howto-using-redo-script (2022-10-26) 1 commit
- Documentation/howto/maintain-git.txt: fix Meta/redo-jch.sh invocation
Doc update.
Will merge to 'next'.
source: <4ba057094ae6b1bd5c18583f23f7f99232034c72.1666815325.git.me@ttaylorr.com>
* ps/receive-use-only-advertised (2022-10-28) 3 commits
- SQUASH - leakfix
- receive-pack: use advertised reference tips to inform connectivity check
- connected: allow supplying different view of reachable objects
"git receive-pack" used to use all the local refs as the boundary
for checking connectivity of the data "git push" sent, but now it
uses only the refs that it advertised to the pusher. In a
repository with the .hideRefs configuration, this reduces the
resource needed to perform the check, and also forces the pusher to
prove they have all objects that are necessary to complete the
history on top of only the history available to them.
Expecting a reroll.
cf. <221028.86bkpw805n.gmgdl@evledraar.gmail.com>
cf. <xmqqr0yrizqm.fsf@gitster.g>
source: <cover.1666967670.git.ps@pks.im>
* jc/set-gid-bit-less-aggressively (2022-10-28) 1 commit
- adjust_shared_perm(): leave g+s alone when the group does not matter
The adjust_shared_perm() helper function learned to refrain from
setting the "g+s" bit on directories when it is not necessary.
Will merge to 'next'.
source: <xmqqr0yrhco6.fsf@gitster.g>
* gc/submodule-clone-update-with-branches (2022-10-30) 8 commits
- clone, submodule update: create and check out branches
- submodule--helper: remove update_data.suboid
- submodule update: refactor update targets
- submodule: return target of submodule symref
- t5617: drop references to remote-tracking branches
- submodule--helper clone: create named branch
- repo-settings: add submodule_propagate_branches
- clone: teach --detach option
"git clone --recurse-submodules" and "git submodule update" learns
to honor the "propagete branches" option.
Waiting for review.
source: <pull.1321.v3.git.git.1666988096.gitgitgadget@gmail.com>
* es/mark-gc-cruft-as-experimental (2022-10-26) 2 commits
- config: let feature.experimental imply gc.cruftPacks=true
- gc: add tests for --cruft and friends
Enable gc.cruftpacks by default for those who opt into
feature.experimental setting.
Will merge to 'next'.
source: <cover.1666819953.git.me@ttaylorr.com>
* pw/config-int-parse-fixes (2022-10-22) 3 commits
- git_parse_signed(): avoid integer overflow
- config: require at least one digit when parsing numbers
- git_parse_unsigned: reject negative values
Assorted fixes of parsing end-user input as integers.
Expecting a reroll to add test coverage.
cf. <Y1L+Qv+cs1bjqjK9@coredump.intra.peff.net>
source: <pull.1389.git.1666359915.gitgitgadget@gmail.com>
* sa/cat-file-mailmap (2022-10-21) 1 commit
- doc/cat-file: allow --use-mailmap for --batch options
Doc updates.
Waiting for review response.
source: <20221021103442.202759-1-siddharthasthana31@gmail.com>
* tb/repack-expire-to (2022-10-24) 4 commits
- builtin/repack.c: implement `--expire-to` for storing pruned objects
- builtin/repack.c: write cruft packs to arbitrary locations
- builtin/repack.c: pass "cruft_expiration" to `write_cruft_pack`
- builtin/repack.c: pass "out" to `prepare_pack_objects`
"git repack" learns to send cruft objects out of the way into
packfiles outside the repository.
Waiting for review.
source: <cover.1666636974.git.me@ttaylorr.com>
* cc/filtered-repack (2022-10-25) 2 commits
- repack: add --filter=<filter-spec> option
- pack-objects: allow --filter without --stdout
"git repack" learns to discard objects that ought to be retrievable
again from the promissor remote.
Needs review.
source: <20221025122856.20204-1-christian.couder@gmail.com>
* al/trace2-clearing-skip-worktree (2022-10-28) 2 commits
- SQUASH???
- index: add trace2 region for clear skip worktree
Add trace2 counters to the region to clear skip worktree bits in a
sparse checkout.
Expecting a reroll?
source: <pull.1368.v2.git.git.1666917961644.gitgitgadget@gmail.com>
* po/glossary-around-traversal (2022-10-30) 4 commits
- glossary: add reachability bitmap description
- glossary: add "commit graph" description
- doc: use 'object database' not ODB or abbreviation
- doc: use "commit-graph" hyphenation consistently
The glossary entries for "commit-graph file" and "reachability
bitmap" have been added.
Will merge to 'next'.
source: <20221029164112.2097-1-philipoakley@iee.email>
* mc/credential-helper-auth-headers (2022-10-21) 6 commits
- t5556-http-auth: add test for HTTP auth hdr logic
- http: set specific auth scheme depending on credential
- http: move proactive auth to first slot creation
- http: store all request headers on active_request_slot
- credential: add WWW-Authenticate header to cred requests
- http: read HTTP WWW-Authenticate response headers
Extending credential helper protocol.
Needs review.
source: <pull.1352.v2.git.1666372083.gitgitgadget@gmail.com>
* hl/archive-recursive (2022-10-19) 10 commits
- fixup! archive: add tests for git archive --recurse-submodules
- archive: add tests for git archive --recurse-submodules
- archive: add --recurse-submodules to git-archive command
- archive: remove global repository from archive_args
- archive: pass repo objects to write_archive handlers
- tree: add repository parameter to read_tree_fn_t
- tree: handle submodule case for read_tree_at properly
- tree: increase test coverage for tree.c
- tree: update cases to use repo_ tree methods
- tree: do not use the_repository for tree traversal methods.
"git archive" has been taught "--recurse-submodules" option to
create a tarball that includes contents from submodules.
Expecting a reroll.
Seems to break win+VS test(8).
cf. https://github.com/git/git/actions/runs/3293333066 whose only
difference from https://github.com/git/git/actions/runs/3293553109
is the inclusion of this topic.
source: <pull.1359.v3.git.git.1665973401.gitgitgadget@gmail.com>
* en/sparse-checkout-design (2022-10-08) 1 commit
- sparse-checkout.txt: new document with sparse-checkout directions
Design doc.
Needs review.
source: <pull.1367.v3.git.1665269538608.gitgitgadget@gmail.com>
* pw/test-todo (2022-10-06) 3 commits
- test_todo: allow [verbose] test as the command
- test_todo: allow [!] grep as the command
- tests: add test_todo() to mark known breakages
RFC for test framework improvement.
Needs review.
source: <pull.1374.git.1665068476.gitgitgadget@gmail.com>
* ab/coccicheck-incremental (2022-10-26) 12 commits
- spatchcache: add a ccache-alike for "spatch"
- cocci: run against a generated ALL.cocci
- cocci rules: remove <id>'s from rules that don't need them
- cocci: optimistically use COMPUTE_HEADER_DEPENDENCIES
- cocci: make "coccicheck" rule incremental
- cocci: split off "--all-includes" from SPATCH_FLAGS
- cocci: split off include-less "tests" from SPATCH_FLAGS
- Makefile: split off SPATCH_BATCH_SIZE comment from "cocci" heading
- Makefile: have "coccicheck" re-run if flags change
- Makefile: add ability to TAB-complete cocci *.patch rules
- cocci rules: remove unused "F" metavariable from pending rule
- Makefile + shared.mak: rename and indent $(QUIET_SPATCH_T)
"make coccicheck" is time consuming. It has been made to run more
incrementally.
Will merge to 'next'?
source: <cover-v4-00.12-00000000000-20221026T141005Z-avarab@gmail.com>
^ permalink raw reply [relevance 3%]
* What's cooking in git.git (Oct 2022, #08; Fri, 28)
@ 2022-10-28 22:51 3% Junio C Hamano
0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2022-10-28 22:51 UTC (permalink / raw)
To: git
Here are the topics that have been cooking in my tree. Commits
prefixed with '+' are in 'next' (being in 'next' is a sign that a
topic is stable enough to be used and are candidate to be in a future
release). Commits prefixed with '-' are only in 'seen', and aren't
considered "accepted" at all. A topic without enough support may be
discarded after a long period of no activity.
Starting from next week (week #4---see https://tinyurl.com/gitCal),
we'll try a mini "bus factor" exercise, where I will disappear from
the list for a few weeks. See the previous issue of this report
for details: https://lore.kernel.org/git/xmqqwn8mh1di.fsf@gitster.g/
Copies of the source code to Git live in many repositories, and the
following is a list of the ones I push into or their mirrors. Some
repositories have only a subset of branches.
With maint, master, next, seen, todo:
git://git.kernel.org/pub/scm/git/git.git/
git://repo.or.cz/alt-git.git/
https://kernel.googlesource.com/pub/scm/git/git/
https://github.com/git/git/
https://gitlab.com/git-vcs/git/
With all the integration branches and topics broken out:
https://github.com/gitster/git/
Even though the preformatted documentation in HTML and man format
are not sources, they are published in these repositories for
convenience (replace "htmldocs" with "manpages" for the manual
pages):
git://git.kernel.org/pub/scm/git/git-htmldocs.git/
https://github.com/gitster/git-htmldocs.git/
Release tarballs are available at:
https://www.kernel.org/pub/software/scm/git/
--------------------------------------------------
[Graduated to 'master']
* ab/doc-synopsis-and-cmd-usage (2022-10-13) 34 commits
(merged to 'next' on 2022-10-21 at c6d632ac1a)
+ tests: assert consistent whitespace in -h output
+ tests: start asserting that *.txt SYNOPSIS matches -h output
+ doc txt & -h consistency: make "worktree" consistent
+ worktree: define subcommand -h in terms of command -h
+ reflog doc: list real subcommands up-front
+ doc txt & -h consistency: make "commit" consistent
+ doc txt & -h consistency: make "diff-tree" consistent
+ doc txt & -h consistency: use "[<label>...]" for "zero or more"
+ doc txt & -h consistency: make "annotate" consistent
+ doc txt & -h consistency: make "stash" consistent
+ doc txt & -h consistency: add missing options
+ doc txt & -h consistency: use "git foo" form, not "git-foo"
+ doc txt & -h consistency: make "bundle" consistent
+ doc txt & -h consistency: make "read-tree" consistent
+ doc txt & -h consistency: make "rerere" consistent
+ doc txt & -h consistency: add missing options and labels
+ doc txt & -h consistency: make output order consistent
+ doc txt & -h consistency: add or fix optional "--" syntax
+ doc txt & -h consistency: fix mismatching labels
+ doc SYNOPSIS & -h: use "-" to separate words in labels, not "_"
+ doc txt & -h consistency: use "<options>", not "<options>..."
+ stash doc SYNOPSIS & -h: correct padding around "[]()"
+ doc txt & -h consistency: correct padding around "[]()"
+ doc txt & -h consistency: balance unbalanced "[" and "]"
+ doc txt & -h consistency: add "-z" to cat-file "-h"
+ doc txt & -h consistency: fix incorrect alternates syntax
+ doc txt & -h consistency: word-wrap
+ built-ins: consistently add "\n" between "usage" and options
+ doc SYNOPSIS: consistently use ' for commands
+ doc SYNOPSIS: don't use ' for subcommands
+ bundle: define subcommand -h in terms of command -h
+ builtin/bundle.c: indent with tabs
+ CodingGuidelines: update and clarify command-line conventions
+ tests: assert *.txt SYNOPSIS and -h output
The short-help text shown by "git cmd -h" and the synopsis text
shown at the beginning of "git help cmd" have been made more
consistent.
source: <cover-v5-00.34-00000000000-20221013T153625Z-avarab@gmail.com>
* ab/run-hook-api-cleanup (2022-10-12) 15 commits
(merged to 'next' on 2022-10-20 at 29ca8c34dc)
+ run-command.c: remove "max_processes", add "const" to signal() handler
+ run-command.c: pass "opts" further down, and use "opts->processes"
+ run-command.c: use "opts->processes", not "pp->max_processes"
+ run-command.c: don't copy "data" to "struct parallel_processes"
+ run-command.c: don't copy "ungroup" to "struct parallel_processes"
+ run-command.c: don't copy *_fn to "struct parallel_processes"
+ run-command.c: make "struct parallel_processes" const if possible
+ run-command API: move *_tr2() users to "run_processes_parallel()"
+ run-command API: have run_process_parallel() take an "opts" struct
+ run-command.c: use designated init for pp_init(), add "const"
+ run-command API: don't fall back on online_cpus()
+ run-command API: make "n" parameter a "size_t"
+ run-command tests: use "return", not "exit"
+ run-command API: have "run_processes_parallel{,_tr2}()" return void
+ run-command test helper: use "else if" pattern
(this branch is used by cw/submodule-status-in-parallel.)
Move a global variable added as a hack during regression fixes to
its proper place in the API.
source: <cover-v3-00.15-00000000000-20221012T205712Z-avarab@gmail.com>
* jk/unused-anno-more (2022-10-17) 12 commits
(merged to 'next' on 2022-10-20 at 0e52ab6cf9)
+ ll-merge: mark unused parameters in callbacks
+ diffcore-pickaxe: mark unused parameters in pickaxe functions
+ convert: mark unused parameter in null stream filter
+ apply: mark unused parameters in noop error/warning routine
+ apply: mark unused parameters in handlers
+ date: mark unused parameters in handler functions
+ string-list: mark unused callback parameters
+ object-file: mark unused parameters in hash_unknown functions
+ mark unused parameters in trivial compat functions
+ update-index: drop unused argc from do_reupdate()
+ submodule--helper: drop unused argc from module_list_compute()
+ diffstat_consume(): assert non-zero length
More UNUSED annotation to help using -Wunused option with the
compiler.
source: <Y036whEorZV0rOgB@coredump.intra.peff.net>
* js/cmake-updates (2022-10-19) 5 commits
(merged to 'next' on 2022-10-21 at 012ec675ba)
+ cmake: increase time-out for a long-running test
+ cmake: avoid editing t/test-lib.sh
+ add -p: avoid ambiguous signed/unsigned comparison
+ cmake: copy the merge tools for testing
+ cmake: make it easier to diagnose regressions in CTest runs
Update to build procedure with VS using CMake/CTest.
source: <pull.1320.v3.git.1666090745.gitgitgadget@gmail.com>
* mm/git-pm-try-catch-syntax-fix (2022-10-22) 2 commits
(merged to 'next' on 2022-10-23 at 011a23710f)
+ Git.pm: trust rev-parse to find bare repositories
(merged to 'next' on 2022-10-21 at 7896738c3b)
+ Git.pm: add semicolon after catch statement
Fix a longstanding syntax error in Git.pm error codepath.
source: <20221016212236.12453-1-michael@mcclimon.org>
source: <Y1Rdtog/XQV0YLj0@coredump.intra.peff.net>
* nw/t1002-cleanup (2022-10-14) 1 commit
(merged to 'next' on 2022-10-20 at e6ae742fef)
+ t1002: modernize outdated conditional
Code clean-up in test.
source: <pull.1362.v3.git.git.1665734502591.gitgitgadget@gmail.com>
* tb/diffstat-with-utf8-strwidth (2022-10-21) 2 commits
(merged to 'next' on 2022-10-23 at 43a17bfeac)
+ diff: leave NEEDWORK notes in show_stats() function
+ diff.c: use utf8_strwidth() to count display width
"git diff --stat" etc. were invented back when everything was ASCII
and strlen() was a way to measure the display width of a string;
adjust them to compute the display width assuming UTF-8 pathnames.
source: <20220914151333.3309-1-tboegi@web.de>
* tb/midx-bitmap-selection-fix (2022-10-13) 4 commits
(merged to 'next' on 2022-10-20 at b4d98bb5e4)
+ pack-bitmap-write.c: instrument number of reused bitmaps
+ midx.c: instrument MIDX and bitmap generation with trace2 regions
+ midx.c: consider annotated tags during bitmap selection
+ midx.c: fix whitespace typo
A bugfix with tracing support in midx codepath
source: <cover.1665612094.git.me@ttaylorr.com>
* tb/remove-unused-pack-bitmap (2022-10-17) 1 commit
(merged to 'next' on 2022-10-21 at ebb68add44)
+ builtin/repack.c: remove redundant pack-based bitmaps
When creating a multi-pack bitmap, remove per-pack bitmap files
unconditionally as they will never be consulted.
source: <1e0ef7ee7ff5feb323c77e594cd65433fb1d99f7.1666061096.git.me@ttaylorr.com>
* tb/save-keep-pack-during-geometric-repack (2022-10-17) 1 commit
(merged to 'next' on 2022-10-20 at c88c17eb52)
+ repack: don't remove .keep packs with `--pack-kept-objects`
When geometric repacking feature is in use together with the
--pack-kept-objects option, we lost packs marked with .keep files.
source: <6a012cd625c1d197ede91c85299cbfb37adf356b.1666059872.git.me@ttaylorr.com>
--------------------------------------------------
[New Topics]
* ab/config-multi-and-nonbool (2022-10-27) 10 commits
- for-each-repo: with bad config, don't conflate <path> and <cmd>
- config API: add "string" version of *_value_multi(), fix segfaults
- config tests: add "NULL" tests for *_get_value_multi()
- config API: add and use "lookup_value" functions
- builtin/gc.c: use "unsorted_string_list_has_string()" where appropriate
- string-list API: make has_string() and list_lookup() "const"
- string-list API: mark "struct_string_list" to "for_each_string_list" const
- config API: mark *_multi() with RESULT_MUST_BE_USED
- for-each-repo: error on bad --config
- config API: have *_multi() return an "int" and take a "dest"
A mixed bag of config API updates.
Expecting a reroll.
cf. <221026.86pmeebcj9.gmgdl@evledraar.gmail.com>
source: <cover-00.10-00000000000-20221026T151328Z-avarab@gmail.com>
* ab/sha-makefile-doc (2022-10-26) 9 commits
- Makefile: discuss SHAttered in *_SHA{1,256} discussion
- Makefile: document default SHA-1 backend on OSX
- Makefile: document SHA-1 and SHA-256 default and selection order
- Makefile: document default SHA-256 backend
- Makefile: rephrase the discussion of *_SHA1 knobs
- Makefile: create and use sections for "define" flag listing
- Makefile: correct DC_SHA1 documentation
- INSTALL: remove discussion of SHA-1 backends
- Makefile: always (re)set DC_SHA1 on fallback
Makefile comments updates and reordering to clarify knobs used to
choose SHA implementations.
Will merge to 'next'?
source: <cover-v4-0.9-00000000000-20221026T145255Z-avarab@gmail.com>
* rs/no-more-run-command-v (2022-10-28) 9 commits
- run-command: fix return value comment
- replace and remove run_command_v_opt()
- replace and remove run_command_v_opt_cd_env_tr2()
- replace and remove run_command_v_opt_tr2()
- replace and remove run_command_v_opt_cd_env()
- use child_process member "args" instead of string array variable
- use child_process members "args" and "env" directly
- bisect--helper: factor out do_bisect_run()
- merge: remove always-the-same "verbose" arguments
Simplify the run-command API.
Will merge to 'next'?
source: <7407e074-4bd8-b351-7fa4-baf59b41880c@web.de>
source: <8428e83f-9deb-e928-8699-b5b13e8b7577@web.de>
* tb/howto-using-redo-script (2022-10-26) 1 commit
- Documentation/howto/maintain-git.txt: fix Meta/redo-jch.sh invocation
Doc update.
Will merge to 'next'.
source: <4ba057094ae6b1bd5c18583f23f7f99232034c72.1666815325.git.me@ttaylorr.com>
* ps/receive-use-only-advertised (2022-10-28) 3 commits
- SQUASH - leakfix
- receive-pack: use advertised reference tips to inform connectivity check
- connected: allow supplying different view of reachable objects
"git receive-pack" used to use all the local refs as the boundary
for checking connectivity of the data "git push" sent, but now it
uses only the refs that it advertised to the pusher. In a
repository with the .hideRefs configuration, this reduces the
resource needed to perform the check, and also forces the pusher to
prove they have all objects that are necessary to complete the
history on top of only the history available to them.
Expecting a reroll.
cf. <221028.86bkpw805n.gmgdl@evledraar.gmail.com>
cf. <xmqqr0yrizqm.fsf@gitster.g>
source: <cover.1666967670.git.ps@pks.im>
* jc/set-gid-bit-less-aggressively (2022-10-28) 1 commit
- adjust_shared_perm(): leave g+s alone when the group does not matter
The adjust_shared_perm() helper function learned to refrain from
setting the "g+s" bit on directories when it is not necessary.
Will merge to 'next'??
source: <xmqqr0yrhco6.fsf@gitster.g>
--------------------------------------------------
[Stalled]
* cw/submodule-status-in-parallel (2022-10-20) 7 commits
. diff-lib: parallelize run_diff_files for submodules
. diff-lib: refactor match_stat_with_submodule
. submodule: move status parsing into function
. submodule: strbuf variable rename
. run-command: add hide_output to run_processes_parallel_opts
. run-command: add pipe_output_fn to run_processes_parallel_opts
. Merge branch 'ab/run-hook-api-cleanup' into cw/submodule-status-in-parallel
Allow the internal "diff-files" engine to run "how has this
submodule changed?" in parallel to speed up "git status".
Breaks winVS test?
cf. <https://github.com/git/git/actions/runs/3298596454/jobs/5441029092>
source: <20221011232604.839941-1-calvinwan@google.com>
* js/bisect-in-c (2022-08-30) 17 commits
. bisect: no longer try to clean up left-over `.git/head-name` files
. bisect: remove Cogito-related code
. Turn `git bisect` into a full built-in
. bisect: move even the command-line parsing to `bisect--helper`
. bisect--helper: make `state` optional
. bisect--helper: calling `bisect_state()` without an argument is a bug
. bisect: avoid double-quoting when printing the failed command
. bisect run: fix the error message
. bisect: verify that a bogus option won't try to start a bisection
. bisect--helper: migrate to OPT_SUBCOMMAND()
. bisect--helper: make the order consistently `argc, argv`
. bisect--helper: make `terms` an explicit singleton
. bisect--helper: simplify exit code computation
. bisect--helper: really retire `--bisect-autostart`
. bisect--helper: really retire --bisect-next-check
. bisect--helper: retire the --no-log option
. Merge branch 'sg/parse-options-subcommand' into js/bisect-in-c
Final bits of "git bisect.sh" have been rewritten in C.
Needs review.
cf. <xmqqv8pr8903.fsf@gitster.g>
source: <pull.1132.v6.git.1661885419.gitgitgadget@gmail.com>
* od/ci-use-checkout-v3-when-applicable (2022-10-10) 2 commits
. ci(main): linux32 uses actions/checkout@v2
. ci(main): upgrade actions/checkout to v3
Attempt to update GitHub CI to use actions/checkout@v3
Expecting a reroll.
Seems to break the CI completely.
source: <pull.1354.git.git.1665388136.gitgitgadget@gmail.com>
* ed/fsmonitor-inotify (2022-10-14) 7 commits
. fsmonitor: update doc for Linux
. fsmonitor: test updates
. fsmonitor: enable fsmonitor for Linux
. fsmonitor: implement filesystem change listener for Linux
. fsmonitor: determine if filesystem is local or remote
. fsmonitor: prepare to share code between Mac OS and Linux
. Merge branch 'ed/fsmonitor-on-networked-macos' into ed/fsmonitor-inotify
Bundled fsmonitor for Linux using inotify API.
Needs review.
Occasional breakages of t7527.16?
source: <pull.1352.v2.git.git.1665783944.gitgitgadget@gmail.com>
* ag/merge-strategies-in-c (2022-08-10) 14 commits
. sequencer: use the "octopus" strategy without forking
. sequencer: use the "resolve" strategy without forking
. merge: use the "octopus" strategy without forking
. merge: use the "resolve" strategy without forking
. merge-octopus: rewrite in C
. merge-recursive: move better_branch_name() to merge.c
. merge-resolve: rewrite in C
. merge-one-file: rewrite in C
. update-index: move add_cacheinfo() to read-cache.c
. merge-index: add a new way to invoke `git-merge-one-file'
. merge-index: drop the index
. merge-index: libify merge_one_path() and merge_all()
. t6060: add tests for removed files
. t6060: modify multiple files to expose a possible issue with merge-index
An attempt to rewrite remaining merge strategies from shell to C.
Needs more work.
At the minimum, we should lose 11/14 and possibly 08/14.
cf. <xmqq7d36vfur.fsf@gitster.g>
source: <20220809185429.20098-1-alban.gruin@gmail.com>
* es/doc-creation-factor-fix (2022-07-28) 2 commits
. range-diff: clarify --creation-factor=<factor>
. format-patch: clarify --creation-factor=<factor>
Expecting a reroll by somebody more familiar with the logic
cf. <xmqqo7wfix7p.fsf@gitster.g>
source: <7229p500-p2r4-on87-6802-8o90s36rr3s4@tzk.qr>
* cw/remote-object-info (2022-08-13) 7 commits
. SQUASH???
. cat-file: add remote-object-info to batch-command
. transport: add client support for object-info
. serve: advertise object-info feature
. protocol-caps: initialization bug fix
. fetch-pack: move fetch initialization
. fetch-pack: refactor packet writing
A client component to talk with the object-info endpoint.
Expecting a reroll.
Under SANITIZE=address, t1006-cat-file.sh finds a breakage.
cf. <20220728230210.2952731-1-calvinwan@google.com>
cf. <CAFySSZDvgwbbHCHfyuaqX3tKsr-GjJ9iihygg6rNNe46Ys7_EA@mail.gmail.com>
source: <20220728230210.2952731-1-calvinwan@google.com>
--------------------------------------------------
[Cooking]
* gc/submodule-clone-update-with-branches (2022-10-28) 8 commits
- clone, submodule update: create and check out branches
- submodule--helper: remove update_data.suboid
- submodule update: refactor update targets
- submodule: return target of submodule symref
- t5617: drop references to remote-tracking branches
- submodule--helper clone: create named branch
- repo-settings: add submodule_propagate_branches
- clone: teach --detach option
"git clone --recurse-submodules" and "git submodule update" learns
to honor the "propagete branches" option.
source: <pull.1321.v3.git.git.1666988096.gitgitgadget@gmail.com>
* es/mark-gc-cruft-as-experimental (2022-10-26) 2 commits
- config: let feature.experimental imply gc.cruftPacks=true
- gc: add tests for --cruft and friends
Enable gc.cruftpacks by default for those who opt into
feature.experimental setting.
Will merge to 'next'.
source: <cover.1666819953.git.me@ttaylorr.com>
* tb/shortlog-group (2022-10-24) 7 commits
(merged to 'next' on 2022-10-26 at 76e64a6036)
+ shortlog: implement `--group=committer` in terms of `--group=<format>`
+ shortlog: implement `--group=author` in terms of `--group=<format>`
+ shortlog: extract `shortlog_finish_setup()`
+ shortlog: support arbitrary commit format `--group`s
+ shortlog: extract `--group` fragment for translation
+ shortlog: make trailer insertion a noop when appropriate
+ shortlog: accept `--date`-related options
"git shortlog" learned to group by the "format" string.
Will merge to 'master'.
source: <cover.1666637725.git.me@ttaylorr.com>
* pw/config-int-parse-fixes (2022-10-22) 3 commits
- git_parse_signed(): avoid integer overflow
- config: require at least one digit when parsing numbers
- git_parse_unsigned: reject negative values
Assorted fixes of parsing end-user input as integers.
Expecting a reroll to add test coverage.
cf. <Y1L+Qv+cs1bjqjK9@coredump.intra.peff.net>
source: <pull.1389.git.1666359915.gitgitgadget@gmail.com>
* sa/cat-file-mailmap (2022-10-21) 1 commit
- doc/cat-file: allow --use-mailmap for --batch options
Doc updates.
Waiting for review response.
source: <20221021103442.202759-1-siddharthasthana31@gmail.com>
* sg/stable-docdep (2022-10-21) 1 commit
(merged to 'next' on 2022-10-26 at 68432e1b2c)
+ Documentation/build-docdep.perl: generate sorted output
Make sure generated dependency file is stably sorted to help
developers debugging their build issues.
Will merge to 'master'.
source: <20221021102950.539148-1-szeder.dev@gmail.com>
* pb/subtree-split-and-merge-after-squashing-tag-fix (2022-10-21) 9 commits
(merged to 'next' on 2022-10-27 at 4f2134dd87)
+ subtree: fix split after annotated tag was squashed merged
+ subtree: fix squash merging after annotated tag was squashed merged
+ subtree: process 'git-subtree-split' trailer in separate function
+ subtree: use named variables instead of "$@" in cmd_pull
+ subtree: define a variable before its first use in 'find_latest_squash'
+ subtree: prefix die messages with 'fatal'
+ subtree: add 'die_incompatible_opt' function to reduce duplication
+ subtree: use 'git rev-parse --verify [--quiet]' for better error messages
+ test-lib-functions: mark 'test_commit' variables as 'local'
A bugfix to "git subtree" in its split and merge features.
Will merge to 'master'.
source: <pull.1390.git.1666365219.gitgitgadget@gmail.com>
* jk/repack-tempfile-cleanup (2022-10-23) 6 commits
(merged to 'next' on 2022-10-26 at e706eb120c)
+ t7700: annotate cruft-pack failure with ok=sigpipe
+ repack: drop remove_temporary_files()
+ repack: use tempfiles for signal cleanup
+ repack: expand error message for missing pack files
+ repack: populate extension bits incrementally
+ repack: convert "names" util bitfield to array
The way "git repack" creared temporary files when it received a
signal was prone to deadlocking, which has been corrected.
Will merge to 'master'.
source: <Y1M3fVnixJHvKiSg@coredump.intra.peff.net>
* en/ort-dir-rename-and-symlink-fix (2022-10-22) 1 commit
(merged to 'next' on 2022-10-27 at 56f1e5222d)
+ merge-ort: fix bug with dir rename vs change dir to symlink
Merging a branch with directory renames into a branch that changes
the directory to a symlink was mishandled by the ort merge
strategy, which has been corrected.
Will merge to 'master'.
source: <pull.1391.git.1666465450590.gitgitgadget@gmail.com>
* en/merge-tree-sequence (2022-10-22) 2 commits
(merged to 'next' on 2022-10-28 at 31459cd5a8)
+ merge-tree: support multiple batched merges with --stdin
+ merge-tree: update documentation for differences in -z output
"git merge-tree --stdin" is a new way to request a series of merges
and report the merge results.
Will merge to 'master'.
source: <pull.1361.git.1666488485.gitgitgadget@gmail.com>
* rs/absorb-git-dir-simplify (2022-10-23) 1 commit
(merged to 'next' on 2022-10-26 at 3d23cfd399)
+ submodule: use strvec_pushf() for --super-prefix
Code simplification by using strvec_pushf() instead of building an
argument in a separate strbuf.
Will merge to 'master'.
source: <7a4e2fc6-3e01-5683-2be5-13b7e67c7fe5@web.de>
* jc/doc-fsck-msgids (2022-10-25) 4 commits
(merged to 'next' on 2022-10-28 at 3c00edabf8)
+ Documentation: add lint-fsck-msgids
+ fsck: document msg-id
+ fsck: remove the unused MISSING_TREE_OBJECT
+ fsck: remove the unused BAD_TAG_OBJECT
Add documentation for message IDs in fsck error messages.
Will merge to 'master'.
source: <20221025224224.2352979-1-gitster@pobox.com>
* tb/repack-expire-to (2022-10-24) 4 commits
- builtin/repack.c: implement `--expire-to` for storing pruned objects
- builtin/repack.c: write cruft packs to arbitrary locations
- builtin/repack.c: pass "cruft_expiration" to `write_cruft_pack`
- builtin/repack.c: pass "out" to `prepare_pack_objects`
"git repack" learns to send cruft objects out of the way into
packfiles outside the repository.
Will merge to 'next'?
source: <cover.1666636974.git.me@ttaylorr.com>
* cc/filtered-repack (2022-10-25) 2 commits
- repack: add --filter=<filter-spec> option
- pack-objects: allow --filter without --stdout
"git repack" learns to discard objects that ought to be retrievable
again from the promissor remote.
Needs review.
source: <20221025122856.20204-1-christian.couder@gmail.com>
* tb/cap-patch-at-1gb (2022-10-25) 1 commit
(merged to 'next' on 2022-10-27 at f0b4f9c12a)
+ apply: reject patches larger than ~1 GiB
"git apply" limits its input to a bit less than 1 GiB.
Will merge to 'master'.
source: <70f5763834dff373a5573a99ec4cdfa36cadf34c.1666722251.git.me@ttaylorr.com>
* tb/midx-cleanup-fix (2022-10-25) 1 commit
- midx.c: clear auxiliary MIDX files first
The order in which multi-pack-index and its associated files are
dropped has been tweaked to make it safer for concurrent users.
Under discussion, but leaning to negative..
cf. <143a588a-c98b-733b-2b23-34a87ca89431@github.com>
source: <bf36093cd6d7ac83b16241b0199b3a8c904e6774.1666722316.git.me@ttaylorr.com>
* al/trace2-clearing-skip-worktree (2022-10-28) 2 commits
- SQUASH???
- index: add trace2 region for clear skip worktree
Add trace2 counters to the region to clear skip worktree bits in a
sparse checkout.
Expecting a reroll?
source: <pull.1368.v2.git.git.1666917961644.gitgitgadget@gmail.com>
* jt/skipping-negotiator-wo-recursion (2022-10-25) 1 commit
(merged to 'next' on 2022-10-28 at 4a2588ab9e)
+ negotiator/skipping: avoid stack overflow
Rewrite a deep recursion in the skipping negotiator to use a loop
with on-heap prio queue to avoid stack wastage.
Will merge to 'master'.
source: <20221025232934.1504445-1-jonathantanmy@google.com>
* rj/branch-copy-rename-error-codepath-cleanup (2022-10-26) 1 commit
(merged to 'next' on 2022-10-27 at f01a4ff619)
+ branch: error copying or renaming a detached HEAD
Code simplification.
Will merge to 'master'.
source: <0ac8cd48-08d7-9bdd-b074-c8d5ded522f6@gmail.com>
* rj/branch-do-not-exit-with-minus-one-status (2022-10-26) 1 commit
(merged to 'next' on 2022-10-27 at 061f63d4e2)
+ branch: error code with --edit-description
"git branch --edit-description" can exit with status -1 which is
not a good practice; it learned to use 1 as everybody else instead.
Will merge to 'master'.
source: <b0f96b35-4e69-a889-bcdf-e0b40b89384f@gmail.com>
* po/glossary-around-traversal (2022-10-22) 3 commits
- glossary: add reachability bitmap description
- glossary: add "commit graph" description
- doc: use 'object database' not ODB or abbreviation
The glossary entries for "commit-graph file" and "reachability
bitmap" have been added.
Expecting a (hopefully final) reroll.
cf. <746491f4-fb41-92fe-7360-20a845dc21fc@iee.email>
source: <20221022222539.2333-1-philipoakley@iee.email>
* mc/credential-helper-auth-headers (2022-10-21) 6 commits
- t5556-http-auth: add test for HTTP auth hdr logic
- http: set specific auth scheme depending on credential
- http: move proactive auth to first slot creation
- http: store all request headers on active_request_slot
- credential: add WWW-Authenticate header to cred requests
- http: read HTTP WWW-Authenticate response headers
Extending credential helper protocol.
Needs review.
source: <pull.1352.v2.git.1666372083.gitgitgadget@gmail.com>
* jr/embargoed-releases-doc (2022-10-24) 1 commit
(merged to 'next' on 2022-10-27 at c000502eaa)
+ embargoed releases: also describe the git-security list and the process
The role the security mailing list plays in an embargoed release
has been documented.
Will merge to 'master'.
source: <pull.1345.v4.git.1666649239302.gitgitgadget@gmail.com>
* jh/trace2-timers-and-counters (2022-10-24) 8 commits
(merged to 'next' on 2022-10-26 at e4933e2658)
+ trace2: add global counter mechanism
+ trace2: add stopwatch timers
+ trace2: convert ctx.thread_name from strbuf to pointer
+ trace2: improve thread-name documentation in the thread-context
+ trace2: rename the thread_name argument to trace2_thread_start
+ api-trace2.txt: elminate section describing the public trace2 API
+ tr2tls: clarify TLS terminology
+ trace2: use size_t alloc,nr_open_regions in tr2tls_thread_ctx
Two new facilities, "timer" and "counter", are introduced to the
trace2 API.
Will merge to 'master'.
source: <pull.1373.v4.git.1666618868.gitgitgadget@gmail.com>
* jz/patch-id (2022-10-24) 6 commits
(merged to 'next' on 2022-10-24 at 1ac3b46fbe)
+ builtin: patch-id: remove unused diff-tree prefix
+ builtin: patch-id: add --verbatim as a command mode
+ patch-id: fix patch-id for mode changes
+ builtin: patch-id: fix patch-id with binary diffs
+ patch-id: use stable patch-id for rebases
+ patch-id: fix stable patch id for binary / header-only
A new "--include-whitespace" option is added to "git patch-id", and
existing bugs in the internal patch-id logic that did not match
what "git patch-id" produces have been corrected.
Will merge to 'master'.
source: <pull.1359.v5.git.1666642064.gitgitgadget@gmail.com>
* hl/archive-recursive (2022-10-19) 10 commits
. fixup! archive: add tests for git archive --recurse-submodules
. archive: add tests for git archive --recurse-submodules
. archive: add --recurse-submodules to git-archive command
. archive: remove global repository from archive_args
. archive: pass repo objects to write_archive handlers
. tree: add repository parameter to read_tree_fn_t
. tree: handle submodule case for read_tree_at properly
. tree: increase test coverage for tree.c
. tree: update cases to use repo_ tree methods
. tree: do not use the_repository for tree traversal methods.
"git archive" has been taught "--recurse-submodules" option to
create a tarball that includes contents from submodules.
Expecting a reroll.
Seems to break win+VS test(8).
cf. https://github.com/git/git/actions/runs/3293333066 whose only
difference from https://github.com/git/git/actions/runs/3293553109
is the inclusion of this topic.
source: <pull.1359.v3.git.git.1665973401.gitgitgadget@gmail.com>
* pw/rebase-keep-base-fixes (2022-10-17) 8 commits
(merged to 'next' on 2022-10-27 at 802359afac)
+ rebase --keep-base: imply --no-fork-point
+ rebase --keep-base: imply --reapply-cherry-picks
+ rebase: factor out branch_base calculation
+ rebase: rename merge_base to branch_base
+ rebase: store orig_head as a commit
+ rebase: be stricter when reading state files containing oids
+ t3416: set $EDITOR in subshell
+ t3416: tighten two tests
(this branch is used by pw/rebase-reflog-fixes.)
"git rebase --keep-base" used to discard the commits that are
already cherry-picked to the upstream, even when "keep-base" meant
that the base, on top of which the history is being rebuilt, does
not yet include these cherry-picked commits. The --keep-base
option now implies --reapply-cherry-picks and --no-fork-point
options.
Will merge to 'master'.
source: <pull.1323.v4.git.1666012665.gitgitgadget@gmail.com>
* pw/rebase-reflog-fixes (2022-10-17) 9 commits
(merged to 'next' on 2022-10-27 at 60738821ef)
+ rebase: cleanup action handling
+ rebase --abort: improve reflog message
+ rebase --apply: make reflog messages match rebase --merge
+ rebase --apply: respect GIT_REFLOG_ACTION
+ rebase --merge: fix reflog message after skipping
+ rebase --merge: fix reflog when continuing
+ t3406: rework rebase reflog tests
+ rebase --apply: remove duplicated code
+ Merge branch 'pw/rebase-keep-base-fixes' into pw/rebase-reflog-fixes
(this branch uses pw/rebase-keep-base-fixes.)
Fix some bugs in the reflog messages when rebasing and changes the
reflog messages of "rebase --apply" to match "rebase --merge" with
the aim of making the reflog easier to parse.
Will merge to 'master'.
source: <pull.1150.v3.git.1665567312.gitgitgadget@gmail.com>
* sd/doc-smtp-encryption (2022-10-12) 1 commit
(merged to 'next' on 2022-10-26 at b984763a1b)
+ docs: git-send-email: difference between ssl and tls smtp-encryption
Will merge to 'master'.
source: <20221012150619.12877-1-sndanailov@wired4ever.net>
* en/sparse-checkout-design (2022-10-08) 1 commit
- sparse-checkout.txt: new document with sparse-checkout directions
Design doc.
Needs review.
source: <pull.1367.v3.git.1665269538608.gitgitgadget@gmail.com>
* pw/test-todo (2022-10-06) 3 commits
- test_todo: allow [verbose] test as the command
- test_todo: allow [!] grep as the command
- tests: add test_todo() to mark known breakages
RFC for test framework improvement.
Needs review.
source: <pull.1374.git.1665068476.gitgitgadget@gmail.com>
* ab/coccicheck-incremental (2022-10-26) 12 commits
- spatchcache: add a ccache-alike for "spatch"
- cocci: run against a generated ALL.cocci
- cocci rules: remove <id>'s from rules that don't need them
- cocci: optimistically use COMPUTE_HEADER_DEPENDENCIES
- cocci: make "coccicheck" rule incremental
- cocci: split off "--all-includes" from SPATCH_FLAGS
- cocci: split off include-less "tests" from SPATCH_FLAGS
- Makefile: split off SPATCH_BATCH_SIZE comment from "cocci" heading
- Makefile: have "coccicheck" re-run if flags change
- Makefile: add ability to TAB-complete cocci *.patch rules
- cocci rules: remove unused "F" metavariable from pending rule
- Makefile + shared.mak: rename and indent $(QUIET_SPATCH_T)
"make coccicheck" is time consuming. It has been made to run more
incrementally.
Will merge to 'next'?
source: <cover-v4-00.12-00000000000-20221026T141005Z-avarab@gmail.com>
* ds/bundle-uri-3 (2022-10-12) 13 commits
(merged to 'next' on 2022-10-28 at 9d9092b4cc)
+ bundle-uri: suppress stderr from remote-https
+ bundle-uri: quiet failed unbundlings
+ bundle: add flags to verify_bundle()
+ bundle-uri: fetch a list of bundles
+ bundle: properly clear all revision flags
+ bundle-uri: limit recursion depth for bundle lists
+ bundle-uri: parse bundle list in config format
+ bundle-uri: unit test "key=value" parsing
+ bundle-uri: create "key=value" line parsing
+ bundle-uri: create base key-value pair parsing
+ bundle-uri: create bundle_list struct and helpers
+ bundle-uri: use plain string in find_temp_filename()
+ Merge branch 'ds/bundle-uri-clone' into ds/bundle-uri-3
Define the logical elements of a "bundle list", data structure to
store them in-core, format to transfer them, and code to parse
them.
Will merge to 'master'.
source: <pull.1333.v5.git.1665579160.gitgitgadget@gmail.com>
^ permalink raw reply [relevance 3%]
* What's cooking in git.git (Oct 2022, #07; Wed, 26)
@ 2022-10-26 18:43 3% Junio C Hamano
0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2022-10-26 18:43 UTC (permalink / raw)
To: git
Here are the topics that have been cooking in my tree. Commits
prefixed with '+' are in 'next' (being in 'next' is a sign that a
topic is stable enough to be used and are candidate to be in a future
release). Commits prefixed with '-' are only in 'seen', and aren't
considered "accepted" at all. A topic without enough support may be
discarded after a long period of no activity.
The security releases are over, and we have enough accumulated fixes
on the 'master' front, I've merged a handful of them to 'maint'. We
may or may not have a 2.38.2 release before we conclude this cycle.
We'll see what happens.
Starting from next week (week #4---see https://tinyurl.com/gitCal),
we'll try a mini "bus factor" exercise, where I will disappear from
the list for a few weeks. Taylor agreed to volunteer as an interim
maintainer and will take over the daily integration of the project
in the meantime. The branches at https://github.com/git/git/
repository will be updated to reflect the result of daily
integration cycles by the interim maintainer during the exercise.
Other repositories would not be (see below). Most importantly, the
kernel.org one will be likely left stale. But the interim
maintainer may choose to publish to other repositories and announce
them on this list. One that may be handy to have is a repository as
a replacement for https://github.com/gitster/git/ repository that
hosts "broken out" topics.
Around week #7, I'll come back and we will conclude the exercise.
Note that the interim maintainer will really make decisions on what
topics to accept and advance to 'next' and 'master' in these weeks,
and I will accept these decisions when I come back and continue from
there.
Copies of the source code to Git live in many repositories, and the
following is a list of the ones I push into or their mirrors. Some
repositories have only a subset of branches.
With maint, master, next, seen, todo:
git://git.kernel.org/pub/scm/git/git.git/
git://repo.or.cz/alt-git.git/
https://kernel.googlesource.com/pub/scm/git/git/
https://github.com/git/git/
https://gitlab.com/git-vcs/git/
With all the integration branches and topics broken out:
https://github.com/gitster/git/
Even though the preformatted documentation in HTML and man format
are not sources, they are published in these repositories for
convenience (replace "htmldocs" with "manpages" for the manual
pages):
git://git.kernel.org/pub/scm/git/git-htmldocs.git/
https://github.com/gitster/git-htmldocs.git/
Release tarballs are available at:
https://www.kernel.org/pub/software/scm/git/
--------------------------------------------------
[Graduated to 'master']
* ab/grep-simplify-extended-expression (2022-10-11) 1 commit
(merged to 'next' on 2022-10-13 at 07993f09bc)
+ grep.c: remove "extended" in favor of "pattern_expression", fix segfault
Giving "--invert-grep" and "--all-match" without "--grep" to the
"git log" command resulted in an attempt to access grep pattern
expression structure that has not been allocated, which has been
corrected.
source: <patch-v2-1.1-6ad7627706f-20221011T094715Z-avarab@gmail.com>
* ab/macos-build-fix-with-sha1dc (2022-10-19) 1 commit
(merged to 'next' on 2022-10-19 at 408ce79f33)
+ fsmonitor OSX: compile with DC_SHA1=YesPlease
Enable macOS build with sha1dc hash function.
source: <patch-v2-1.4-392fabdb456-20221019T010222Z-avarab@gmail.com>
* ds/cmd-main-reorder (2022-10-08) 1 commit
(merged to 'next' on 2022-10-14 at d7f07dbecf)
+ git.c: improve code readability in cmd_main()
Code clean-up.
source: <pull.1355.v3.git.git.1665246097190.gitgitgadget@gmail.com>
* gc/bare-repo-discovery (2022-10-13) 1 commit
(merged to 'next' on 2022-10-17 at 3de2be7c14)
+ config: respect includes in protected config
Allow configuration files in "protected" scopes to include other
configuration files.
source: <pull.1360.v2.git.git.1665683027912.gitgitgadget@gmail.com>
* jc/ci-osx-with-sha1dc (2022-10-20) 1 commit
(merged to 'next' on 2022-10-21 at 2d3312dfb9)
+ ci: use DC_SHA1=YesPlease on osx-clang job for CI
Give a bit more diversity to macOS CI by using sha1dc in one of the
jobs (the other one tests Apple Common Crypto).
source: <xmqq35bitooc.fsf@gitster.g>
* jc/more-sanitizer-at-ci (2022-10-20) 1 commit
(merged to 'next' on 2022-10-21 at 91ec913532)
+ ci: add address and undefined sanitizer tasks
Enable address and undefined sanitizer tasks at GitHub Actions CI.
source: <xmqqpmezxl9p.fsf@gitster.g>
* jc/symbolic-ref-no-recurse (2022-10-09) 1 commit
(merged to 'next' on 2022-10-13 at 532a3f6a5f)
+ symbolic-ref: teach "--[no-]recurse" option
After checking out a "branch" that is a symbolic-ref that points at
another branch, "git symbolic-ref HEAD" reports the underlying
branch, not the symbolic-ref the user gave checkout as argument.
The command learned the "--no-recurse" option to stop after
dereferencing a symbolic-ref only once.
source: <xmqqleprcn08.fsf@gitster.g>
* jk/use-o0-in-leak-sanitizer (2022-10-19) 1 commit
(merged to 'next' on 2022-10-19 at 27c2546b98)
+ Makefile: force -O0 when compiling with SANITIZE=leak
Avoid false-positive from LSan whose assumption may be broken with
higher optimization levels.
source: <Y08JZVDgJpJvrBiz@coredump.intra.peff.net>
* rj/branch-edit-description-with-nth-checkout (2022-10-10) 1 commit
(merged to 'next' on 2022-10-14 at 90850a2211)
+ branch: support for shortcuts like @{-1}, completed
"git branch --edit-description @{-1}" is now a way to edit branch
description of the branch you were on before switching to the
current branch.
source: <fbf84e26-4306-c8df-0e2c-45dc94129e3a@gmail.com>
* rs/diff-caret-bang-with-parents (2022-10-01) 3 commits
(merged to 'next' on 2022-10-17 at 24609eb777)
+ diff: support ^! for merges
+ revisions.txt: unspecify order of resolved parts of ^!
+ revision: use strtol_i() for exclude_parent
"git diff rev^!" did not show combined diff to go to the rev from
its parents.
source: <16c49d20-cafc-4b48-3c6b-e11c74c29abb@web.de>
--------------------------------------------------
[New Topics]
* tb/shortlog-group (2022-10-24) 7 commits
(merged to 'next' on 2022-10-25 at 0d1b797119)
+ shortlog: implement `--group=committer` in terms of `--group=<format>`
+ shortlog: implement `--group=author` in terms of `--group=<format>`
+ shortlog: extract `shortlog_finish_setup()`
+ shortlog: support arbitrary commit format `--group`s
+ shortlog: extract `--group` fragment for translation
+ shortlog: make trailer insertion a noop when appropriate
+ shortlog: accept `--date`-related options
"git shortlog" learned to group by the "format" string.
Will merge to 'master'.
source: <cover.1666637725.git.me@ttaylorr.com>
* pw/config-int-parse-fixes (2022-10-22) 3 commits
- git_parse_signed(): avoid integer overflow
- config: require at least one digit when parsing numbers
- git_parse_unsigned: reject negative values
Assorted fixes of parsing end-user input as integers.
Expecting a reroll to add test coverage.
cf. <Y1L+Qv+cs1bjqjK9@coredump.intra.peff.net>
source: <pull.1389.git.1666359915.gitgitgadget@gmail.com>
* sa/cat-file-mailmap (2022-10-21) 1 commit
- doc/cat-file: allow --use-mailmap for --batch options
Doc updates.
Waiting for review response.
source: <20221021103442.202759-1-siddharthasthana31@gmail.com>
* sg/stable-docdep (2022-10-21) 1 commit
(merged to 'next' on 2022-10-25 at 83ecf487f3)
+ Documentation/build-docdep.perl: generate sorted output
Make sure generated dependency file is stably sorted to help
developers debugging their build issues.
Will merge to 'master'.
source: <20221021102950.539148-1-szeder.dev@gmail.com>
* pb/subtree-split-and-merge-after-squashing-tag-fix (2022-10-21) 9 commits
- subtree: fix split after annotated tag was squashed merged
- subtree: fix squash merging after annotated tag was squashed merged
- subtree: process 'git-subtree-split' trailer in separate function
- subtree: use named variables instead of "$@" in cmd_pull
- subtree: define a variable before its first use in 'find_latest_squash'
- subtree: prefix die messages with 'fatal'
- subtree: add 'die_incompatible_opt' function to reduce duplication
- subtree: use 'git rev-parse --verify [--quiet]' for better error messages
- test-lib-functions: mark 'test_commit' variables as 'local'
A bugfix to "git subtree" in its split and merge features.
Will merge to 'next'.
source: <pull.1390.git.1666365219.gitgitgadget@gmail.com>
* jk/repack-tempfile-cleanup (2022-10-23) 6 commits
(merged to 'next' on 2022-10-25 at 7e2d2f45d3)
+ t7700: annotate cruft-pack failure with ok=sigpipe
+ repack: drop remove_temporary_files()
+ repack: use tempfiles for signal cleanup
+ repack: expand error message for missing pack files
+ repack: populate extension bits incrementally
+ repack: convert "names" util bitfield to array
The way "git repack" creared temporary files when it received a
signal was prone to deadlocking, which has been corrected.
Will merge to 'master'.
source: <Y1M3fVnixJHvKiSg@coredump.intra.peff.net>
* en/ort-dir-rename-and-symlink-fix (2022-10-22) 1 commit
- merge-ort: fix bug with dir rename vs change dir to symlink
Merging a branch with directory renames into a branch that changes
the directory to a symlink was mishandled by the ort merge
strategy, which has been corrected.
Will merge to 'next'.
source: <pull.1391.git.1666465450590.gitgitgadget@gmail.com>
* en/merge-tree-sequence (2022-10-22) 2 commits
- merge-tree: support multiple batched merges with --stdin
- merge-tree: update documentation for differences in -z output
"git merge-tree --stdin" is a new way to request a series of merges
and report the merge results.
Will merge to 'next'?
source: <pull.1361.git.1666488485.gitgitgadget@gmail.com>
* rs/absorb-git-dir-simplify (2022-10-23) 1 commit
(merged to 'next' on 2022-10-25 at a5d6bc6667)
+ submodule: use strvec_pushf() for --super-prefix
Code simplification by using strvec_pushf() instead of building an
argument in a separate strbuf.
Will merge to 'master'.
source: <7a4e2fc6-3e01-5683-2be5-13b7e67c7fe5@web.de>
* jc/doc-fsck-msgids (2022-10-25) 4 commits
- Documentation: add lint-fsck-msgids
- fsck: document msg-id
- fsck: remove the unused MISSING_TREE_OBJECT
- fsck: remove the unused BAD_TAG_OBJECT
Add documentation for message IDs in fsck error messages.
Will merge to 'next'?
source: <20221025224224.2352979-1-gitster@pobox.com>
* tb/repack-expire-to (2022-10-24) 4 commits
- builtin/repack.c: implement `--expire-to` for storing pruned objects
- builtin/repack.c: write cruft packs to arbitrary locations
- builtin/repack.c: pass "cruft_expiration" to `write_cruft_pack`
- builtin/repack.c: pass "out" to `prepare_pack_objects`
"git repack" learns to send cruft objects out of the way into
packfiles outside the repository.
Will merge to 'next'?
source: <cover.1666636974.git.me@ttaylorr.com>
* cc/filtered-repack (2022-10-25) 2 commits
- repack: add --filter=<filter-spec> option
- pack-objects: allow --filter without --stdout
"git repack" learns to discard objects that ought to be retrievable
again from the promissor remote.
Needs review.
source: <20221025122856.20204-1-christian.couder@gmail.com>
* tb/cap-patch-at-1gb (2022-10-25) 1 commit
- apply: reject patches larger than ~1 GiB
"git apply" limits its input to a bit less than 1 GiB.
Will merge to 'next'.
source: <70f5763834dff373a5573a99ec4cdfa36cadf34c.1666722251.git.me@ttaylorr.com>
* tb/midx-cleanup-fix (2022-10-25) 1 commit
- midx.c: clear auxiliary MIDX files first
The order in which multi-pack-index and its associated files are
dropped has been tweaked to make it safer for concurrent users.
Under discussion, but leaning to negative..
cf. <143a588a-c98b-733b-2b23-34a87ca89431@github.com>
source: <bf36093cd6d7ac83b16241b0199b3a8c904e6774.1666722316.git.me@ttaylorr.com>
* al/trace2-clearing-skip-worktree (2022-10-25) 1 commit
- index: add trace2 region for clear skip worktree
Add trace2 counters to the region to clear skip worktree bits in a
sparse checkout.
Needs review.
source: <pull.1368.git.git.1666742722502.gitgitgadget@gmail.com>
* jt/skipping-negotiator-wo-recursion (2022-10-25) 1 commit
- negotiator/skipping: avoid stack overflow
Rewrite a deep recursion in the skipping negotiator to use a loop
with on-heap prio queue to avoid stack wastage.
Will merge to 'next'?
source: <20221025232934.1504445-1-jonathantanmy@google.com>
* rj/branch-copy-rename-error-codepath-cleanup (2022-10-25) 1 commit
- branch: error copying or renaming a detached HEAD
Code simplification.
Will merge to 'next'.
source: <0ac8cd48-08d7-9bdd-b074-c8d5ded522f6@gmail.com>
* rj/branch-do-not-exit-with-minus-one-status (2022-10-25) 1 commit
- branch: error code with --edit-description
"git branch --edit-description" can exit with status -1 which is
not a good practice; it learned to use 1 as everybody else instead.
Will merge to 'next'.
source: <b0f96b35-4e69-a889-bcdf-e0b40b89384f@gmail.com>
--------------------------------------------------
[Stalled]
* ag/merge-strategies-in-c (2022-08-10) 14 commits
- sequencer: use the "octopus" strategy without forking
- sequencer: use the "resolve" strategy without forking
- merge: use the "octopus" strategy without forking
- merge: use the "resolve" strategy without forking
- merge-octopus: rewrite in C
- merge-recursive: move better_branch_name() to merge.c
- merge-resolve: rewrite in C
- merge-one-file: rewrite in C
- update-index: move add_cacheinfo() to read-cache.c
- merge-index: add a new way to invoke `git-merge-one-file'
- merge-index: drop the index
- merge-index: libify merge_one_path() and merge_all()
- t6060: add tests for removed files
- t6060: modify multiple files to expose a possible issue with merge-index
An attempt to rewrite remaining merge strategies from shell to C.
Needs more work.
At the minimum, we should lose 11/14 and possibly 08/14.
cf. <xmqq7d36vfur.fsf@gitster.g>
source: <20220809185429.20098-1-alban.gruin@gmail.com>
* gc/submodule-clone-update-with-branches (2022-10-20) 7 commits
- clone, submodule update: create and check out branches
- submodule update: refactor update targets
- submodule: return target of submodule symref
- t5617: drop references to remote-tracking branches
- submodule--helper clone: create named branch
- repo-settings: add submodule_propagate_branches
- clone: teach --detach option
"git clone --recurse-submodules" and "git submodule update" learns
to honor the "propagete branches" option.
source: <pull.1321.v2.git.git.1666297238.gitgitgadget@gmail.com>
* tb/diffstat-with-utf8-strwidth (2022-10-21) 2 commits
(merged to 'next' on 2022-10-23 at 43a17bfeac)
+ diff: leave NEEDWORK notes in show_stats() function
+ diff.c: use utf8_strwidth() to count display width
"git diff --stat" etc. were invented back when everything was ASCII
and strlen() was a way to measure the display width of a string;
adjust them to compute the display width assuming UTF-8 pathnames.
Will merge to 'master'.
source: <20220914151333.3309-1-tboegi@web.de>
* es/mark-gc-cruft-as-experimental (2022-08-03) 2 commits
- config: let feature.experimental imply gc.cruftPacks=true
- gc: add tests for --cruft and friends
Enable gc.cruftpacks by default for those who opt into
feature.experimental setting.
Expecting a reroll.
cf. <220804.86a68ke9d5.gmgdl@evledraar.gmail.com>
cf. <6803b725-526e-a1c8-f15c-a9ed4a144d4c@github.com>
source: <20220803205721.3686361-1-emilyshaffer@google.com>
* es/doc-creation-factor-fix (2022-07-28) 2 commits
- range-diff: clarify --creation-factor=<factor>
- format-patch: clarify --creation-factor=<factor>
Expecting a reroll by somebody more familiar with the logic
cf. <xmqqo7wfix7p.fsf@gitster.g>
source: <7229p500-p2r4-on87-6802-8o90s36rr3s4@tzk.qr>
* cw/remote-object-info (2022-08-13) 7 commits
. SQUASH???
. cat-file: add remote-object-info to batch-command
. transport: add client support for object-info
. serve: advertise object-info feature
. protocol-caps: initialization bug fix
. fetch-pack: move fetch initialization
. fetch-pack: refactor packet writing
A client component to talk with the object-info endpoint.
Expecting a reroll.
Under SANITIZE=address, t1006-cat-file.sh finds a breakage.
cf. <20220728230210.2952731-1-calvinwan@google.com>
cf. <CAFySSZDvgwbbHCHfyuaqX3tKsr-GjJ9iihygg6rNNe46Ys7_EA@mail.gmail.com>
source: <20220728230210.2952731-1-calvinwan@google.com>
--------------------------------------------------
[Cooking]
* po/glossary-around-traversal (2022-10-22) 3 commits
- glossary: add reachability bitmap description
- glossary: add "commit graph" description
- doc: use 'object database' not ODB or abbreviation
The glossary entries for "commit-graph file" and "reachability
bitmap" have been added.
Expecting a (hopefully final) reroll.
cf. <746491f4-fb41-92fe-7360-20a845dc21fc@iee.email>
source: <20221022222539.2333-1-philipoakley@iee.email>
* mc/credential-helper-auth-headers (2022-10-21) 6 commits
- t5556-http-auth: add test for HTTP auth hdr logic
- http: set specific auth scheme depending on credential
- http: move proactive auth to first slot creation
- http: store all request headers on active_request_slot
- credential: add WWW-Authenticate header to cred requests
- http: read HTTP WWW-Authenticate response headers
Extending credential helper protocol.
Needs review.
source: <pull.1352.v2.git.1666372083.gitgitgadget@gmail.com>
* cw/submodule-status-in-parallel (2022-10-20) 7 commits
. diff-lib: parallelize run_diff_files for submodules
. diff-lib: refactor match_stat_with_submodule
. submodule: move status parsing into function
. submodule: strbuf variable rename
. run-command: add hide_output to run_processes_parallel_opts
. run-command: add pipe_output_fn to run_processes_parallel_opts
. Merge branch 'ab/run-hook-api-cleanup' into cw/submodule-status-in-parallel
(this branch uses ab/run-hook-api-cleanup.)
Allow the internal "diff-files" engine to run "how has this
submodule changed?" in parallel to speed up "git status".
Breaks winVS test?
cf. <https://github.com/git/git/actions/runs/3298596454/jobs/5441029092>
source: <20221011232604.839941-1-calvinwan@google.com>
* jk/unused-anno-more (2022-10-17) 12 commits
(merged to 'next' on 2022-10-20 at 0e52ab6cf9)
+ ll-merge: mark unused parameters in callbacks
+ diffcore-pickaxe: mark unused parameters in pickaxe functions
+ convert: mark unused parameter in null stream filter
+ apply: mark unused parameters in noop error/warning routine
+ apply: mark unused parameters in handlers
+ date: mark unused parameters in handler functions
+ string-list: mark unused callback parameters
+ object-file: mark unused parameters in hash_unknown functions
+ mark unused parameters in trivial compat functions
+ update-index: drop unused argc from do_reupdate()
+ submodule--helper: drop unused argc from module_list_compute()
+ diffstat_consume(): assert non-zero length
More UNUSED annotation to help using -Wunused option with the
compiler.
Will merge to 'master'.
source: <Y036whEorZV0rOgB@coredump.intra.peff.net>
* tb/save-keep-pack-during-geometric-repack (2022-10-17) 1 commit
(merged to 'next' on 2022-10-20 at c88c17eb52)
+ repack: don't remove .keep packs with `--pack-kept-objects`
When geometric repacking feature is in use together with the
--pack-kept-objects option, we lost packs marked with .keep files.
Will merge to 'master'.
source: <6a012cd625c1d197ede91c85299cbfb37adf356b.1666059872.git.me@ttaylorr.com>
* mm/git-pm-try-catch-syntax-fix (2022-10-22) 2 commits
(merged to 'next' on 2022-10-23 at 011a23710f)
+ Git.pm: trust rev-parse to find bare repositories
(merged to 'next' on 2022-10-21 at 7896738c3b)
+ Git.pm: add semicolon after catch statement
Fix a longstanding syntax error in Git.pm error codepath.
Will merge to 'master'.
source: <20221016212236.12453-1-michael@mcclimon.org>
source: <Y1Rdtog/XQV0YLj0@coredump.intra.peff.net>
* jr/embargoed-releases-doc (2022-10-24) 1 commit
- embargoed releases: also describe the git-security list and the process
The role the security mailing list plays in an embargoed release
has been documented.
Will merge to 'next'.
source: <pull.1345.v4.git.1666649239302.gitgitgadget@gmail.com>
* js/cmake-updates (2022-10-19) 5 commits
(merged to 'next' on 2022-10-21 at 012ec675ba)
+ cmake: increase time-out for a long-running test
+ cmake: avoid editing t/test-lib.sh
+ add -p: avoid ambiguous signed/unsigned comparison
+ cmake: copy the merge tools for testing
+ cmake: make it easier to diagnose regressions in CTest runs
Update to build procedure with VS using CMake/CTest.
Will merge to 'master'.
source: <pull.1320.v3.git.1666090745.gitgitgadget@gmail.com>
* jh/trace2-timers-and-counters (2022-10-24) 8 commits
(merged to 'next' on 2022-10-25 at f8848f3e44)
+ trace2: add global counter mechanism
+ trace2: add stopwatch timers
+ trace2: convert ctx.thread_name from strbuf to pointer
+ trace2: improve thread-name documentation in the thread-context
+ trace2: rename the thread_name argument to trace2_thread_start
+ api-trace2.txt: elminate section describing the public trace2 API
+ tr2tls: clarify TLS terminology
+ trace2: use size_t alloc,nr_open_regions in tr2tls_thread_ctx
Two new facilities, "timer" and "counter", are introduced to the
trace2 API.
Will merge to 'master'.
source: <pull.1373.v4.git.1666618868.gitgitgadget@gmail.com>
* tb/midx-bitmap-selection-fix (2022-10-13) 4 commits
(merged to 'next' on 2022-10-20 at b4d98bb5e4)
+ pack-bitmap-write.c: instrument number of reused bitmaps
+ midx.c: instrument MIDX and bitmap generation with trace2 regions
+ midx.c: consider annotated tags during bitmap selection
+ midx.c: fix whitespace typo
A bugfix with tracing support in midx codepath
Will merge to 'master'.
source: <cover.1665612094.git.me@ttaylorr.com>
* tb/remove-unused-pack-bitmap (2022-10-17) 1 commit
(merged to 'next' on 2022-10-21 at ebb68add44)
+ builtin/repack.c: remove redundant pack-based bitmaps
When creating a multi-pack bitmap, remove per-pack bitmap files
unconditionally as they will never be consulted.
Will merge to 'master'.
source: <1e0ef7ee7ff5feb323c77e594cd65433fb1d99f7.1666061096.git.me@ttaylorr.com>
* nw/t1002-cleanup (2022-10-14) 1 commit
(merged to 'next' on 2022-10-20 at e6ae742fef)
+ t1002: modernize outdated conditional
Code clean-up in test.
Will merge to 'master'.
source: <pull.1362.v3.git.git.1665734502591.gitgitgadget@gmail.com>
* jz/patch-id (2022-10-24) 6 commits
(merged to 'next' on 2022-10-24 at 1ac3b46fbe)
+ builtin: patch-id: remove unused diff-tree prefix
+ builtin: patch-id: add --verbatim as a command mode
+ patch-id: fix patch-id for mode changes
+ builtin: patch-id: fix patch-id with binary diffs
+ patch-id: use stable patch-id for rebases
+ patch-id: fix stable patch id for binary / header-only
A new "--include-whitespace" option is added to "git patch-id", and
existing bugs in the internal patch-id logic that did not match
what "git patch-id" produces have been corrected.
Will merge to 'master'.
source: <pull.1359.v5.git.1666642064.gitgitgadget@gmail.com>
* hl/archive-recursive (2022-10-19) 10 commits
. fixup! archive: add tests for git archive --recurse-submodules
. archive: add tests for git archive --recurse-submodules
. archive: add --recurse-submodules to git-archive command
. archive: remove global repository from archive_args
. archive: pass repo objects to write_archive handlers
. tree: add repository parameter to read_tree_fn_t
. tree: handle submodule case for read_tree_at properly
. tree: increase test coverage for tree.c
. tree: update cases to use repo_ tree methods
. tree: do not use the_repository for tree traversal methods.
"git archive" has been taught "--recurse-submodules" option to
create a tarball that includes contents from submodules.
Expecting a reroll.
Seems to break win+VS test(8).
cf. https://github.com/git/git/actions/runs/3293333066 whose only
difference from https://github.com/git/git/actions/runs/3293553109
is the inclusion of this topic.
source: <pull.1359.v3.git.git.1665973401.gitgitgadget@gmail.com>
* pw/rebase-keep-base-fixes (2022-10-17) 8 commits
- rebase --keep-base: imply --no-fork-point
- rebase --keep-base: imply --reapply-cherry-picks
- rebase: factor out branch_base calculation
- rebase: rename merge_base to branch_base
- rebase: store orig_head as a commit
- rebase: be stricter when reading state files containing oids
- t3416: set $EDITOR in subshell
- t3416: tighten two tests
(this branch is used by pw/rebase-reflog-fixes.)
"git rebase --keep-base" used to discard the commits that are
already cherry-picked to the upstream, even when "keep-base" meant
that the base, on top of which the history is being rebuilt, does
not yet include these cherry-picked commits. The --keep-base
option now implies --reapply-cherry-picks and --no-fork-point
options.
Will merge to 'next'.
source: <pull.1323.v4.git.1666012665.gitgitgadget@gmail.com>
* pw/rebase-reflog-fixes (2022-10-17) 9 commits
- rebase: cleanup action handling
- rebase --abort: improve reflog message
- rebase --apply: make reflog messages match rebase --merge
- rebase --apply: respect GIT_REFLOG_ACTION
- rebase --merge: fix reflog message after skipping
- rebase --merge: fix reflog when continuing
- t3406: rework rebase reflog tests
- rebase --apply: remove duplicated code
- Merge branch 'pw/rebase-keep-base-fixes' into pw/rebase-reflog-fixes
(this branch uses pw/rebase-keep-base-fixes.)
Fix some bugs in the reflog messages when rebasing and changes the
reflog messages of "rebase --apply" to match "rebase --merge" with
the aim of making the reflog easier to parse.
Will merge to 'next'.
source: <pull.1150.v3.git.1665567312.gitgitgadget@gmail.com>
* sd/doc-smtp-encryption (2022-10-12) 1 commit
(merged to 'next' on 2022-10-25 at d122052431)
+ docs: git-send-email: difference between ssl and tls smtp-encryption
Will merge to 'master'.
source: <20221012150619.12877-1-sndanailov@wired4ever.net>
* ed/fsmonitor-inotify (2022-10-14) 7 commits
. fsmonitor: update doc for Linux
. fsmonitor: test updates
. fsmonitor: enable fsmonitor for Linux
. fsmonitor: implement filesystem change listener for Linux
. fsmonitor: determine if filesystem is local or remote
. fsmonitor: prepare to share code between Mac OS and Linux
. Merge branch 'ed/fsmonitor-on-networked-macos' into ed/fsmonitor-inotify
Bundled fsmonitor for Linux using inotify API.
Needs review.
Occasional breakages of t7527.16?
source: <pull.1352.v2.git.git.1665783944.gitgitgadget@gmail.com>
* en/sparse-checkout-design (2022-10-08) 1 commit
- sparse-checkout.txt: new document with sparse-checkout directions
Design doc.
Needs review.
source: <pull.1367.v3.git.1665269538608.gitgitgadget@gmail.com>
* od/ci-use-checkout-v3-when-applicable (2022-10-10) 2 commits
. ci(main): linux32 uses actions/checkout@v2
. ci(main): upgrade actions/checkout to v3
Attempt to update GitHub CI to use actions/checkout@v3
Expecting a reroll.
Seems to break the CI completely.
source: <pull.1354.git.git.1665388136.gitgitgadget@gmail.com>
* ab/run-hook-api-cleanup (2022-10-12) 15 commits
(merged to 'next' on 2022-10-20 at 29ca8c34dc)
+ run-command.c: remove "max_processes", add "const" to signal() handler
+ run-command.c: pass "opts" further down, and use "opts->processes"
+ run-command.c: use "opts->processes", not "pp->max_processes"
+ run-command.c: don't copy "data" to "struct parallel_processes"
+ run-command.c: don't copy "ungroup" to "struct parallel_processes"
+ run-command.c: don't copy *_fn to "struct parallel_processes"
+ run-command.c: make "struct parallel_processes" const if possible
+ run-command API: move *_tr2() users to "run_processes_parallel()"
+ run-command API: have run_process_parallel() take an "opts" struct
+ run-command.c: use designated init for pp_init(), add "const"
+ run-command API: don't fall back on online_cpus()
+ run-command API: make "n" parameter a "size_t"
+ run-command tests: use "return", not "exit"
+ run-command API: have "run_processes_parallel{,_tr2}()" return void
+ run-command test helper: use "else if" pattern
(this branch is used by cw/submodule-status-in-parallel.)
Move a global variable added as a hack during regression fixes to
its proper place in the API.
Will merge to 'master'.
source: <cover-v3-00.15-00000000000-20221012T205712Z-avarab@gmail.com>
* pw/test-todo (2022-10-06) 3 commits
- test_todo: allow [verbose] test as the command
- test_todo: allow [!] grep as the command
- tests: add test_todo() to mark known breakages
RFC for test framework improvement.
Needs review.
source: <pull.1374.git.1665068476.gitgitgadget@gmail.com>
* ab/doc-synopsis-and-cmd-usage (2022-10-13) 34 commits
(merged to 'next' on 2022-10-21 at c6d632ac1a)
+ tests: assert consistent whitespace in -h output
+ tests: start asserting that *.txt SYNOPSIS matches -h output
+ doc txt & -h consistency: make "worktree" consistent
+ worktree: define subcommand -h in terms of command -h
+ reflog doc: list real subcommands up-front
+ doc txt & -h consistency: make "commit" consistent
+ doc txt & -h consistency: make "diff-tree" consistent
+ doc txt & -h consistency: use "[<label>...]" for "zero or more"
+ doc txt & -h consistency: make "annotate" consistent
+ doc txt & -h consistency: make "stash" consistent
+ doc txt & -h consistency: add missing options
+ doc txt & -h consistency: use "git foo" form, not "git-foo"
+ doc txt & -h consistency: make "bundle" consistent
+ doc txt & -h consistency: make "read-tree" consistent
+ doc txt & -h consistency: make "rerere" consistent
+ doc txt & -h consistency: add missing options and labels
+ doc txt & -h consistency: make output order consistent
+ doc txt & -h consistency: add or fix optional "--" syntax
+ doc txt & -h consistency: fix mismatching labels
+ doc SYNOPSIS & -h: use "-" to separate words in labels, not "_"
+ doc txt & -h consistency: use "<options>", not "<options>..."
+ stash doc SYNOPSIS & -h: correct padding around "[]()"
+ doc txt & -h consistency: correct padding around "[]()"
+ doc txt & -h consistency: balance unbalanced "[" and "]"
+ doc txt & -h consistency: add "-z" to cat-file "-h"
+ doc txt & -h consistency: fix incorrect alternates syntax
+ doc txt & -h consistency: word-wrap
+ built-ins: consistently add "\n" between "usage" and options
+ doc SYNOPSIS: consistently use ' for commands
+ doc SYNOPSIS: don't use ' for subcommands
+ bundle: define subcommand -h in terms of command -h
+ builtin/bundle.c: indent with tabs
+ CodingGuidelines: update and clarify command-line conventions
+ tests: assert *.txt SYNOPSIS and -h output
The short-help text shown by "git cmd -h" and the synopsis text
shown at the beginning of "git help cmd" have been made more
consistent.
Will merge to 'master'.
source: <cover-v5-00.34-00000000000-20221013T153625Z-avarab@gmail.com>
* ab/coccicheck-incremental (2022-10-26) 12 commits
- spatchcache: add a ccache-alike for "spatch"
- cocci: run against a generated ALL.cocci
- cocci rules: remove <id>'s from rules that don't need them
- cocci: optimistically use COMPUTE_HEADER_DEPENDENCIES
- cocci: make "coccicheck" rule incremental
- cocci: split off "--all-includes" from SPATCH_FLAGS
- cocci: split off include-less "tests" from SPATCH_FLAGS
- Makefile: split off SPATCH_BATCH_SIZE comment from "cocci" heading
- Makefile: have "coccicheck" re-run if flags change
- Makefile: add ability to TAB-complete cocci *.patch rules
- cocci rules: remove unused "F" metavariable from pending rule
- Makefile + shared.mak: rename and indent $(QUIET_SPATCH_T)
"make coccicheck" is time consuming. It has been made to run more
incrementally.
Will merge to 'next'?
source: <cover-v4-00.12-00000000000-20221026T141005Z-avarab@gmail.com>
* ds/bundle-uri-3 (2022-10-12) 13 commits
- bundle-uri: suppress stderr from remote-https
- bundle-uri: quiet failed unbundlings
- bundle: add flags to verify_bundle()
- bundle-uri: fetch a list of bundles
- bundle: properly clear all revision flags
- bundle-uri: limit recursion depth for bundle lists
- bundle-uri: parse bundle list in config format
- bundle-uri: unit test "key=value" parsing
- bundle-uri: create "key=value" line parsing
- bundle-uri: create base key-value pair parsing
- bundle-uri: create bundle_list struct and helpers
- bundle-uri: use plain string in find_temp_filename()
- Merge branch 'ds/bundle-uri-clone' into ds/bundle-uri-3
Define the logical elements of a "bundle list", data structure to
store them in-core, format to transfer them, and code to parse
them.
Will merge to 'next'?
source: <pull.1333.v5.git.1665579160.gitgitgadget@gmail.com>
* js/bisect-in-c (2022-08-30) 17 commits
- bisect: no longer try to clean up left-over `.git/head-name` files
- bisect: remove Cogito-related code
- Turn `git bisect` into a full built-in
- bisect: move even the command-line parsing to `bisect--helper`
- bisect--helper: make `state` optional
- bisect--helper: calling `bisect_state()` without an argument is a bug
- bisect: avoid double-quoting when printing the failed command
- bisect run: fix the error message
- bisect: verify that a bogus option won't try to start a bisection
- bisect--helper: migrate to OPT_SUBCOMMAND()
- bisect--helper: make the order consistently `argc, argv`
- bisect--helper: make `terms` an explicit singleton
- bisect--helper: simplify exit code computation
- bisect--helper: really retire `--bisect-autostart`
- bisect--helper: really retire --bisect-next-check
- bisect--helper: retire the --no-log option
- Merge branch 'sg/parse-options-subcommand' into js/bisect-in-c
Final bits of "git bisect.sh" have been rewritten in C.
Needs review.
cf. <xmqqv8pr8903.fsf@gitster.g>
source: <pull.1132.v6.git.1661885419.gitgitgadget@gmail.com>
^ permalink raw reply [relevance 3%]
* Re: [PATCH v4 3/8] rebase --merge: fix reflog when continuing
2022-10-26 15:17 2% ` Phillip Wood
@ 2022-10-26 16:55 2% ` Junio C Hamano
0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2022-10-26 16:55 UTC (permalink / raw)
To: Phillip Wood
Cc: Phillip Wood via GitGitGadget, git, Christian Couder,
Elijah Newren, Ævar Arnfjörð Bjarmason, Calvin Wan,
Emily Shaffer, Glen Choo, Victoria Dye
Phillip Wood <phillip.wood123@gmail.com> writes:
> Hi Junio
>
> On 25/10/2022 17:11, Junio C Hamano wrote:
>> Phillip Wood <phillip.wood123@gmail.com> writes:
>>
>>>>> Both of these will be fixed in a future series that
>>>>> stops the sequencer calling setenv().
>>>> If it gets fixed in a future step in the same series, that is a
>>>> different matter, but if it is easy enough not to deliberately
>>>> introduce a new leak, we'd prefer to do so.
>>>
>>> It's a couple of patches to fix which are more or less finished, I'm
>>> planning to send them once this series is in next.
>> So we will do the "add a known breakage of the same kind as there
>> exists others, and then later fix them all up, including the one
>> that is added by this series, because fixes are non-trivial and this
>> topic is easier to finish if we allowed to add a known breakage"
>> approach? Just making sure it is what you plan to do.
>
> Yes, that's right
OK, I do not mind as long as we leave a NEEDSWORK note to tell
others that we know the leak and promise to fix it soon (so they do
not waste their effort to fix it independently).
Thanks.
^ permalink raw reply [relevance 2%]
* Re: [PATCH v4 3/8] rebase --merge: fix reflog when continuing
2022-10-25 16:11 2% ` Junio C Hamano
@ 2022-10-26 15:17 2% ` Phillip Wood
2022-10-26 16:55 2% ` Junio C Hamano
0 siblings, 1 reply; 200+ results
From: Phillip Wood @ 2022-10-26 15:17 UTC (permalink / raw)
To: Junio C Hamano, Phillip Wood
Cc: Phillip Wood via GitGitGadget, git, Christian Couder,
Elijah Newren, Ævar Arnfjörð Bjarmason, Calvin Wan,
Emily Shaffer, Glen Choo, Victoria Dye
Hi Junio
On 25/10/2022 17:11, Junio C Hamano wrote:
> Phillip Wood <phillip.wood123@gmail.com> writes:
>
>>>> Both of these will be fixed in a future series that
>>>> stops the sequencer calling setenv().
>>> If it gets fixed in a future step in the same series, that is a
>>> different matter, but if it is easy enough not to deliberately
>>> introduce a new leak, we'd prefer to do so.
>>
>> It's a couple of patches to fix which are more or less finished, I'm
>> planning to send them once this series is in next.
>
> So we will do the "add a known breakage of the same kind as there
> exists others, and then later fix them all up, including the one
> that is added by this series, because fixes are non-trivial and this
> topic is easier to finish if we allowed to add a known breakage"
> approach? Just making sure it is what you plan to do.
Yes, that's right
Thanks
Phillip
> Thanks.
^ permalink raw reply [relevance 2%]
* Re: [PATCH v4 3/8] rebase --merge: fix reflog when continuing
2022-10-25 10:08 2% ` Phillip Wood
@ 2022-10-25 16:11 2% ` Junio C Hamano
2022-10-26 15:17 2% ` Phillip Wood
0 siblings, 1 reply; 200+ results
From: Junio C Hamano @ 2022-10-25 16:11 UTC (permalink / raw)
To: Phillip Wood
Cc: Phillip Wood via GitGitGadget, git, Christian Couder,
Elijah Newren, Ævar Arnfjörð Bjarmason, Calvin Wan,
Emily Shaffer, Glen Choo, Victoria Dye
Phillip Wood <phillip.wood123@gmail.com> writes:
>>> Both of these will be fixed in a future series that
>>> stops the sequencer calling setenv().
>> If it gets fixed in a future step in the same series, that is a
>> different matter, but if it is easy enough not to deliberately
>> introduce a new leak, we'd prefer to do so.
>
> It's a couple of patches to fix which are more or less finished, I'm
> planning to send them once this series is in next.
So we will do the "add a known breakage of the same kind as there
exists others, and then later fix them all up, including the one
that is added by this series, because fixes are non-trivial and this
topic is easier to finish if we allowed to add a known breakage"
approach? Just making sure it is what you plan to do.
Thanks.
^ permalink raw reply [relevance 2%]
* Re: [PATCH v4 3/8] rebase --merge: fix reflog when continuing
2022-10-21 17:37 2% ` Junio C Hamano
@ 2022-10-25 10:08 2% ` Phillip Wood
2022-10-25 16:11 2% ` Junio C Hamano
0 siblings, 1 reply; 200+ results
From: Phillip Wood @ 2022-10-25 10:08 UTC (permalink / raw)
To: Junio C Hamano, Phillip Wood via GitGitGadget
Cc: git, Phillip Wood, Christian Couder, Elijah Newren,
Ævar Arnfjörð Bjarmason, Calvin Wan, Emily Shaffer,
Glen Choo, Victoria Dye
Hi Junio
On 21/10/2022 18:37, Junio C Hamano wrote:
> "Phillip Wood via GitGitGadget" <gitgitgadget@gmail.com> writes:
>
>> ... This
>> introduces a memory leak similar to the one leaking GIT_REFLOG_ACTION
>> in pick_commits().
>
> Is it just the matter of freeing previous_reflog_action after you
> call setenv(), or does it take much more involved changes?
We should be freeing previous_reflog_action - I had misremembered a
previous discussion about setenv() but the manual page makes it quite
clear that it copies the strings passed to it. However we call setenv()
each time we pick a commit and that leaks the previous value. The
solution is to avoid calling setenv() at all and instead use the env
member of struct child_process when we run "git commit".
>> Both of these will be fixed in a future series that
>> stops the sequencer calling setenv().
>
> If it gets fixed in a future step in the same series, that is a
> different matter, but if it is easy enough not to deliberately
> introduce a new leak, we'd prefer to do so.
It's a couple of patches to fix which are more or less finished, I'm
planning to send them once this series is in next.
Best Wishes
Phillip
^ permalink raw reply [relevance 2%]
* Re: [PATCH v4 3/8] rebase --merge: fix reflog when continuing
2022-10-21 9:21 2% ` [PATCH v4 3/8] rebase --merge: fix reflog when continuing Phillip Wood via GitGitGadget
@ 2022-10-21 17:37 2% ` Junio C Hamano
2022-10-25 10:08 2% ` Phillip Wood
0 siblings, 1 reply; 200+ results
From: Junio C Hamano @ 2022-10-21 17:37 UTC (permalink / raw)
To: Phillip Wood via GitGitGadget
Cc: git, Phillip Wood, Christian Couder, Elijah Newren,
Ævar Arnfjörð Bjarmason, Calvin Wan, Emily Shaffer,
Glen Choo, Victoria Dye, Phillip Wood
"Phillip Wood via GitGitGadget" <gitgitgadget@gmail.com> writes:
> ... This
> introduces a memory leak similar to the one leaking GIT_REFLOG_ACTION
> in pick_commits().
Is it just the matter of freeing previous_reflog_action after you
call setenv(), or does it take much more involved changes?
> Both of these will be fixed in a future series that
> stops the sequencer calling setenv().
If it gets fixed in a future step in the same series, that is a
different matter, but if it is easy enough not to deliberately
introduce a new leak, we'd prefer to do so.
^ permalink raw reply [relevance 2%]
* [PATCH v4 0/8] rebase: make reflog messages independent of the backend
2022-10-12 9:35 2% ` [PATCH v3 0/8] rebase: make reflog messages independent of the backend Phillip Wood via GitGitGadget
2022-10-12 9:35 2% ` [PATCH v3 3/8] rebase --merge: fix reflog when continuing Phillip Wood via GitGitGadget
2022-10-12 9:35 2% ` [PATCH v3 4/8] rebase --merge: fix reflog message after skipping Phillip Wood via GitGitGadget
@ 2022-10-21 9:21 2% ` Phillip Wood via GitGitGadget
2022-10-21 9:21 2% ` [PATCH v4 3/8] rebase --merge: fix reflog when continuing Phillip Wood via GitGitGadget
2022-10-21 9:21 2% ` [PATCH v4 4/8] rebase --merge: fix reflog message after skipping Phillip Wood via GitGitGadget
2 siblings, 2 replies; 200+ results
From: Phillip Wood via GitGitGadget @ 2022-10-21 9:21 UTC (permalink / raw)
To: git
Cc: Phillip Wood, Christian Couder, Elijah Newren,
Ævar Arnfjörð Bjarmason, Calvin Wan, Emily Shaffer,
Glen Choo, Victoria Dye, Phillip Wood
This series fixes some bugs in the reflog messages when rebasing and changes
the reflog messages of "rebase --apply" to match "rebase --merge" with the
aim of making the reflog easier to parse.
Thanks to Junio for his comments, here are the changes since V3:
* Patch 1: Swapped with patch 2. Small change to fast-forward tests to make
them pass
* Patch 2: Swapped with patch 1. Reworded commit message and added a change
to the fast-forward test to reflect the change in reflog message
introduced by this patch
The rest of the patches are unchanged.
V2 Cover Letter
Thanks to everyone who commented on V2, I've added the review club
participants that I've got address for to the cc list. I've rebased onto
pw/rebase-keep-base-fixes.
Change since V2:
* Patch 1: Reworded the commit message to address the concerns in [1,2]
about the behavior when head_name is NULL. There is also a small change
due to being rebased.
* Patch 2: Unchanged. There wasn't much love for parameterized tests in
review club but we want to ensure both backends produce the same messages
I think this is the safest way to achieve that. Using separate tests
makes it too easy to introduce subtle differences in the testing of the
two backends.
* Patch 3: Added a note to the commit message to address the concerns in
[1] about not resetting GIT_REFLOG_ACTION when we return early.
* Patches 4 & 5: Unchanged.
* Patch 6: Reworded the commit message to make a stronger argument for this
change. There are concerns about backwards compatibility in [1,3,4] but
(i) we have made similar changes in the past without complaints and (ii)
we're changing the message to an existing format. There is also a small
change due to being rebased.
* Patches 7 & 8: Small changes due to rebase.
[1]
https://docs.google.com/document/d/14L8BAumGTpsXpjDY8VzZ4rRtpAjuGrFSRqn3stCuS_w/edit?pli=1#heading=h.t6g5l2t5ibzw
[2] https://lore.kernel.org/git/xmqq35i7r4rj.fsf@gitster.g/ [3]
https://lore.kernel.org/git/xmqq4k2nmmeg.fsf@gitster.g/ [4]
https://lore.kernel.org/git/220420.865yn4833u.gmgdl@evledraar.gmail.com/
V2 Cover Letter:
Thanks to Christian and Elijah for their comments on V1.
I've updated commit message for patch 1 to try and be clearer about the
removal of a call to strbuf_release() and spilt out the test changes from
the old patch 2 into a separate preparatory patch.
V1 Cover Letter:
This is a series of rebase reflog related patches with the aim of unifying
the reflog messages from the two rebase backends.
* improve rebase reflog test coverage
* rebase --merge: fix reflog messages for --continue and --skip
* rebase --apply: respect GIT_REFLOG_ACTION
* rebase --abort: improve reflog message
* unify reflog messages between the two rebase backends
This series is based on pw/use-inprocess-checkout-in-rebase
Phillip Wood (8):
t3406: rework rebase reflog tests
rebase --apply: improve fast-forward reflog message
rebase --merge: fix reflog when continuing
rebase --merge: fix reflog message after skipping
rebase --apply: respect GIT_REFLOG_ACTION
rebase --apply: make reflog messages match rebase --merge
rebase --abort: improve reflog message
rebase: cleanup action handling
builtin/rebase.c | 146 ++++++++++++------------------
sequencer.c | 5 ++
t/t3406-rebase-message.sh | 185 +++++++++++++++++++++++++++++++-------
3 files changed, 215 insertions(+), 121 deletions(-)
base-commit: aa1df8146d70bb85c63b0999868fe29aebc1173e
Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-1150%2Fphillipwood%2Fwip%2Frebase-reflog-fixes-v4
Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-1150/phillipwood/wip/rebase-reflog-fixes-v4
Pull-Request: https://github.com/gitgitgadget/git/pull/1150
Range-diff vs v3:
2: b9255ad35d2 ! 1: 8d5ae067ce3 t3406: rework rebase reflog tests
@@ Commit message
the "merge" and "apply" backends. The test coverage for the "apply"
backend now includes setting GIT_REFLOG_ACTION.
- Note that rebasing the "conflicts" branch does not create any
- conflicts yet. A commit to do that will be added in the next commit
- and the diff ends up smaller if we have don't rename the branch when
- it is added.
+ Note that rebasing the "conflicts" branch does not create any conflicts
+ yet. A commit to do that will be added shortly and the diff ends up
+ smaller if we have don't rename the branch when it is added.
Signed-off-by: Phillip Wood <phillip.wood@dunelm.org.uk>
@@ t/t3406-rebase-message.sh: test_expect_success 'error out early upon -C<n> or --
+ ) &&
+
+ git log -g --format=%gs -2 >actual &&
++ if test "$mode" = "--apply"
++ then
++ finish_msg="refs/heads/fast-forward onto $(git rev-parse main)"
++ else
++ finish_msg="returning to refs/heads/fast-forward"
++ fi &&
+ write_reflog_expect <<-EOF &&
-+ ${reflog_action:-rebase} (finish): returning to refs/heads/fast-forward
++ ${reflog_action:-rebase} (finish): $finish_msg
+ ${reflog_action:-rebase} (start): checkout main
EOF
test_cmp expect actual &&
1: a84cf971a75 ! 2: 12701ef7c7c rebase --apply: remove duplicated code
@@ Metadata
Author: Phillip Wood <phillip.wood@dunelm.org.uk>
## Commit message ##
- rebase --apply: remove duplicated code
+ rebase --apply: improve fast-forward reflog message
- Use move_to_original_branch() when reattaching HEAD after a fast-forward
- rather than open coding a copy of that code. move_to_original_branch()
- does not call reset_head() if head_name is NULL but there should be no
- user visible changes even though we currently call reset_head() in that
- case. The reason for this is that the reset_head() call does not add a
- message to the reflog because we're not changing the commit that HEAD
- points to and so lock_ref_for_update() elides the update. When head_name
- is not NULL then reset_head() behaves like "git symbolic-ref" and so the
- reflog is updated.
+ Using move_to_original_branch() when reattaching HEAD after a
+ fast-forward improves HEAD's reflog message when rebasing a branch. This
+ is because it uses separate reflog messages for "HEAD" and
+ "branch". HEAD's reflog will now record which branch we're returning to.
- Note that the removal of "strbuf_release(&msg)" is safe as there is an
- identical call just above this hunk which can be seen by viewing the
- diff with -U6.
+ When rebasing a detached HEAD there is no change in behavior. We
+ currently call reset_head() when head_name is NULL but
+ move_to_original_branch() does not. However the existing call does not
+ add a message to the reflog because we're not changing the commit that
+ HEAD points to and so lock_ref_for_update() skips the update.
+ Note that the removal of "strbuf_reset(&msg)" is safe as there is a call
+ to strbuf_release(&msf) just above this hunk which can be seen by
+ viewing the diff with -U6.
+
+ Helped-by: Junio C Hamano <gitster@pobox.com>
Signed-off-by: Phillip Wood <phillip.wood@dunelm.org.uk>
## builtin/rebase.c ##
@@ builtin/rebase.c: int cmd_rebase(int argc, const char **argv, const char *prefix
ret = finish_rebase(&options);
goto cleanup;
}
+
+ ## t/t3406-rebase-message.sh ##
+@@ t/t3406-rebase-message.sh: test_reflog () {
+ ) &&
+
+ git log -g --format=%gs -2 >actual &&
+- if test "$mode" = "--apply"
+- then
+- finish_msg="refs/heads/fast-forward onto $(git rev-parse main)"
+- else
+- finish_msg="returning to refs/heads/fast-forward"
+- fi &&
+ write_reflog_expect <<-EOF &&
+- ${reflog_action:-rebase} (finish): $finish_msg
++ ${reflog_action:-rebase} (finish): returning to refs/heads/fast-forward
+ ${reflog_action:-rebase} (start): checkout main
+ EOF
+ test_cmp expect actual &&
3: ea4da25a19c = 3: 2c965f4b97c rebase --merge: fix reflog when continuing
4: 225ff4baef7 = 4: 17138d910f0 rebase --merge: fix reflog message after skipping
5: 1094681eb11 = 5: 0c71c732904 rebase --apply: respect GIT_REFLOG_ACTION
6: a5338e6bdd8 = 6: 3f6b2e39f40 rebase --apply: make reflog messages match rebase --merge
7: aa808725fb8 = 7: c8fa57f129d rebase --abort: improve reflog message
8: f9c8664b883 = 8: ed800844ba1 rebase: cleanup action handling
--
gitgitgadget
^ permalink raw reply [relevance 2%]
* [PATCH v4 4/8] rebase --merge: fix reflog message after skipping
2022-10-21 9:21 2% ` [PATCH v4 0/8] rebase: make reflog messages independent of the backend Phillip Wood via GitGitGadget
2022-10-21 9:21 2% ` [PATCH v4 3/8] rebase --merge: fix reflog when continuing Phillip Wood via GitGitGadget
@ 2022-10-21 9:21 2% ` Phillip Wood via GitGitGadget
1 sibling, 0 replies; 200+ results
From: Phillip Wood via GitGitGadget @ 2022-10-21 9:21 UTC (permalink / raw)
To: git
Cc: Phillip Wood, Christian Couder, Elijah Newren,
Ævar Arnfjörð Bjarmason, Calvin Wan, Emily Shaffer,
Glen Choo, Victoria Dye, Phillip Wood, Phillip Wood
From: Phillip Wood <phillip.wood@dunelm.org.uk>
The reflog message for every pick after running "rebase --skip" looks
like
rebase (skip) (pick): commit subject line
Fix this by not appending " (skip)" to the reflog action.
Signed-off-by: Phillip Wood <phillip.wood@dunelm.org.uk>
---
builtin/rebase.c | 2 --
t/t3406-rebase-message.sh | 24 ++++++++++++++++++++++++
2 files changed, 24 insertions(+), 2 deletions(-)
diff --git a/builtin/rebase.c b/builtin/rebase.c
index 414526f83a8..c1e68173b5f 100644
--- a/builtin/rebase.c
+++ b/builtin/rebase.c
@@ -1297,8 +1297,6 @@ int cmd_rebase(int argc, const char **argv, const char *prefix)
struct string_list merge_rr = STRING_LIST_INIT_DUP;
options.action = "skip";
- set_reflog_action(&options);
-
rerere_clear(the_repository, &merge_rr);
string_list_clear(&merge_rr, 1);
ropts.flags = RESET_HEAD_HARD;
diff --git a/t/t3406-rebase-message.sh b/t/t3406-rebase-message.sh
index 3ca2fbb0d59..8aa6a79acc1 100755
--- a/t/t3406-rebase-message.sh
+++ b/t/t3406-rebase-message.sh
@@ -163,6 +163,30 @@ test_reflog () {
# check there is only one new entry in the branch reflog
test_cmp_rev fast-forward@{1} X
'
+
+ test_expect_success "rebase $mode --skip reflog${reflog_action:+ GIT_REFLOG_ACTION=$reflog_action}" '
+ git checkout conflicts &&
+ test_when_finished "git reset --hard Q" &&
+
+ (
+ if test -n "$reflog_action"
+ then
+ GIT_REFLOG_ACTION="$reflog_action" &&
+ export GIT_REFLOG_ACTION
+ fi &&
+ test_must_fail git rebase $mode main &&
+ git rebase --skip
+ ) &&
+
+ git log -g --format=%gs -4 >actual &&
+ write_reflog_expect <<-EOF &&
+ ${reflog_action:-rebase} (finish): returning to refs/heads/conflicts
+ ${reflog_action:-rebase} (pick): Q
+ ${reflog_action:-rebase} (pick): P
+ ${reflog_action:-rebase} (start): checkout main
+ EOF
+ test_cmp expect actual
+ '
}
test_reflog --merge
--
gitgitgadget
^ permalink raw reply related [relevance 2%]
* [PATCH v4 3/8] rebase --merge: fix reflog when continuing
2022-10-21 9:21 2% ` [PATCH v4 0/8] rebase: make reflog messages independent of the backend Phillip Wood via GitGitGadget
@ 2022-10-21 9:21 2% ` Phillip Wood via GitGitGadget
2022-10-21 17:37 2% ` Junio C Hamano
2022-10-21 9:21 2% ` [PATCH v4 4/8] rebase --merge: fix reflog message after skipping Phillip Wood via GitGitGadget
1 sibling, 1 reply; 200+ results
From: Phillip Wood via GitGitGadget @ 2022-10-21 9:21 UTC (permalink / raw)
To: git
Cc: Phillip Wood, Christian Couder, Elijah Newren,
Ævar Arnfjörð Bjarmason, Calvin Wan, Emily Shaffer,
Glen Choo, Victoria Dye, Phillip Wood, Phillip Wood
From: Phillip Wood <phillip.wood@dunelm.org.uk>
The reflog message for a conflict resolution committed by "rebase
--continue" looks like
rebase (continue): commit subject line
Unfortunately the reflog message each subsequent pick look like
rebase (continue) (pick): commit subject line
Fix this by setting the reflog message for "rebase --continue" in
sequencer_continue() so it does not affect subsequent commits. This
introduces a memory leak similar to the one leaking GIT_REFLOG_ACTION
in pick_commits(). Both of these will be fixed in a future series that
stops the sequencer calling setenv().
If we fail to commit the staged changes then we error out so
GIT_REFLOG_ACTION does not need to be reset in that case.
Signed-off-by: Phillip Wood <phillip.wood@dunelm.org.uk>
---
builtin/rebase.c | 2 --
sequencer.c | 5 +++++
t/t3406-rebase-message.sh | 9 +++++++--
3 files changed, 12 insertions(+), 4 deletions(-)
diff --git a/builtin/rebase.c b/builtin/rebase.c
index e67020b3586..414526f83a8 100644
--- a/builtin/rebase.c
+++ b/builtin/rebase.c
@@ -1271,8 +1271,6 @@ int cmd_rebase(int argc, const char **argv, const char *prefix)
int fd;
options.action = "continue";
- set_reflog_action(&options);
-
/* Sanity check */
if (get_oid("HEAD", &head))
die(_("Cannot read HEAD"));
diff --git a/sequencer.c b/sequencer.c
index 61a8e0020d5..5790b35d763 100644
--- a/sequencer.c
+++ b/sequencer.c
@@ -4785,6 +4785,8 @@ int sequencer_continue(struct repository *r, struct replay_opts *opts)
if (read_populate_opts(opts))
return -1;
if (is_rebase_i(opts)) {
+ char *previous_reflog_action;
+
if ((res = read_populate_todo(r, &todo_list, opts)))
goto release_todo_list;
@@ -4795,10 +4797,13 @@ int sequencer_continue(struct repository *r, struct replay_opts *opts)
unlink(rebase_path_dropped());
}
+ previous_reflog_action = xstrdup(getenv(GIT_REFLOG_ACTION));
+ setenv(GIT_REFLOG_ACTION, reflog_message(opts, "continue", NULL), 1);
if (commit_staged_changes(r, opts, &todo_list)) {
res = -1;
goto release_todo_list;
}
+ setenv(GIT_REFLOG_ACTION, previous_reflog_action, 1);
} else if (!file_exists(get_todo_path(opts)))
return continue_single_pick(r, opts);
else if ((res = read_populate_todo(r, &todo_list, opts)))
diff --git a/t/t3406-rebase-message.sh b/t/t3406-rebase-message.sh
index 5253dd1551d..3ca2fbb0d59 100755
--- a/t/t3406-rebase-message.sh
+++ b/t/t3406-rebase-message.sh
@@ -17,6 +17,7 @@ test_expect_success 'setup' '
git checkout -b conflicts O &&
test_commit P &&
+ test_commit conflict-X fileX &&
test_commit Q &&
git checkout -b topic O &&
@@ -107,13 +108,17 @@ test_reflog () {
GIT_REFLOG_ACTION="$reflog_action" &&
export GIT_REFLOG_ACTION
fi &&
- git rebase $mode main
+ test_must_fail git rebase $mode main &&
+ echo resolved >fileX &&
+ git add fileX &&
+ git rebase --continue
) &&
- git log -g --format=%gs -4 >actual &&
+ git log -g --format=%gs -5 >actual &&
write_reflog_expect <<-EOF &&
${reflog_action:-rebase} (finish): returning to refs/heads/conflicts
${reflog_action:-rebase} (pick): Q
+ ${reflog_action:-rebase} (continue): conflict-X
${reflog_action:-rebase} (pick): P
${reflog_action:-rebase} (start): checkout main
EOF
--
gitgitgadget
^ permalink raw reply related [relevance 2%]
* pw/rebase-reflog-fixes (was Re: What's cooking in git.git (Oct 2022, #06; Wed, 19))
2022-10-20 1:31 3% What's cooking in git.git (Oct 2022, #06; Wed, 19) Junio C Hamano
@ 2022-10-20 9:56 0% ` Phillip Wood
0 siblings, 0 replies; 200+ results
From: Phillip Wood @ 2022-10-20 9:56 UTC (permalink / raw)
To: Junio C Hamano, git
Hi Junio
> * pw/rebase-reflog-fixes (2022-10-17) 9 commits
> - rebase: cleanup action handling
> - rebase --abort: improve reflog message
> - rebase --apply: make reflog messages match rebase --merge
> - rebase --apply: respect GIT_REFLOG_ACTION
> - rebase --merge: fix reflog message after skipping
> - rebase --merge: fix reflog when continuing
> - t3406: rework rebase reflog tests
> - rebase --apply: remove duplicated code
> - Merge branch 'pw/rebase-keep-base-fixes' into pw/rebase-reflog-fixes
> (this branch uses pw/rebase-keep-base-fixes.)
>
> Fix some bugs in the reflog messages when rebasing and changes the
> reflog messages of "rebase --apply" to match "rebase --merge" with
> the aim of making the reflog easier to parse.
>
> Will merge to 'next'??
> source: <pull.1150.v3.git.1665567312.gitgitgadget@gmail.com>
Can you hold off on this one please, I'm planning to re-roll next week
to address <xmqq35brh9re.fsf@gitster.g>
Thanks
Phillip
^ permalink raw reply [relevance 0%]
* What's cooking in git.git (Oct 2022, #06; Wed, 19)
@ 2022-10-20 1:31 3% Junio C Hamano
2022-10-20 9:56 0% ` pw/rebase-reflog-fixes (was Re: What's cooking in git.git (Oct 2022, #06; Wed, 19)) Phillip Wood
0 siblings, 1 reply; 200+ results
From: Junio C Hamano @ 2022-10-20 1:31 UTC (permalink / raw)
To: git
Here are the topics that have been cooking in my tree. Commits
prefixed with '+' are in 'next' (being in 'next' is a sign that a
topic is stable enough to be used and are candidate to be in a future
release). Commits prefixed with '-' are only in 'seen', and aren't
considered "accepted" at all. A topic without enough support may be
discarded after a long period of no activity.
Git 2.38.1 and friends that address a couple of CVE on maintenance
tracks have been released and they are all merged up to the
development branches.
Some topics outside 'next' have been expecting updates for too long
and we may want to discard them, unless they see some activities.
Copies of the source code to Git live in many repositories, and the
following is a list of the ones I push into or their mirrors. Some
repositories have only a subset of branches.
With maint, master, next, seen, todo:
git://git.kernel.org/pub/scm/git/git.git/
git://repo.or.cz/alt-git.git/
https://kernel.googlesource.com/pub/scm/git/git/
https://github.com/git/git/
https://gitlab.com/git-vcs/git/
With all the integration branches and topics broken out:
https://github.com/gitster/git/
Even though the preformatted documentation in HTML and man format
are not sources, they are published in these repositories for
convenience (replace "htmldocs" with "manpages" for the manual
pages):
git://git.kernel.org/pub/scm/git/git-htmldocs.git/
https://github.com/gitster/git-htmldocs.git/
Release tarballs are available at:
https://www.kernel.org/pub/software/scm/git/
--------------------------------------------------
[Graduated to 'master']
* ab/coding-guidelines-c99 (2022-10-11) 5 commits
(merged to 'next' on 2022-10-13 at c6b2b74dfb)
+ CodingGuidelines: recommend against unportable C99 struct syntax
+ CodingGuidelines: mention C99 features we can't use
+ CodingGuidelines: allow declaring variables in for loops
+ CodingGuidelines: mention dynamic C99 initializer elements
+ CodingGuidelines: update for C99
Update CodingGuidelines to clarify what features to use and avoid
in C99.
source: <20221010203800.2154698-1-gitster@pobox.com>
* jh/struct-zero-init-with-older-clang (2022-10-10) 1 commit
(merged to 'next' on 2022-10-13 at 393abc3019)
+ config.mak.dev: disable suggest braces error on old clang versions
Work around older clang that warns against C99 zero initialization
syntax for struct.
source: <pull.1375.v2.git.1665416340806.gitgitgadget@gmail.com>
* rs/archive-dedup-printf (2022-10-11) 1 commit
(merged to 'next' on 2022-10-13 at af770cf00f)
+ archive: deduplicate verbose printing
Code simplification.
source: <af5611aa-8662-7508-4f00-7fcf4e9cbcc6@web.de>
--------------------------------------------------
[New Topics]
* jk/unused-anno-more (2022-10-17) 12 commits
- ll-merge: mark unused parameters in callbacks
- diffcore-pickaxe: mark unused parameters in pickaxe functions
- convert: mark unused parameter in null stream filter
- apply: mark unused parameters in noop error/warning routine
- apply: mark unused parameters in handlers
- date: mark unused parameters in handler functions
- string-list: mark unused callback parameters
- object-file: mark unused parameters in hash_unknown functions
- mark unused parameters in trivial compat functions
- update-index: drop unused argc from do_reupdate()
- submodule--helper: drop unused argc from module_list_compute()
- diffstat_consume(): assert non-zero length
More UNUSED annotation to help using -Wunused option with the
compiler.
Will merge to 'next'.
source: <Y036whEorZV0rOgB@coredump.intra.peff.net>
* tb/save-keep-pack-during-geometric-repack (2022-10-17) 1 commit
- repack: don't remove .keep packs with `--pack-kept-objects`
When geometric repacking feature is in use together with the
--pack-kept-objects option, we lost packs marked with .keep files.
Will merge to 'next'.
source: <6a012cd625c1d197ede91c85299cbfb37adf356b.1666059872.git.me@ttaylorr.com>
* mm/git-pm-try-catch-syntax-fix (2022-10-17) 1 commit
- Git.pm: add semicolon after catch statement
Fix a longstanding syntax error in Git.pm error codepath.
Will merge to 'next'??
source: <20221016212236.12453-2-michael@mcclimon.org>
* ab/macos-build-fix-with-sha1dc (2022-10-19) 1 commit
(merged to 'next' on 2022-10-19 at 408ce79f33)
+ fsmonitor OSX: compile with DC_SHA1=YesPlease
Enable macOS build with sha1dc hash function.
Will merge to 'master'.
source: <patch-v2-1.4-392fabdb456-20221019T010222Z-avarab@gmail.com>
* jk/use-o0-in-leak-sanitizer (2022-10-19) 1 commit
(merged to 'next' on 2022-10-19 at 27c2546b98)
+ Makefile: force -O0 when compiling with SANITIZE=leak
Avoid false-positive from LSan whose assumption may be broken with
higher optimization levels.
Will merge to 'master'.
source: <Y08JZVDgJpJvrBiz@coredump.intra.peff.net>
* jr/embargoed-releases-doc (2022-10-19) 1 commit
- embargoed releases: also describe the git-security list and the process
The role the security mailing list plays in an embargoed release
has been documented.
Will merge to 'next'?
source: <pull.1345.v2.git.1666142160427.gitgitgadget@gmail.com>
--------------------------------------------------
[Stalled]
* ag/merge-strategies-in-c (2022-08-10) 14 commits
- sequencer: use the "octopus" strategy without forking
- sequencer: use the "resolve" strategy without forking
- merge: use the "octopus" strategy without forking
- merge: use the "resolve" strategy without forking
- merge-octopus: rewrite in C
- merge-recursive: move better_branch_name() to merge.c
- merge-resolve: rewrite in C
- merge-one-file: rewrite in C
- update-index: move add_cacheinfo() to read-cache.c
- merge-index: add a new way to invoke `git-merge-one-file'
- merge-index: drop the index
- merge-index: libify merge_one_path() and merge_all()
- t6060: add tests for removed files
- t6060: modify multiple files to expose a possible issue with merge-index
An attempt to rewrite remaining merge strategies from shell to C.
Needs more work.
At the minimum, we should lose 11/14 and possibly 08/14.
cf. <xmqq7d36vfur.fsf@gitster.g>
source: <20220809185429.20098-1-alban.gruin@gmail.com>
* po/glossary-around-traversal (2022-07-09) 3 commits
- glossary: add reachability bitmap description
- glossary: add commit graph description
- glossary: add Object DataBase (ODB) abbreviation
The glossary entries for "commit-graph file" and "reachability
bitmap" have been added.
Expecting a reroll.
cf. <dfe0c1ab-33f8-f13e-71ce-1829bb0d2d7f@iee.email>
source: <pull.1282.git.1657385781.gitgitgadget@gmail.com>
* gc/submodule-clone-update-with-branches (2022-08-29) 6 commits
- clone, submodule update: check out branches
- submodule--helper: refactor up-to-date criterion
- submodule: return target of submodule symref
- t5617: drop references to remote-tracking branches
- repo-settings: add submodule_propagate_branches
- clone: teach --detach option
"git clone --recurse-submodules" and "git submodule update" learns
to honor the "propagete branches" option.
Expecting a reroll.
cf. <20220901200047.515294-1-jonathantanmy@google.com> and others
source: <pull.1321.git.git.1661806456.gitgitgadget@gmail.com>
* tb/diffstat-with-utf8-strwidth (2022-09-14) 1 commit
- diff.c: use utf8_strwidth() to count display width
"git diff --stat" etc. were invented back when everything was ASCII
and strlen() was a way to measure the display width of a string;
adjust them to compute the display width assuming UTF-8 pathnames.
Expecting a reroll.
source: <20220914151333.3309-1-tboegi@web.de>
* mj/credential-helper-auth-headers (2022-09-13) 8 commits
- http: set specific auth scheme depending on credential
- http: move proactive auth to first slot creation
- http: store all request headers on active_request_slot
- credential: add WWW-Authenticate header to cred requests
- http: read HTTP WWW-Authenticate response headers
- osxkeychain: clarify that we ignore unknown lines
- netrc: ignore unknown lines (do not die)
- wincred: ignore unknown lines (do not die)
Extending credential helper protocol.
Expecting a reroll.
A separate non-RFC submission of the first three is expected.
cf. <AS8PR03MB86897FAC3E1E4F03D4420644C04F9@AS8PR03MB8689.eurprd03.prod.outlook.com>
source: <pull.1352.git.1663097156.gitgitgadget@gmail.com>
* cw/submodule-status-in-parallel (2022-09-23) 4 commits
. diff-lib: parallelize run_diff_files for submodules
. diff-lib: refactor functions
. submodule: move status parsing into function
. run-command: add pipe_output to run_processes_parallel
Allow the internal "diff-files" engine to run "how has this
submodule changed?" in parallel to speed up "git status".
Breaks its self check.
cf. https://github.com/git/git/actions/runs/3115673002/jobs/5052804463
source: <20220922232947.631309-1-calvinwan@google.com>
* es/mark-gc-cruft-as-experimental (2022-08-03) 2 commits
- config: let feature.experimental imply gc.cruftPacks=true
- gc: add tests for --cruft and friends
Enable gc.cruftpacks by default for those who opt into
feature.experimental setting.
Expecting a reroll.
cf. <220804.86a68ke9d5.gmgdl@evledraar.gmail.com>
cf. <6803b725-526e-a1c8-f15c-a9ed4a144d4c@github.com>
source: <20220803205721.3686361-1-emilyshaffer@google.com>
* es/doc-creation-factor-fix (2022-07-28) 2 commits
- range-diff: clarify --creation-factor=<factor>
- format-patch: clarify --creation-factor=<factor>
Expecting a reroll by somebody more familiar with the logic
cf. <xmqqo7wfix7p.fsf@gitster.g>
source: <7229p500-p2r4-on87-6802-8o90s36rr3s4@tzk.qr>
* cw/remote-object-info (2022-08-13) 7 commits
. SQUASH???
. cat-file: add remote-object-info to batch-command
. transport: add client support for object-info
. serve: advertise object-info feature
. protocol-caps: initialization bug fix
. fetch-pack: move fetch initialization
. fetch-pack: refactor packet writing
A client component to talk with the object-info endpoint.
Expecting a reroll.
Under SANITIZE=address, t1006-cat-file.sh finds a breakage.
cf. <20220728230210.2952731-1-calvinwan@google.com>
cf. <CAFySSZDvgwbbHCHfyuaqX3tKsr-GjJ9iihygg6rNNe46Ys7_EA@mail.gmail.com>
source: <20220728230210.2952731-1-calvinwan@google.com>
--------------------------------------------------
[Cooking]
* js/cmake-updates (2022-10-19) 5 commits
- cmake: increase time-out for a long-running test
- cmake: avoid editing t/test-lib.sh
- add -p: avoid ambiguous signed/unsigned comparison
- cmake: copy the merge tools for testing
- cmake: make it easier to diagnose regressions in CTest runs
Update to build procedure with VS using CMake/CTest.
Will merge to 'next'?
source: <pull.1320.v3.git.1666090745.gitgitgadget@gmail.com>
* gc/bare-repo-discovery (2022-10-13) 1 commit
(merged to 'next' on 2022-10-17 at 3de2be7c14)
+ config: respect includes in protected config
Allow configuration files in "protected" scopes to include other
configuration files.
Will merge to 'master'.
source: <pull.1360.v2.git.git.1665683027912.gitgitgadget@gmail.com>
* jh/trace2-timers-and-counters (2022-10-13) 7 commits
- trace2: add global counter mechanism
- trace2: add stopwatch timers
- trace2: convert ctx.thread_name from strbuf to pointer
- trace2: rename the thread_name argument to trace2_thread_start
- api-trace2.txt: elminate section describing the public trace2 API
- tr2tls: clarify TLS terminology
- trace2: use size_t alloc,nr_open_regions in tr2tls_thread_ctx
Two new facilities, "timer" and "counter", are introduced to the
trace2 API.
source: <pull.1373.v2.git.1665600750.gitgitgadget@gmail.com>
* tb/midx-bitmap-selection-fix (2022-10-13) 4 commits
- pack-bitmap-write.c: instrument number of reused bitmaps
- midx.c: instrument MIDX and bitmap generation with trace2 regions
- midx.c: consider annotated tags during bitmap selection
- midx.c: fix whitespace typo
A bugfix with tracing support in midx codepath
Will merge to 'next'.
source: <cover.1665612094.git.me@ttaylorr.com>
* tb/remove-unused-pack-bitmap (2022-10-17) 1 commit
- builtin/repack.c: remove redundant pack-based bitmaps
When creating a multi-pack bitmap, remove per-pack bitmap files
unconditionally as they will never be consulted.
Will merge to 'next'?
source: <1e0ef7ee7ff5feb323c77e594cd65433fb1d99f7.1666061096.git.me@ttaylorr.com>
* nw/t1002-cleanup (2022-10-14) 1 commit
- t1002: modernize outdated conditional
Code clean-up in test.
Will merge to 'next'.
source: <pull.1362.v3.git.git.1665734502591.gitgitgadget@gmail.com>
* zh/patch-id (2022-10-14) 7 commits
- documentation: format-patch: clarify requirements for patch-ids to match
- builtin: patch-id: remove unused diff-tree prefix
- builtin: patch-id: add --include-whitespace as a command mode
- patch-id: fix patch-id for mode changes
- builtin: patch-id: fix patch-id with binary diffs
- patch-id: use stable patch-id for rebases
- patch-id: fix stable patch id for binary / header-only
A new "--include-whitespace" option is added to "git patch-id", and
existing bugs in the internal patch-id logic that did not match
what "git patch-id" produces have been corrected.
Will merge to 'next'?
source: <pull.1359.v3.git.1665737804.gitgitgadget@gmail.com>
* hl/archive-recursive (2022-10-19) 10 commits
- fixup! archive: add tests for git archive --recurse-submodules
- archive: add tests for git archive --recurse-submodules
- archive: add --recurse-submodules to git-archive command
- archive: remove global repository from archive_args
- archive: pass repo objects to write_archive handlers
- tree: add repository parameter to read_tree_fn_t
- tree: handle submodule case for read_tree_at properly
- tree: increase test coverage for tree.c
- tree: update cases to use repo_ tree methods
- tree: do not use the_repository for tree traversal methods.
"git archive" has been taught "--recurse-submodules" option to
create a tarball that includes contents from submodules.
Expecting a reroll.
source: <pull.1359.v3.git.git.1665973401.gitgitgadget@gmail.com>
* pw/rebase-keep-base-fixes (2022-10-17) 8 commits
- rebase --keep-base: imply --no-fork-point
- rebase --keep-base: imply --reapply-cherry-picks
- rebase: factor out branch_base calculation
- rebase: rename merge_base to branch_base
- rebase: store orig_head as a commit
- rebase: be stricter when reading state files containing oids
- t3416: set $EDITOR in subshell
- t3416: tighten two tests
(this branch is used by pw/rebase-reflog-fixes.)
"git rebase --keep-base" used to discard the commits that are
already cherry-picked to the upstream, even when "keep-base" meant
that the base, on top of which the history is being rebuilt, does
not yet include these cherry-picked commits. The --keep-base
option now implies --reapply-cherry-picks and --no-fork-point
options.
Will merge to 'next'??
source: <pull.1323.v4.git.1666012665.gitgitgadget@gmail.com>
* ab/grep-simplify-extended-expression (2022-10-11) 1 commit
(merged to 'next' on 2022-10-13 at 07993f09bc)
+ grep.c: remove "extended" in favor of "pattern_expression", fix segfault
Giving "--invert-grep" and "--all-match" without "--grep" to the
"git log" command resulted in an attempt to access grep pattern
expression structure that has not been allocated, which has been
corrected.
Will merge to 'master'.
source: <patch-v2-1.1-6ad7627706f-20221011T094715Z-avarab@gmail.com>
* pw/rebase-reflog-fixes (2022-10-17) 9 commits
- rebase: cleanup action handling
- rebase --abort: improve reflog message
- rebase --apply: make reflog messages match rebase --merge
- rebase --apply: respect GIT_REFLOG_ACTION
- rebase --merge: fix reflog message after skipping
- rebase --merge: fix reflog when continuing
- t3406: rework rebase reflog tests
- rebase --apply: remove duplicated code
- Merge branch 'pw/rebase-keep-base-fixes' into pw/rebase-reflog-fixes
(this branch uses pw/rebase-keep-base-fixes.)
Fix some bugs in the reflog messages when rebasing and changes the
reflog messages of "rebase --apply" to match "rebase --merge" with
the aim of making the reflog easier to parse.
Will merge to 'next'??
source: <pull.1150.v3.git.1665567312.gitgitgadget@gmail.com>
* sd/doc-smtp-encryption (2022-10-12) 1 commit
- docs: git-send-email: difference between ssl and tls smtp-encryption
Expecting a reroll??
cf. <19e5b678-6014-d783-347f-9169371aaa09@iee.email>
source: <20221012150619.12877-1-sndanailov@wired4ever.net>
* jc/symbolic-ref-no-recurse (2022-10-09) 1 commit
(merged to 'next' on 2022-10-13 at 532a3f6a5f)
+ symbolic-ref: teach "--[no-]recurse" option
After checking out a "branch" that is a symbolic-ref that points at
another branch, "git symbolic-ref HEAD" reports the underlying
branch, not the symbolic-ref the user gave checkout as argument.
The command learned the "--no-recurse" option to stop after
dereferencing a symbolic-ref only once.
Will merge to 'master'.
source: <xmqqleprcn08.fsf@gitster.g>
* ds/cmd-main-reorder (2022-10-08) 1 commit
(merged to 'next' on 2022-10-14 at d7f07dbecf)
+ git.c: improve code readability in cmd_main()
Code clean-up.
Will merge to 'master'.
source: <pull.1355.v3.git.git.1665246097190.gitgitgadget@gmail.com>
* ed/fsmonitor-inotify (2022-10-14) 7 commits
. fsmonitor: update doc for Linux
. fsmonitor: test updates
. fsmonitor: enable fsmonitor for Linux
. fsmonitor: implement filesystem change listener for Linux
. fsmonitor: determine if filesystem is local or remote
. fsmonitor: prepare to share code between Mac OS and Linux
. Merge branch 'ed/fsmonitor-on-networked-macos' into ed/fsmonitor-inotify
Bundled fsmonitor for Linux using inotify API.
Needs review.
Occasional breakages of t7527.16?
source: <pull.1352.v2.git.git.1665783944.gitgitgadget@gmail.com>
* en/sparse-checkout-design (2022-10-08) 1 commit
- sparse-checkout.txt: new document with sparse-checkout directions
Design doc.
Needs review.
source: <pull.1367.v3.git.1665269538608.gitgitgadget@gmail.com>
* jc/more-sanitizer-at-ci (2022-10-11) 1 commit
. ci: add address and undefined sanitizer tasks
Enable address and undefined sanitizer tasks at GitHub Actions CI.
With this p4 tests seem to die with the server side going away.
source: <xmqqpmezxl9p.fsf@gitster.g>
* od/ci-use-checkout-v3-when-applicable (2022-10-10) 2 commits
. ci(main): linux32 uses actions/checkout@v2
. ci(main): upgrade actions/checkout to v3
Attempt to update GitHub CI to use actions/checkout@v3
Expecting a reroll.
Seems to break the CI completely.
source: <pull.1354.git.git.1665388136.gitgitgadget@gmail.com>
* ab/run-hook-api-cleanup (2022-10-12) 15 commits
- run-command.c: remove "max_processes", add "const" to signal() handler
- run-command.c: pass "opts" further down, and use "opts->processes"
- run-command.c: use "opts->processes", not "pp->max_processes"
- run-command.c: don't copy "data" to "struct parallel_processes"
- run-command.c: don't copy "ungroup" to "struct parallel_processes"
- run-command.c: don't copy *_fn to "struct parallel_processes"
- run-command.c: make "struct parallel_processes" const if possible
- run-command API: move *_tr2() users to "run_processes_parallel()"
- run-command API: have run_process_parallel() take an "opts" struct
- run-command.c: use designated init for pp_init(), add "const"
- run-command API: don't fall back on online_cpus()
- run-command API: make "n" parameter a "size_t"
- run-command tests: use "return", not "exit"
- run-command API: have "run_processes_parallel{,_tr2}()" return void
- run-command test helper: use "else if" pattern
Move a global variable added as a hack during regression fixes to
its proper place in the API.
Will merge to 'next'.
source: <cover-v3-00.15-00000000000-20221012T205712Z-avarab@gmail.com>
* pw/test-todo (2022-10-06) 3 commits
- test_todo: allow [verbose] test as the command
- test_todo: allow [!] grep as the command
- tests: add test_todo() to mark known breakages
RFC for test framework improvement.
Needs review.
source: <pull.1374.git.1665068476.gitgitgadget@gmail.com>
* rj/branch-edit-description-with-nth-checkout (2022-10-10) 1 commit
(merged to 'next' on 2022-10-14 at 90850a2211)
+ branch: support for shortcuts like @{-1}, completed
"git branch --edit-description @{-1}" is now a way to edit branch
description of the branch you were on before switching to the
current branch.
Will merge to 'master'.
source: <fbf84e26-4306-c8df-0e2c-45dc94129e3a@gmail.com>
* rs/diff-caret-bang-with-parents (2022-10-01) 3 commits
(merged to 'next' on 2022-10-17 at 24609eb777)
+ diff: support ^! for merges
+ revisions.txt: unspecify order of resolved parts of ^!
+ revision: use strtol_i() for exclude_parent
"git diff rev^!" did not show combined diff to go to the rev from
its parents.
Will merge to 'master'.
source: <16c49d20-cafc-4b48-3c6b-e11c74c29abb@web.de>
* ab/doc-synopsis-and-cmd-usage (2022-10-13) 34 commits
- tests: assert consistent whitespace in -h output
- tests: start asserting that *.txt SYNOPSIS matches -h output
- doc txt & -h consistency: make "worktree" consistent
- worktree: define subcommand -h in terms of command -h
- reflog doc: list real subcommands up-front
- doc txt & -h consistency: make "commit" consistent
- doc txt & -h consistency: make "diff-tree" consistent
- doc txt & -h consistency: use "[<label>...]" for "zero or more"
- doc txt & -h consistency: make "annotate" consistent
- doc txt & -h consistency: make "stash" consistent
- doc txt & -h consistency: add missing options
- doc txt & -h consistency: use "git foo" form, not "git-foo"
- doc txt & -h consistency: make "bundle" consistent
- doc txt & -h consistency: make "read-tree" consistent
- doc txt & -h consistency: make "rerere" consistent
- doc txt & -h consistency: add missing options and labels
- doc txt & -h consistency: make output order consistent
- doc txt & -h consistency: add or fix optional "--" syntax
- doc txt & -h consistency: fix mismatching labels
- doc SYNOPSIS & -h: use "-" to separate words in labels, not "_"
- doc txt & -h consistency: use "<options>", not "<options>..."
- stash doc SYNOPSIS & -h: correct padding around "[]()"
- doc txt & -h consistency: correct padding around "[]()"
- doc txt & -h consistency: balance unbalanced "[" and "]"
- doc txt & -h consistency: add "-z" to cat-file "-h"
- doc txt & -h consistency: fix incorrect alternates syntax
- doc txt & -h consistency: word-wrap
- built-ins: consistently add "\n" between "usage" and options
- doc SYNOPSIS: consistently use ' for commands
- doc SYNOPSIS: don't use ' for subcommands
- bundle: define subcommand -h in terms of command -h
- builtin/bundle.c: indent with tabs
- CodingGuidelines: update and clarify command-line conventions
- tests: assert *.txt SYNOPSIS and -h output
The short-help text shown by "git cmd -h" and the synopsis text
shown at the beginning of "git help cmd" have been made more
consistent.
Will merge to 'next'?
source: <cover-v5-00.34-00000000000-20221013T153625Z-avarab@gmail.com>
* ab/coccicheck-incremental (2022-10-14) 11 commits
- spatchcache: add a ccache-alike for "spatch"
- cocci: run against a generated ALL.cocci
- cocci: optimistically use COMPUTE_HEADER_DEPENDENCIES
- cocci: make "coccicheck" rule incremental
- cocci: split off "--all-includes" from SPATCH_FLAGS
- cocci: split off include-less "tests" from SPATCH_FLAGS
- Makefile: split off SPATCH_BATCH_SIZE comment from "cocci" heading
- Makefile: have "coccicheck" re-run if flags change
- Makefile: add ability to TAB-complete cocci *.patch rules
- cocci rules: remove unused "F" metavariable from pending rule
- Makefile + shared.mak: rename and indent $(QUIET_SPATCH_T)
"make coccicheck" is time consuming. It has been made to run more
incrementally.
Will merge to 'next'?
source: <cover-v3-00.11-00000000000-20221014T152552Z-avarab@gmail.com>
* ds/bundle-uri-3 (2022-10-12) 13 commits
- bundle-uri: suppress stderr from remote-https
- bundle-uri: quiet failed unbundlings
- bundle: add flags to verify_bundle()
- bundle-uri: fetch a list of bundles
- bundle: properly clear all revision flags
- bundle-uri: limit recursion depth for bundle lists
- bundle-uri: parse bundle list in config format
- bundle-uri: unit test "key=value" parsing
- bundle-uri: create "key=value" line parsing
- bundle-uri: create base key-value pair parsing
- bundle-uri: create bundle_list struct and helpers
- bundle-uri: use plain string in find_temp_filename()
- Merge branch 'ds/bundle-uri-clone' into ds/bundle-uri-3
Define the logical elements of a "bundle list", data structure to
store them in-core, format to transfer them, and code to parse
them.
source: <pull.1333.v5.git.1665579160.gitgitgadget@gmail.com>
* js/bisect-in-c (2022-08-30) 17 commits
- bisect: no longer try to clean up left-over `.git/head-name` files
- bisect: remove Cogito-related code
- Turn `git bisect` into a full built-in
- bisect: move even the command-line parsing to `bisect--helper`
- bisect--helper: make `state` optional
- bisect--helper: calling `bisect_state()` without an argument is a bug
- bisect: avoid double-quoting when printing the failed command
- bisect run: fix the error message
- bisect: verify that a bogus option won't try to start a bisection
- bisect--helper: migrate to OPT_SUBCOMMAND()
- bisect--helper: make the order consistently `argc, argv`
- bisect--helper: make `terms` an explicit singleton
- bisect--helper: simplify exit code computation
- bisect--helper: really retire `--bisect-autostart`
- bisect--helper: really retire --bisect-next-check
- bisect--helper: retire the --no-log option
- Merge branch 'sg/parse-options-subcommand' into js/bisect-in-c
Final bits of "git bisect.sh" have been rewritten in C.
Needs review.
cf. <xmqqv8pr8903.fsf@gitster.g>
source: <pull.1132.v6.git.1661885419.gitgitgadget@gmail.com>
^ permalink raw reply [relevance 3%]
* What's cooking in git.git (Oct 2022, #06; Wed, 19)
@ 2022-10-20 1:34 3% Junio C Hamano
0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2022-10-20 1:34 UTC (permalink / raw)
To: git
Here are the topics that have been cooking in my tree. Commits
prefixed with '+' are in 'next' (being in 'next' is a sign that a
topic is stable enough to be used and are candidate to be in a future
release). Commits prefixed with '-' are only in 'seen', and aren't
considered "accepted" at all. A topic without enough support may be
discarded after a long period of no activity.
Git 2.38.1 and friends that address a couple of CVE on maintenance
tracks have been released and they are all merged up to the
development branches.
Some topics outside 'next' have been expecting updates for too long
and we may want to discard them, unless they see some activities.
Copies of the source code to Git live in many repositories, and the
following is a list of the ones I push into or their mirrors. Some
repositories have only a subset of branches.
With maint, master, next, seen, todo:
git://git.kernel.org/pub/scm/git/git.git/
git://repo.or.cz/alt-git.git/
https://kernel.googlesource.com/pub/scm/git/git/
https://github.com/git/git/
https://gitlab.com/git-vcs/git/
With all the integration branches and topics broken out:
https://github.com/gitster/git/
Even though the preformatted documentation in HTML and man format
are not sources, they are published in these repositories for
convenience (replace "htmldocs" with "manpages" for the manual
pages):
git://git.kernel.org/pub/scm/git/git-htmldocs.git/
https://github.com/gitster/git-htmldocs.git/
Release tarballs are available at:
https://www.kernel.org/pub/software/scm/git/
--------------------------------------------------
[Graduated to 'master']
* ab/coding-guidelines-c99 (2022-10-11) 5 commits
(merged to 'next' on 2022-10-13 at c6b2b74dfb)
+ CodingGuidelines: recommend against unportable C99 struct syntax
+ CodingGuidelines: mention C99 features we can't use
+ CodingGuidelines: allow declaring variables in for loops
+ CodingGuidelines: mention dynamic C99 initializer elements
+ CodingGuidelines: update for C99
Update CodingGuidelines to clarify what features to use and avoid
in C99.
source: <20221010203800.2154698-1-gitster@pobox.com>
* jh/struct-zero-init-with-older-clang (2022-10-10) 1 commit
(merged to 'next' on 2022-10-13 at 393abc3019)
+ config.mak.dev: disable suggest braces error on old clang versions
Work around older clang that warns against C99 zero initialization
syntax for struct.
source: <pull.1375.v2.git.1665416340806.gitgitgadget@gmail.com>
* rs/archive-dedup-printf (2022-10-11) 1 commit
(merged to 'next' on 2022-10-13 at af770cf00f)
+ archive: deduplicate verbose printing
Code simplification.
source: <af5611aa-8662-7508-4f00-7fcf4e9cbcc6@web.de>
--------------------------------------------------
[New Topics]
* jk/unused-anno-more (2022-10-17) 12 commits
- ll-merge: mark unused parameters in callbacks
- diffcore-pickaxe: mark unused parameters in pickaxe functions
- convert: mark unused parameter in null stream filter
- apply: mark unused parameters in noop error/warning routine
- apply: mark unused parameters in handlers
- date: mark unused parameters in handler functions
- string-list: mark unused callback parameters
- object-file: mark unused parameters in hash_unknown functions
- mark unused parameters in trivial compat functions
- update-index: drop unused argc from do_reupdate()
- submodule--helper: drop unused argc from module_list_compute()
- diffstat_consume(): assert non-zero length
More UNUSED annotation to help using -Wunused option with the
compiler.
Will merge to 'next'.
source: <Y036whEorZV0rOgB@coredump.intra.peff.net>
* tb/save-keep-pack-during-geometric-repack (2022-10-17) 1 commit
- repack: don't remove .keep packs with `--pack-kept-objects`
When geometric repacking feature is in use together with the
--pack-kept-objects option, we lost packs marked with .keep files.
Will merge to 'next'.
source: <6a012cd625c1d197ede91c85299cbfb37adf356b.1666059872.git.me@ttaylorr.com>
* mm/git-pm-try-catch-syntax-fix (2022-10-17) 1 commit
- Git.pm: add semicolon after catch statement
Fix a longstanding syntax error in Git.pm error codepath.
Will merge to 'next'??
source: <20221016212236.12453-2-michael@mcclimon.org>
* ab/macos-build-fix-with-sha1dc (2022-10-19) 1 commit
(merged to 'next' on 2022-10-19 at 408ce79f33)
+ fsmonitor OSX: compile with DC_SHA1=YesPlease
Enable macOS build with sha1dc hash function.
Will merge to 'master'.
source: <patch-v2-1.4-392fabdb456-20221019T010222Z-avarab@gmail.com>
* jk/use-o0-in-leak-sanitizer (2022-10-19) 1 commit
(merged to 'next' on 2022-10-19 at 27c2546b98)
+ Makefile: force -O0 when compiling with SANITIZE=leak
Avoid false-positive from LSan whose assumption may be broken with
higher optimization levels.
Will merge to 'master'.
source: <Y08JZVDgJpJvrBiz@coredump.intra.peff.net>
* jr/embargoed-releases-doc (2022-10-19) 1 commit
- embargoed releases: also describe the git-security list and the process
The role the security mailing list plays in an embargoed release
has been documented.
Will merge to 'next'?
source: <pull.1345.v2.git.1666142160427.gitgitgadget@gmail.com>
--------------------------------------------------
[Stalled]
* ag/merge-strategies-in-c (2022-08-10) 14 commits
- sequencer: use the "octopus" strategy without forking
- sequencer: use the "resolve" strategy without forking
- merge: use the "octopus" strategy without forking
- merge: use the "resolve" strategy without forking
- merge-octopus: rewrite in C
- merge-recursive: move better_branch_name() to merge.c
- merge-resolve: rewrite in C
- merge-one-file: rewrite in C
- update-index: move add_cacheinfo() to read-cache.c
- merge-index: add a new way to invoke `git-merge-one-file'
- merge-index: drop the index
- merge-index: libify merge_one_path() and merge_all()
- t6060: add tests for removed files
- t6060: modify multiple files to expose a possible issue with merge-index
An attempt to rewrite remaining merge strategies from shell to C.
Needs more work.
At the minimum, we should lose 11/14 and possibly 08/14.
cf. <xmqq7d36vfur.fsf@gitster.g>
source: <20220809185429.20098-1-alban.gruin@gmail.com>
* po/glossary-around-traversal (2022-07-09) 3 commits
- glossary: add reachability bitmap description
- glossary: add commit graph description
- glossary: add Object DataBase (ODB) abbreviation
The glossary entries for "commit-graph file" and "reachability
bitmap" have been added.
Expecting a reroll.
cf. <dfe0c1ab-33f8-f13e-71ce-1829bb0d2d7f@iee.email>
source: <pull.1282.git.1657385781.gitgitgadget@gmail.com>
* gc/submodule-clone-update-with-branches (2022-08-29) 6 commits
- clone, submodule update: check out branches
- submodule--helper: refactor up-to-date criterion
- submodule: return target of submodule symref
- t5617: drop references to remote-tracking branches
- repo-settings: add submodule_propagate_branches
- clone: teach --detach option
"git clone --recurse-submodules" and "git submodule update" learns
to honor the "propagete branches" option.
Expecting a reroll.
cf. <20220901200047.515294-1-jonathantanmy@google.com> and others
source: <pull.1321.git.git.1661806456.gitgitgadget@gmail.com>
* tb/diffstat-with-utf8-strwidth (2022-09-14) 1 commit
- diff.c: use utf8_strwidth() to count display width
"git diff --stat" etc. were invented back when everything was ASCII
and strlen() was a way to measure the display width of a string;
adjust them to compute the display width assuming UTF-8 pathnames.
Expecting a reroll.
source: <20220914151333.3309-1-tboegi@web.de>
* mj/credential-helper-auth-headers (2022-09-13) 8 commits
- http: set specific auth scheme depending on credential
- http: move proactive auth to first slot creation
- http: store all request headers on active_request_slot
- credential: add WWW-Authenticate header to cred requests
- http: read HTTP WWW-Authenticate response headers
- osxkeychain: clarify that we ignore unknown lines
- netrc: ignore unknown lines (do not die)
- wincred: ignore unknown lines (do not die)
Extending credential helper protocol.
Expecting a reroll.
A separate non-RFC submission of the first three is expected.
cf. <AS8PR03MB86897FAC3E1E4F03D4420644C04F9@AS8PR03MB8689.eurprd03.prod.outlook.com>
source: <pull.1352.git.1663097156.gitgitgadget@gmail.com>
* cw/submodule-status-in-parallel (2022-09-23) 4 commits
. diff-lib: parallelize run_diff_files for submodules
. diff-lib: refactor functions
. submodule: move status parsing into function
. run-command: add pipe_output to run_processes_parallel
Allow the internal "diff-files" engine to run "how has this
submodule changed?" in parallel to speed up "git status".
Breaks its self check.
cf. https://github.com/git/git/actions/runs/3115673002/jobs/5052804463
source: <20220922232947.631309-1-calvinwan@google.com>
* es/mark-gc-cruft-as-experimental (2022-08-03) 2 commits
- config: let feature.experimental imply gc.cruftPacks=true
- gc: add tests for --cruft and friends
Enable gc.cruftpacks by default for those who opt into
feature.experimental setting.
Expecting a reroll.
cf. <220804.86a68ke9d5.gmgdl@evledraar.gmail.com>
cf. <6803b725-526e-a1c8-f15c-a9ed4a144d4c@github.com>
source: <20220803205721.3686361-1-emilyshaffer@google.com>
* es/doc-creation-factor-fix (2022-07-28) 2 commits
- range-diff: clarify --creation-factor=<factor>
- format-patch: clarify --creation-factor=<factor>
Expecting a reroll by somebody more familiar with the logic
cf. <xmqqo7wfix7p.fsf@gitster.g>
source: <7229p500-p2r4-on87-6802-8o90s36rr3s4@tzk.qr>
* cw/remote-object-info (2022-08-13) 7 commits
. SQUASH???
. cat-file: add remote-object-info to batch-command
. transport: add client support for object-info
. serve: advertise object-info feature
. protocol-caps: initialization bug fix
. fetch-pack: move fetch initialization
. fetch-pack: refactor packet writing
A client component to talk with the object-info endpoint.
Expecting a reroll.
Under SANITIZE=address, t1006-cat-file.sh finds a breakage.
cf. <20220728230210.2952731-1-calvinwan@google.com>
cf. <CAFySSZDvgwbbHCHfyuaqX3tKsr-GjJ9iihygg6rNNe46Ys7_EA@mail.gmail.com>
source: <20220728230210.2952731-1-calvinwan@google.com>
--------------------------------------------------
[Cooking]
* js/cmake-updates (2022-10-19) 5 commits
- cmake: increase time-out for a long-running test
- cmake: avoid editing t/test-lib.sh
- add -p: avoid ambiguous signed/unsigned comparison
- cmake: copy the merge tools for testing
- cmake: make it easier to diagnose regressions in CTest runs
Update to build procedure with VS using CMake/CTest.
Will merge to 'next'?
source: <pull.1320.v3.git.1666090745.gitgitgadget@gmail.com>
* gc/bare-repo-discovery (2022-10-13) 1 commit
(merged to 'next' on 2022-10-17 at 3de2be7c14)
+ config: respect includes in protected config
Allow configuration files in "protected" scopes to include other
configuration files.
Will merge to 'master'.
source: <pull.1360.v2.git.git.1665683027912.gitgitgadget@gmail.com>
* jh/trace2-timers-and-counters (2022-10-13) 7 commits
- trace2: add global counter mechanism
- trace2: add stopwatch timers
- trace2: convert ctx.thread_name from strbuf to pointer
- trace2: rename the thread_name argument to trace2_thread_start
- api-trace2.txt: elminate section describing the public trace2 API
- tr2tls: clarify TLS terminology
- trace2: use size_t alloc,nr_open_regions in tr2tls_thread_ctx
Two new facilities, "timer" and "counter", are introduced to the
trace2 API.
source: <pull.1373.v2.git.1665600750.gitgitgadget@gmail.com>
* tb/midx-bitmap-selection-fix (2022-10-13) 4 commits
- pack-bitmap-write.c: instrument number of reused bitmaps
- midx.c: instrument MIDX and bitmap generation with trace2 regions
- midx.c: consider annotated tags during bitmap selection
- midx.c: fix whitespace typo
A bugfix with tracing support in midx codepath
Will merge to 'next'.
source: <cover.1665612094.git.me@ttaylorr.com>
* tb/remove-unused-pack-bitmap (2022-10-17) 1 commit
- builtin/repack.c: remove redundant pack-based bitmaps
When creating a multi-pack bitmap, remove per-pack bitmap files
unconditionally as they will never be consulted.
Will merge to 'next'?
source: <1e0ef7ee7ff5feb323c77e594cd65433fb1d99f7.1666061096.git.me@ttaylorr.com>
* nw/t1002-cleanup (2022-10-14) 1 commit
- t1002: modernize outdated conditional
Code clean-up in test.
Will merge to 'next'.
source: <pull.1362.v3.git.git.1665734502591.gitgitgadget@gmail.com>
* zh/patch-id (2022-10-14) 7 commits
- documentation: format-patch: clarify requirements for patch-ids to match
- builtin: patch-id: remove unused diff-tree prefix
- builtin: patch-id: add --include-whitespace as a command mode
- patch-id: fix patch-id for mode changes
- builtin: patch-id: fix patch-id with binary diffs
- patch-id: use stable patch-id for rebases
- patch-id: fix stable patch id for binary / header-only
A new "--include-whitespace" option is added to "git patch-id", and
existing bugs in the internal patch-id logic that did not match
what "git patch-id" produces have been corrected.
Will merge to 'next'?
source: <pull.1359.v3.git.1665737804.gitgitgadget@gmail.com>
* hl/archive-recursive (2022-10-19) 10 commits
- fixup! archive: add tests for git archive --recurse-submodules
- archive: add tests for git archive --recurse-submodules
- archive: add --recurse-submodules to git-archive command
- archive: remove global repository from archive_args
- archive: pass repo objects to write_archive handlers
- tree: add repository parameter to read_tree_fn_t
- tree: handle submodule case for read_tree_at properly
- tree: increase test coverage for tree.c
- tree: update cases to use repo_ tree methods
- tree: do not use the_repository for tree traversal methods.
"git archive" has been taught "--recurse-submodules" option to
create a tarball that includes contents from submodules.
Expecting a reroll.
source: <pull.1359.v3.git.git.1665973401.gitgitgadget@gmail.com>
* pw/rebase-keep-base-fixes (2022-10-17) 8 commits
- rebase --keep-base: imply --no-fork-point
- rebase --keep-base: imply --reapply-cherry-picks
- rebase: factor out branch_base calculation
- rebase: rename merge_base to branch_base
- rebase: store orig_head as a commit
- rebase: be stricter when reading state files containing oids
- t3416: set $EDITOR in subshell
- t3416: tighten two tests
(this branch is used by pw/rebase-reflog-fixes.)
"git rebase --keep-base" used to discard the commits that are
already cherry-picked to the upstream, even when "keep-base" meant
that the base, on top of which the history is being rebuilt, does
not yet include these cherry-picked commits. The --keep-base
option now implies --reapply-cherry-picks and --no-fork-point
options.
Will merge to 'next'??
source: <pull.1323.v4.git.1666012665.gitgitgadget@gmail.com>
* ab/grep-simplify-extended-expression (2022-10-11) 1 commit
(merged to 'next' on 2022-10-13 at 07993f09bc)
+ grep.c: remove "extended" in favor of "pattern_expression", fix segfault
Giving "--invert-grep" and "--all-match" without "--grep" to the
"git log" command resulted in an attempt to access grep pattern
expression structure that has not been allocated, which has been
corrected.
Will merge to 'master'.
source: <patch-v2-1.1-6ad7627706f-20221011T094715Z-avarab@gmail.com>
* pw/rebase-reflog-fixes (2022-10-17) 9 commits
- rebase: cleanup action handling
- rebase --abort: improve reflog message
- rebase --apply: make reflog messages match rebase --merge
- rebase --apply: respect GIT_REFLOG_ACTION
- rebase --merge: fix reflog message after skipping
- rebase --merge: fix reflog when continuing
- t3406: rework rebase reflog tests
- rebase --apply: remove duplicated code
- Merge branch 'pw/rebase-keep-base-fixes' into pw/rebase-reflog-fixes
(this branch uses pw/rebase-keep-base-fixes.)
Fix some bugs in the reflog messages when rebasing and changes the
reflog messages of "rebase --apply" to match "rebase --merge" with
the aim of making the reflog easier to parse.
Will merge to 'next'??
source: <pull.1150.v3.git.1665567312.gitgitgadget@gmail.com>
* sd/doc-smtp-encryption (2022-10-12) 1 commit
- docs: git-send-email: difference between ssl and tls smtp-encryption
Expecting a reroll??
cf. <19e5b678-6014-d783-347f-9169371aaa09@iee.email>
source: <20221012150619.12877-1-sndanailov@wired4ever.net>
* jc/symbolic-ref-no-recurse (2022-10-09) 1 commit
(merged to 'next' on 2022-10-13 at 532a3f6a5f)
+ symbolic-ref: teach "--[no-]recurse" option
After checking out a "branch" that is a symbolic-ref that points at
another branch, "git symbolic-ref HEAD" reports the underlying
branch, not the symbolic-ref the user gave checkout as argument.
The command learned the "--no-recurse" option to stop after
dereferencing a symbolic-ref only once.
Will merge to 'master'.
source: <xmqqleprcn08.fsf@gitster.g>
* ds/cmd-main-reorder (2022-10-08) 1 commit
(merged to 'next' on 2022-10-14 at d7f07dbecf)
+ git.c: improve code readability in cmd_main()
Code clean-up.
Will merge to 'master'.
source: <pull.1355.v3.git.git.1665246097190.gitgitgadget@gmail.com>
* ed/fsmonitor-inotify (2022-10-14) 7 commits
. fsmonitor: update doc for Linux
. fsmonitor: test updates
. fsmonitor: enable fsmonitor for Linux
. fsmonitor: implement filesystem change listener for Linux
. fsmonitor: determine if filesystem is local or remote
. fsmonitor: prepare to share code between Mac OS and Linux
. Merge branch 'ed/fsmonitor-on-networked-macos' into ed/fsmonitor-inotify
Bundled fsmonitor for Linux using inotify API.
Needs review.
Occasional breakages of t7527.16?
source: <pull.1352.v2.git.git.1665783944.gitgitgadget@gmail.com>
* en/sparse-checkout-design (2022-10-08) 1 commit
- sparse-checkout.txt: new document with sparse-checkout directions
Design doc.
Needs review.
source: <pull.1367.v3.git.1665269538608.gitgitgadget@gmail.com>
* jc/more-sanitizer-at-ci (2022-10-11) 1 commit
. ci: add address and undefined sanitizer tasks
Enable address and undefined sanitizer tasks at GitHub Actions CI.
With this p4 tests seem to die with the server side going away.
source: <xmqqpmezxl9p.fsf@gitster.g>
* od/ci-use-checkout-v3-when-applicable (2022-10-10) 2 commits
. ci(main): linux32 uses actions/checkout@v2
. ci(main): upgrade actions/checkout to v3
Attempt to update GitHub CI to use actions/checkout@v3
Expecting a reroll.
Seems to break the CI completely.
source: <pull.1354.git.git.1665388136.gitgitgadget@gmail.com>
* ab/run-hook-api-cleanup (2022-10-12) 15 commits
- run-command.c: remove "max_processes", add "const" to signal() handler
- run-command.c: pass "opts" further down, and use "opts->processes"
- run-command.c: use "opts->processes", not "pp->max_processes"
- run-command.c: don't copy "data" to "struct parallel_processes"
- run-command.c: don't copy "ungroup" to "struct parallel_processes"
- run-command.c: don't copy *_fn to "struct parallel_processes"
- run-command.c: make "struct parallel_processes" const if possible
- run-command API: move *_tr2() users to "run_processes_parallel()"
- run-command API: have run_process_parallel() take an "opts" struct
- run-command.c: use designated init for pp_init(), add "const"
- run-command API: don't fall back on online_cpus()
- run-command API: make "n" parameter a "size_t"
- run-command tests: use "return", not "exit"
- run-command API: have "run_processes_parallel{,_tr2}()" return void
- run-command test helper: use "else if" pattern
Move a global variable added as a hack during regression fixes to
its proper place in the API.
Will merge to 'next'.
source: <cover-v3-00.15-00000000000-20221012T205712Z-avarab@gmail.com>
* pw/test-todo (2022-10-06) 3 commits
- test_todo: allow [verbose] test as the command
- test_todo: allow [!] grep as the command
- tests: add test_todo() to mark known breakages
RFC for test framework improvement.
Needs review.
source: <pull.1374.git.1665068476.gitgitgadget@gmail.com>
* rj/branch-edit-description-with-nth-checkout (2022-10-10) 1 commit
(merged to 'next' on 2022-10-14 at 90850a2211)
+ branch: support for shortcuts like @{-1}, completed
"git branch --edit-description @{-1}" is now a way to edit branch
description of the branch you were on before switching to the
current branch.
Will merge to 'master'.
source: <fbf84e26-4306-c8df-0e2c-45dc94129e3a@gmail.com>
* rs/diff-caret-bang-with-parents (2022-10-01) 3 commits
(merged to 'next' on 2022-10-17 at 24609eb777)
+ diff: support ^! for merges
+ revisions.txt: unspecify order of resolved parts of ^!
+ revision: use strtol_i() for exclude_parent
"git diff rev^!" did not show combined diff to go to the rev from
its parents.
Will merge to 'master'.
source: <16c49d20-cafc-4b48-3c6b-e11c74c29abb@web.de>
* ab/doc-synopsis-and-cmd-usage (2022-10-13) 34 commits
- tests: assert consistent whitespace in -h output
- tests: start asserting that *.txt SYNOPSIS matches -h output
- doc txt & -h consistency: make "worktree" consistent
- worktree: define subcommand -h in terms of command -h
- reflog doc: list real subcommands up-front
- doc txt & -h consistency: make "commit" consistent
- doc txt & -h consistency: make "diff-tree" consistent
- doc txt & -h consistency: use "[<label>...]" for "zero or more"
- doc txt & -h consistency: make "annotate" consistent
- doc txt & -h consistency: make "stash" consistent
- doc txt & -h consistency: add missing options
- doc txt & -h consistency: use "git foo" form, not "git-foo"
- doc txt & -h consistency: make "bundle" consistent
- doc txt & -h consistency: make "read-tree" consistent
- doc txt & -h consistency: make "rerere" consistent
- doc txt & -h consistency: add missing options and labels
- doc txt & -h consistency: make output order consistent
- doc txt & -h consistency: add or fix optional "--" syntax
- doc txt & -h consistency: fix mismatching labels
- doc SYNOPSIS & -h: use "-" to separate words in labels, not "_"
- doc txt & -h consistency: use "<options>", not "<options>..."
- stash doc SYNOPSIS & -h: correct padding around "[]()"
- doc txt & -h consistency: correct padding around "[]()"
- doc txt & -h consistency: balance unbalanced "[" and "]"
- doc txt & -h consistency: add "-z" to cat-file "-h"
- doc txt & -h consistency: fix incorrect alternates syntax
- doc txt & -h consistency: word-wrap
- built-ins: consistently add "\n" between "usage" and options
- doc SYNOPSIS: consistently use ' for commands
- doc SYNOPSIS: don't use ' for subcommands
- bundle: define subcommand -h in terms of command -h
- builtin/bundle.c: indent with tabs
- CodingGuidelines: update and clarify command-line conventions
- tests: assert *.txt SYNOPSIS and -h output
The short-help text shown by "git cmd -h" and the synopsis text
shown at the beginning of "git help cmd" have been made more
consistent.
Will merge to 'next'?
source: <cover-v5-00.34-00000000000-20221013T153625Z-avarab@gmail.com>
* ab/coccicheck-incremental (2022-10-14) 11 commits
- spatchcache: add a ccache-alike for "spatch"
- cocci: run against a generated ALL.cocci
- cocci: optimistically use COMPUTE_HEADER_DEPENDENCIES
- cocci: make "coccicheck" rule incremental
- cocci: split off "--all-includes" from SPATCH_FLAGS
- cocci: split off include-less "tests" from SPATCH_FLAGS
- Makefile: split off SPATCH_BATCH_SIZE comment from "cocci" heading
- Makefile: have "coccicheck" re-run if flags change
- Makefile: add ability to TAB-complete cocci *.patch rules
- cocci rules: remove unused "F" metavariable from pending rule
- Makefile + shared.mak: rename and indent $(QUIET_SPATCH_T)
"make coccicheck" is time consuming. It has been made to run more
incrementally.
Will merge to 'next'?
source: <cover-v3-00.11-00000000000-20221014T152552Z-avarab@gmail.com>
* ds/bundle-uri-3 (2022-10-12) 13 commits
- bundle-uri: suppress stderr from remote-https
- bundle-uri: quiet failed unbundlings
- bundle: add flags to verify_bundle()
- bundle-uri: fetch a list of bundles
- bundle: properly clear all revision flags
- bundle-uri: limit recursion depth for bundle lists
- bundle-uri: parse bundle list in config format
- bundle-uri: unit test "key=value" parsing
- bundle-uri: create "key=value" line parsing
- bundle-uri: create base key-value pair parsing
- bundle-uri: create bundle_list struct and helpers
- bundle-uri: use plain string in find_temp_filename()
- Merge branch 'ds/bundle-uri-clone' into ds/bundle-uri-3
Define the logical elements of a "bundle list", data structure to
store them in-core, format to transfer them, and code to parse
them.
source: <pull.1333.v5.git.1665579160.gitgitgadget@gmail.com>
* js/bisect-in-c (2022-08-30) 17 commits
- bisect: no longer try to clean up left-over `.git/head-name` files
- bisect: remove Cogito-related code
- Turn `git bisect` into a full built-in
- bisect: move even the command-line parsing to `bisect--helper`
- bisect--helper: make `state` optional
- bisect--helper: calling `bisect_state()` without an argument is a bug
- bisect: avoid double-quoting when printing the failed command
- bisect run: fix the error message
- bisect: verify that a bogus option won't try to start a bisection
- bisect--helper: migrate to OPT_SUBCOMMAND()
- bisect--helper: make the order consistently `argc, argv`
- bisect--helper: make `terms` an explicit singleton
- bisect--helper: simplify exit code computation
- bisect--helper: really retire `--bisect-autostart`
- bisect--helper: really retire --bisect-next-check
- bisect--helper: retire the --no-log option
- Merge branch 'sg/parse-options-subcommand' into js/bisect-in-c
Final bits of "git bisect.sh" have been rewritten in C.
Needs review.
cf. <xmqqv8pr8903.fsf@gitster.g>
source: <pull.1132.v6.git.1661885419.gitgitgadget@gmail.com>
^ permalink raw reply [relevance 3%]
* What's cooking in git.git (Oct 2022, #05; Mon, 17)
@ 2022-10-17 23:05 2% Junio C Hamano
0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2022-10-17 23:05 UTC (permalink / raw)
To: git
Here are the topics that have been cooking in my tree. Commits
prefixed with '+' are in 'next' (being in 'next' is a sign that a
topic is stable enough to be used and are candidate to be in a future
release). Commits prefixed with '-' are only in 'seen', and aren't
considered "accepted" at all. A topic without enough support may be
discarded after a long period of no activity.
Some topics outside 'next' have been expecting updates for too long
and we may want to discard them, unless they see some activities.
Copies of the source code to Git live in many repositories, and the
following is a list of the ones I push into or their mirrors. Some
repositories have only a subset of branches.
With maint, master, next, seen, todo:
git://git.kernel.org/pub/scm/git/git.git/
git://repo.or.cz/alt-git.git/
https://kernel.googlesource.com/pub/scm/git/git/
https://github.com/git/git/
https://gitlab.com/git-vcs/git/
With all the integration branches and topics broken out:
https://github.com/gitster/git/
Even though the preformatted documentation in HTML and man format
are not sources, they are published in these repositories for
convenience (replace "htmldocs" with "manpages" for the manual
pages):
git://git.kernel.org/pub/scm/git/git-htmldocs.git/
https://github.com/gitster/git-htmldocs.git/
Release tarballs are available at:
https://www.kernel.org/pub/software/scm/git/
--------------------------------------------------
[Graduated to 'master']
* ab/unused-annotation (2022-10-05) 1 commit
(merged to 'next' on 2022-10-11 at c3099ad3ab)
+ git-compat-util.h: GCC deprecated message arg only in GCC 4.5+
Compilation fix for ancient compilers.
source: <20221005221928.703750-1-asedeno@google.com>
* dd/document-runtime-prefix-better (2022-10-05) 1 commit
(merged to 'next' on 2022-10-11 at 9f4a3bb7bd)
+ Makefile: clarify runtime relative gitexecdir
Update comment in the Makefile about the RUNTIME_PREFIX config knob.
source: <20221006013205.15015-1-congdanhqx@gmail.com>
* ed/fsmonitor-on-networked-macos (2022-10-10) 7 commits
(merged to 'next' on 2022-10-11 at 32076d13b7)
+ fsmonitor: fix leak of warning message
+ fsmonitor: add documentation for allowRemote and socketDir options
+ fsmonitor: check for compatability before communicating with fsmonitor
+ fsmonitor: deal with synthetic firmlinks on macOS
+ fsmonitor: avoid socket location check if using hook
+ fsmonitor: relocate socket file if .git directory is remote
+ fsmonitor: refactor filesystem checks to common interface
(this branch is used by ed/fsmonitor-inotify.)
By default, use of fsmonitor on a repository on networked
filesystem is disabled. Add knobs to make it workable on macOS.
source: <pull.1326.v15.git.1664904751.gitgitgadget@gmail.com>
* jc/branch-description-unset (2022-09-30) 1 commit
(merged to 'next' on 2022-10-11 at 3f81ee978b)
+ branch: do not fail a no-op --edit-desc
"GIT_EDITOR=: git branch --edit-description" resulted in failure,
which has been corrected.
source: <xmqqmtagka8x.fsf@gitster.g>
* jc/tmp-objdir (2022-09-30) 1 commit
(merged to 'next' on 2022-10-11 at 17d0843c43)
+ tmp-objdir: skip clean up when handling a signal
The code to clean temporary object directories (used for
quarantine) tried to remove them inside its signal handler, which
was a no-no.
source: <pull.1348.v4.git.git.1664570831583.gitgitgadget@gmail.com>
* jc/use-of-uc-in-log-messages (2022-10-07) 1 commit
(merged to 'next' on 2022-10-11 at 0b8c91d7e2)
+ SubmittingPatches: use usual capitalization in the log message body
Clarify that "the sentence after <area>: prefix does not begin with
a capital letter" rule applies only to the commit title.
source: <xmqqedvjfqx1.fsf@gitster.g>
* jk/cleanup-callback-parameters (2022-10-06) 4 commits
(merged to 'next' on 2022-10-11 at a3350d66b6)
+ attr: drop DEBUG_ATTR code
+ commit: avoid writing to global in option callback
+ multi-pack-index: avoid writing to global in option callback
+ test-submodule: inline resolve_relative_url() function
Code clean-up.
source: <Yz7Tjy7Rh8cXVxYQ@coredump.intra.peff.net>
source: <Yz7UhYXvNl6+1GbZ@coredump.intra.peff.net>
* jt/promisor-remote-fetch-tweak (2022-10-05) 2 commits
(merged to 'next' on 2022-10-11 at e93567bc8f)
+ promisor-remote: die upon failing fetch
+ promisor-remote: remove a return value
Remove error detection from a function that fetches from promisor
remotes, and make it die when such a fetch fails to bring all the
requested objects, to give an early failure to various operations.
source: <cover.1664917853.git.jonathantanmy@google.com>
* pw/remove-rebase-p-test (2022-10-10) 1 commit
(merged to 'next' on 2022-10-11 at 000bd34796)
+ t3435: remove redundant test case
Remove outdated test.
source: <pull.1379.git.1665395106351.gitgitgadget@gmail.com>
* rj/branch-edit-desc-unborn (2022-10-07) 1 commit
(merged to 'next' on 2022-10-11 at de3eccde7c)
+ branch: description for non-existent branch errors
"git branch --edit-description" on an unborh branch misleadingly
said that no such branch exists, which has been corrected.
source: <8d627a2c-923f-181f-a03b-15f370c4dd0f@gmail.com>
* rs/bisect-start-leakfix (2022-10-07) 1 commit
(merged to 'next' on 2022-10-11 at 07f87534c1)
+ bisect--helper: plug strvec leak
Code clean-up that results in plugging a leak.
source: <1965b54b-122a-c965-f886-1a7dd6afbfb4@web.de>
* rs/use-fspathncmp (2022-10-08) 1 commit
(merged to 'next' on 2022-10-11 at 11cbd1ce81)
+ dir: use fspathncmp() in pl_hashmap_cmp()
Code clean-up.
source: <cb6ffcdb-d719-7928-96b8-e46482dd141f@web.de>
--------------------------------------------------
[New Topics]
* gc/bare-repo-discovery (2022-10-13) 1 commit
(merged to 'next' on 2022-10-17 at 3de2be7c14)
+ config: respect includes in protected config
Allow configuration files in "protected" scopes to include other
configuration files.
Will merge to 'master'.
source: <pull.1360.v2.git.git.1665683027912.gitgitgadget@gmail.com>
* jh/trace2-timers-and-counters (2022-10-13) 7 commits
- trace2: add global counter mechanism
- trace2: add stopwatch timers
- trace2: convert ctx.thread_name from strbuf to pointer
- trace2: rename the thread_name argument to trace2_thread_start
- api-trace2.txt: elminate section describing the public trace2 API
- tr2tls: clarify TLS terminology
- trace2: use size_t alloc,nr_open_regions in tr2tls_thread_ctx
Two new facilities, "timer" and "counter", are introduced to the
trace2 API.
source: <pull.1373.v2.git.1665600750.gitgitgadget@gmail.com>
* tb/midx-bitmap-selection-fix (2022-10-13) 4 commits
- pack-bitmap-write.c: instrument number of reused bitmaps
- midx.c: instrument MIDX and bitmap generation with trace2 regions
- midx.c: consider annotated tags during bitmap selection
- midx.c: fix whitespace typo
A bugfix with tracing support in midx codepath
Will merge to 'next'.
source: <cover.1665612094.git.me@ttaylorr.com>
* tb/remove-unused-pack-bitmap (2022-10-13) 1 commit
- builtin/repack.c: remove redundant pack-based bitmaps
When creating a multi-pack bitmap, remove per-pack bitmap files
unconditionally as they will never be consulted.
Will merge to 'next'?
source: <393fd4c6db78cd694e6d4dfcf24f17e2850ccd99.1665601403.git.me@ttaylorr.com>
* nw/t1002-cleanup (2022-10-14) 1 commit
- t1002: modernize outdated conditional
source: <pull.1362.v3.git.git.1665734502591.gitgitgadget@gmail.com>
* zh/patch-id (2022-10-14) 7 commits
- documentation: format-patch: clarify requirements for patch-ids to match
- builtin: patch-id: remove unused diff-tree prefix
- builtin: patch-id: add --include-whitespace as a command mode
- patch-id: fix patch-id for mode changes
- builtin: patch-id: fix patch-id with binary diffs
- patch-id: use stable patch-id for rebases
- patch-id: fix stable patch id for binary / header-only
source: <pull.1359.v3.git.1665737804.gitgitgadget@gmail.com>
* hl/archive-recursive (2022-10-16) 9 commits
- archive: add tests for git archive --recurse-submodules
- archive: add --recurse-submodules to git-archive command
- archive: remove global repository from archive_args
- archive: pass repo objects to write_archive handlers
- tree: add repository parameter to read_tree_fn_t
- tree: handle submodule case for read_tree_at properly
- tree: increase test coverage for tree.c
- tree: update cases to use repo_ tree methods
- tree: do not use the_repository for tree traversal methods.
source: <pull.1359.v3.git.git.1665973401.gitgitgadget@gmail.com>
--------------------------------------------------
[Stalled]
* ag/merge-strategies-in-c (2022-08-10) 14 commits
- sequencer: use the "octopus" strategy without forking
- sequencer: use the "resolve" strategy without forking
- merge: use the "octopus" strategy without forking
- merge: use the "resolve" strategy without forking
- merge-octopus: rewrite in C
- merge-recursive: move better_branch_name() to merge.c
- merge-resolve: rewrite in C
- merge-one-file: rewrite in C
- update-index: move add_cacheinfo() to read-cache.c
- merge-index: add a new way to invoke `git-merge-one-file'
- merge-index: drop the index
- merge-index: libify merge_one_path() and merge_all()
- t6060: add tests for removed files
- t6060: modify multiple files to expose a possible issue with merge-index
An attempt to rewrite remaining merge strategies from shell to C.
Needs more work.
At the minimum, we should lose 11/14 and possibly 08/14.
cf. <xmqq7d36vfur.fsf@gitster.g>
source: <20220809185429.20098-1-alban.gruin@gmail.com>
* po/glossary-around-traversal (2022-07-09) 3 commits
- glossary: add reachability bitmap description
- glossary: add commit graph description
- glossary: add Object DataBase (ODB) abbreviation
The glossary entries for "commit-graph file" and "reachability
bitmap" have been added.
Expecting a reroll.
cf. <dfe0c1ab-33f8-f13e-71ce-1829bb0d2d7f@iee.email>
source: <pull.1282.git.1657385781.gitgitgadget@gmail.com>
* js/cmake-updates (2022-08-24) 5 commits
- cmake: increase time-out for a long-running test
- cmake: avoid editing t/test-lib.sh
- add -p: avoid ambiguous signed/unsigned comparison
- cmake: copy the merge tools for testing
- cmake: make it easier to diagnose regressions in CTest runs
Update to build procedure with VS using CMake/CTest.
Expecting a reroll.
cf. <3df77ffd-85a2-3a54-9005-34a24ec6e82d@github.com>
cf. <531620e1-de4c-74aa-c840-c12ce81f8740@github.com> and others
source: <pull.1320.v2.git.1661243463.gitgitgadget@gmail.com>
* gc/submodule-clone-update-with-branches (2022-08-29) 6 commits
- clone, submodule update: check out branches
- submodule--helper: refactor up-to-date criterion
- submodule: return target of submodule symref
- t5617: drop references to remote-tracking branches
- repo-settings: add submodule_propagate_branches
- clone: teach --detach option
"git clone --recurse-submodules" and "git submodule update" learns
to honor the "propagete branches" option.
Expecting a reroll.
cf. <20220901200047.515294-1-jonathantanmy@google.com> and others
source: <pull.1321.git.git.1661806456.gitgitgadget@gmail.com>
* tb/diffstat-with-utf8-strwidth (2022-09-14) 1 commit
- diff.c: use utf8_strwidth() to count display width
"git diff --stat" etc. were invented back when everything was ASCII
and strlen() was a way to measure the display width of a string;
adjust them to compute the display width assuming UTF-8 pathnames.
Expecting a reroll.
source: <20220914151333.3309-1-tboegi@web.de>
* mj/credential-helper-auth-headers (2022-09-13) 8 commits
- http: set specific auth scheme depending on credential
- http: move proactive auth to first slot creation
- http: store all request headers on active_request_slot
- credential: add WWW-Authenticate header to cred requests
- http: read HTTP WWW-Authenticate response headers
- osxkeychain: clarify that we ignore unknown lines
- netrc: ignore unknown lines (do not die)
- wincred: ignore unknown lines (do not die)
Extending credential helper protocol.
Expecting a reroll.
A separate non-RFC submission of the first three is expected.
cf. <AS8PR03MB86897FAC3E1E4F03D4420644C04F9@AS8PR03MB8689.eurprd03.prod.outlook.com>
source: <pull.1352.git.1663097156.gitgitgadget@gmail.com>
* cw/submodule-status-in-parallel (2022-09-23) 4 commits
. diff-lib: parallelize run_diff_files for submodules
. diff-lib: refactor functions
. submodule: move status parsing into function
. run-command: add pipe_output to run_processes_parallel
Allow the internal "diff-files" engine to run "how has this
submodule changed?" in parallel to speed up "git status".
Breaks its self check.
cf. https://github.com/git/git/actions/runs/3115673002/jobs/5052804463
source: <20220922232947.631309-1-calvinwan@google.com>
* es/mark-gc-cruft-as-experimental (2022-08-03) 2 commits
- config: let feature.experimental imply gc.cruftPacks=true
- gc: add tests for --cruft and friends
Enable gc.cruftpacks by default for those who opt into
feature.experimental setting.
Expecting a reroll.
cf. <220804.86a68ke9d5.gmgdl@evledraar.gmail.com>
cf. <6803b725-526e-a1c8-f15c-a9ed4a144d4c@github.com>
source: <20220803205721.3686361-1-emilyshaffer@google.com>
* es/doc-creation-factor-fix (2022-07-28) 2 commits
- range-diff: clarify --creation-factor=<factor>
- format-patch: clarify --creation-factor=<factor>
Expecting a reroll by somebody more familiar with the logic
cf. <xmqqo7wfix7p.fsf@gitster.g>
source: <7229p500-p2r4-on87-6802-8o90s36rr3s4@tzk.qr>
* cw/remote-object-info (2022-08-13) 7 commits
. SQUASH???
. cat-file: add remote-object-info to batch-command
. transport: add client support for object-info
. serve: advertise object-info feature
. protocol-caps: initialization bug fix
. fetch-pack: move fetch initialization
. fetch-pack: refactor packet writing
A client component to talk with the object-info endpoint.
Expecting a reroll.
Under SANITIZE=address, t1006-cat-file.sh finds a breakage.
cf. <20220728230210.2952731-1-calvinwan@google.com>
cf. <CAFySSZDvgwbbHCHfyuaqX3tKsr-GjJ9iihygg6rNNe46Ys7_EA@mail.gmail.com>
source: <20220728230210.2952731-1-calvinwan@google.com>
--------------------------------------------------
[Cooking]
* pw/rebase-keep-base-fixes (2022-10-17) 8 commits
- rebase --keep-base: imply --no-fork-point
- rebase --keep-base: imply --reapply-cherry-picks
- rebase: factor out branch_base calculation
- rebase: rename merge_base to branch_base
- rebase: store orig_head as a commit
- rebase: be stricter when reading state files containing oids
- t3416: set $EDITOR in subshell
- t3416: tighten two tests
(this branch is used by pw/rebase-reflog-fixes.)
"git rebase --keep-base" used to discard the commits that are
already cherry-picked to the upstream, even when "keep-base" meant
that the base, on top of which the history is being rebuilt, does
not yet include these cherry-picked commits. The --keep-base
option now implies --reapply-cherry-picks and --no-fork-point
options.
Will merge to 'next'??
source: <pull.1323.v4.git.1666012665.gitgitgadget@gmail.com>
* ab/grep-simplify-extended-expression (2022-10-11) 1 commit
(merged to 'next' on 2022-10-13 at 07993f09bc)
+ grep.c: remove "extended" in favor of "pattern_expression", fix segfault
Giving "--invert-grep" and "--all-match" without "--grep" to the
"git log" command resulted in an attempt to access grep pattern
expression structure that has not been allocated, which has been
corrected.
Will merge to 'master'.
source: <patch-v2-1.1-6ad7627706f-20221011T094715Z-avarab@gmail.com>
* rs/archive-dedup-printf (2022-10-11) 1 commit
(merged to 'next' on 2022-10-13 at af770cf00f)
+ archive: deduplicate verbose printing
Code simplification.
Will merge to 'master'.
source: <af5611aa-8662-7508-4f00-7fcf4e9cbcc6@web.de>
* pw/rebase-reflog-fixes (2022-10-17) 9 commits
- rebase: cleanup action handling
- rebase --abort: improve reflog message
- rebase --apply: make reflog messages match rebase --merge
- rebase --apply: respect GIT_REFLOG_ACTION
- rebase --merge: fix reflog message after skipping
- rebase --merge: fix reflog when continuing
- t3406: rework rebase reflog tests
- rebase --apply: remove duplicated code
- Merge branch 'pw/rebase-keep-base-fixes' into pw/rebase-reflog-fixes
(this branch uses pw/rebase-keep-base-fixes.)
Fix some bugs in the reflog messages when rebasing and changes the
reflog messages of "rebase --apply" to match "rebase --merge" with
the aim of making the reflog easier to parse.
Will merge to 'next'??
source: <pull.1150.v3.git.1665567312.gitgitgadget@gmail.com>
* sd/doc-smtp-encryption (2022-10-12) 1 commit
- docs: git-send-email: difference between ssl and tls smtp-encryption
Expecting a reroll??
cf. <19e5b678-6014-d783-347f-9169371aaa09@iee.email>
source: <20221012150619.12877-1-sndanailov@wired4ever.net>
* ab/coding-guidelines-c99 (2022-10-11) 5 commits
(merged to 'next' on 2022-10-13 at c6b2b74dfb)
+ CodingGuidelines: recommend against unportable C99 struct syntax
+ CodingGuidelines: mention C99 features we can't use
+ CodingGuidelines: allow declaring variables in for loops
+ CodingGuidelines: mention dynamic C99 initializer elements
+ CodingGuidelines: update for C99
Update CodingGuidelines to clarify what features to use and avoid
in C99.
Will merge to 'master'.
source: <20221010203800.2154698-1-gitster@pobox.com>
* jc/symbolic-ref-no-recurse (2022-10-09) 1 commit
(merged to 'next' on 2022-10-13 at 532a3f6a5f)
+ symbolic-ref: teach "--[no-]recurse" option
After checking out a "branch" that is a symbolic-ref that points at
another branch, "git symbolic-ref HEAD" reports the underlying
branch, not the symbolic-ref the user gave checkout as argument.
The command learned the "--no-recurse" option to stop after
dereferencing a symbolic-ref only once.
Will merge to 'master'.
source: <xmqqleprcn08.fsf@gitster.g>
* ds/cmd-main-reorder (2022-10-08) 1 commit
(merged to 'next' on 2022-10-14 at d7f07dbecf)
+ git.c: improve code readability in cmd_main()
Code clean-up.
Will merge to 'master'.
source: <pull.1355.v3.git.git.1665246097190.gitgitgadget@gmail.com>
* ed/fsmonitor-inotify (2022-10-14) 7 commits
- fsmonitor: update doc for Linux
- fsmonitor: test updates
- fsmonitor: enable fsmonitor for Linux
- fsmonitor: implement filesystem change listener for Linux
- fsmonitor: determine if filesystem is local or remote
- fsmonitor: prepare to share code between Mac OS and Linux
- Merge branch 'ed/fsmonitor-on-networked-macos' into ed/fsmonitor-inotify
Bundled fsmonitor for Linux using inotify API.
Needs review.
Occasional breakages of t7527.16?
source: <pull.1352.v2.git.git.1665783944.gitgitgadget@gmail.com>
* en/sparse-checkout-design (2022-10-08) 1 commit
- sparse-checkout.txt: new document with sparse-checkout directions
Design doc.
Needs review.
source: <pull.1367.v3.git.1665269538608.gitgitgadget@gmail.com>
* jc/more-sanitizer-at-ci (2022-10-11) 1 commit
- ci: add address and undefined sanitizer tasks
Enable address and undefined sanitizer tasks at GitHub Actions CI.
With this p4 tests seem to die with the server side going away.
source: <xmqqpmezxl9p.fsf@gitster.g>
* jh/struct-zero-init-with-older-clang (2022-10-10) 1 commit
(merged to 'next' on 2022-10-13 at 393abc3019)
+ config.mak.dev: disable suggest braces error on old clang versions
Work around older clang that warns against C99 zero initialization
syntax for struct.
Will merge to 'master'.
source: <pull.1375.v2.git.1665416340806.gitgitgadget@gmail.com>
* od/ci-use-checkout-v3-when-applicable (2022-10-10) 2 commits
. ci(main): linux32 uses actions/checkout@v2
. ci(main): upgrade actions/checkout to v3
Attempt to update GitHub CI to use actions/checkout@v3
Expecting a reroll.
Seems to break the CI completely.
source: <pull.1354.git.git.1665388136.gitgitgadget@gmail.com>
* ab/run-hook-api-cleanup (2022-10-12) 15 commits
- run-command.c: remove "max_processes", add "const" to signal() handler
- run-command.c: pass "opts" further down, and use "opts->processes"
- run-command.c: use "opts->processes", not "pp->max_processes"
- run-command.c: don't copy "data" to "struct parallel_processes"
- run-command.c: don't copy "ungroup" to "struct parallel_processes"
- run-command.c: don't copy *_fn to "struct parallel_processes"
- run-command.c: make "struct parallel_processes" const if possible
- run-command API: move *_tr2() users to "run_processes_parallel()"
- run-command API: have run_process_parallel() take an "opts" struct
- run-command.c: use designated init for pp_init(), add "const"
- run-command API: don't fall back on online_cpus()
- run-command API: make "n" parameter a "size_t"
- run-command tests: use "return", not "exit"
- run-command API: have "run_processes_parallel{,_tr2}()" return void
- run-command test helper: use "else if" pattern
Move a global variable added as a hack during regression fixes to
its proper place in the API.
Will merge to 'next'.
source: <cover-v3-00.15-00000000000-20221012T205712Z-avarab@gmail.com>
* pw/test-todo (2022-10-06) 3 commits
- test_todo: allow [verbose] test as the command
- test_todo: allow [!] grep as the command
- tests: add test_todo() to mark known breakages
RFC for test framework improvement.
Needs review.
source: <pull.1374.git.1665068476.gitgitgadget@gmail.com>
* rj/branch-edit-description-with-nth-checkout (2022-10-10) 1 commit
(merged to 'next' on 2022-10-14 at 90850a2211)
+ branch: support for shortcuts like @{-1}, completed
"git branch --edit-description @{-1}" is now a way to edit branch
description of the branch you were on before switching to the
current branch.
Will merge to 'master'.
source: <fbf84e26-4306-c8df-0e2c-45dc94129e3a@gmail.com>
* rs/diff-caret-bang-with-parents (2022-10-01) 3 commits
(merged to 'next' on 2022-10-17 at 24609eb777)
+ diff: support ^! for merges
+ revisions.txt: unspecify order of resolved parts of ^!
+ revision: use strtol_i() for exclude_parent
"git diff rev^!" did not show combined diff to go to the rev from
its parents.
Will merge to 'master'.
source: <16c49d20-cafc-4b48-3c6b-e11c74c29abb@web.de>
* ab/doc-synopsis-and-cmd-usage (2022-10-13) 34 commits
- tests: assert consistent whitespace in -h output
- tests: start asserting that *.txt SYNOPSIS matches -h output
- doc txt & -h consistency: make "worktree" consistent
- worktree: define subcommand -h in terms of command -h
- reflog doc: list real subcommands up-front
- doc txt & -h consistency: make "commit" consistent
- doc txt & -h consistency: make "diff-tree" consistent
- doc txt & -h consistency: use "[<label>...]" for "zero or more"
- doc txt & -h consistency: make "annotate" consistent
- doc txt & -h consistency: make "stash" consistent
- doc txt & -h consistency: add missing options
- doc txt & -h consistency: use "git foo" form, not "git-foo"
- doc txt & -h consistency: make "bundle" consistent
- doc txt & -h consistency: make "read-tree" consistent
- doc txt & -h consistency: make "rerere" consistent
- doc txt & -h consistency: add missing options and labels
- doc txt & -h consistency: make output order consistent
- doc txt & -h consistency: add or fix optional "--" syntax
- doc txt & -h consistency: fix mismatching labels
- doc SYNOPSIS & -h: use "-" to separate words in labels, not "_"
- doc txt & -h consistency: use "<options>", not "<options>..."
- stash doc SYNOPSIS & -h: correct padding around "[]()"
- doc txt & -h consistency: correct padding around "[]()"
- doc txt & -h consistency: balance unbalanced "[" and "]"
- doc txt & -h consistency: add "-z" to cat-file "-h"
- doc txt & -h consistency: fix incorrect alternates syntax
- doc txt & -h consistency: word-wrap
- built-ins: consistently add "\n" between "usage" and options
- doc SYNOPSIS: consistently use ' for commands
- doc SYNOPSIS: don't use ' for subcommands
- bundle: define subcommand -h in terms of command -h
- builtin/bundle.c: indent with tabs
- CodingGuidelines: update and clarify command-line conventions
- tests: assert *.txt SYNOPSIS and -h output
The short-help text shown by "git cmd -h" and the synopsis text
shown at the beginning of "git help cmd" have been made more
consistent.
Will merge to 'next'?
source: <cover-v5-00.34-00000000000-20221013T153625Z-avarab@gmail.com>
* ab/coccicheck-incremental (2022-10-14) 11 commits
- spatchcache: add a ccache-alike for "spatch"
- cocci: run against a generated ALL.cocci
- cocci: optimistically use COMPUTE_HEADER_DEPENDENCIES
- cocci: make "coccicheck" rule incremental
- cocci: split off "--all-includes" from SPATCH_FLAGS
- cocci: split off include-less "tests" from SPATCH_FLAGS
- Makefile: split off SPATCH_BATCH_SIZE comment from "cocci" heading
- Makefile: have "coccicheck" re-run if flags change
- Makefile: add ability to TAB-complete cocci *.patch rules
- cocci rules: remove unused "F" metavariable from pending rule
- Makefile + shared.mak: rename and indent $(QUIET_SPATCH_T)
"make coccicheck" is time consuming. It has been made to run more
incrementally.
source: <cover-v3-00.11-00000000000-20221014T152552Z-avarab@gmail.com>
* ds/bundle-uri-3 (2022-10-12) 13 commits
- bundle-uri: suppress stderr from remote-https
- bundle-uri: quiet failed unbundlings
- bundle: add flags to verify_bundle()
- bundle-uri: fetch a list of bundles
- bundle: properly clear all revision flags
- bundle-uri: limit recursion depth for bundle lists
- bundle-uri: parse bundle list in config format
- bundle-uri: unit test "key=value" parsing
- bundle-uri: create "key=value" line parsing
- bundle-uri: create base key-value pair parsing
- bundle-uri: create bundle_list struct and helpers
- bundle-uri: use plain string in find_temp_filename()
- Merge branch 'ds/bundle-uri-clone' into ds/bundle-uri-3
Define the logical elements of a "bundle list", data structure to
store them in-core, format to transfer them, and code to parse
them.
source: <pull.1333.v5.git.1665579160.gitgitgadget@gmail.com>
* js/bisect-in-c (2022-08-30) 17 commits
- bisect: no longer try to clean up left-over `.git/head-name` files
- bisect: remove Cogito-related code
- Turn `git bisect` into a full built-in
- bisect: move even the command-line parsing to `bisect--helper`
- bisect--helper: make `state` optional
- bisect--helper: calling `bisect_state()` without an argument is a bug
- bisect: avoid double-quoting when printing the failed command
- bisect run: fix the error message
- bisect: verify that a bogus option won't try to start a bisection
- bisect--helper: migrate to OPT_SUBCOMMAND()
- bisect--helper: make the order consistently `argc, argv`
- bisect--helper: make `terms` an explicit singleton
- bisect--helper: simplify exit code computation
- bisect--helper: really retire `--bisect-autostart`
- bisect--helper: really retire --bisect-next-check
- bisect--helper: retire the --no-log option
- Merge branch 'sg/parse-options-subcommand' into js/bisect-in-c
Final bits of "git bisect.sh" have been rewritten in C.
Needs review.
cf. <xmqqv8pr8903.fsf@gitster.g>
source: <pull.1132.v6.git.1661885419.gitgitgadget@gmail.com>
^ permalink raw reply [relevance 2%]
* What's cooking in git.git (Oct 2022, #04; Wed, 12)
@ 2022-10-12 21:23 3% Junio C Hamano
0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2022-10-12 21:23 UTC (permalink / raw)
To: git
Here are the topics that have been cooking in my tree. Commits
prefixed with '+' are in 'next' (being in 'next' is a sign that a
topic is stable enough to be used and are candidate to be in a future
release). Commits prefixed with '-' are only in 'seen', and aren't
considered "accepted" at all. A topic without enough support may be
discarded after a long period of no activity.
The tip of 'next' has been rewound, after most of the topics that
have been cooking during the last weeks of the previous round
graduated to the 'master' branch. The topics in these early batches
are mostly minor fixes, which might someday become part of the
2.38.x maintenance track, but they need to be on 'master' for a few
weeks before that happens. Some topics outside 'next' have been
expecting updates for too long and we may want to discard them,
unless they see some activities.
Copies of the source code to Git live in many repositories, and the
following is a list of the ones I push into or their mirrors. Some
repositories have only a subset of branches.
With maint, master, next, seen, todo:
git://git.kernel.org/pub/scm/git/git.git/
git://repo.or.cz/alt-git.git/
https://kernel.googlesource.com/pub/scm/git/git/
https://github.com/git/git/
https://gitlab.com/git-vcs/git/
With all the integration branches and topics broken out:
https://github.com/gitster/git/
Even though the preformatted documentation in HTML and man format
are not sources, they are published in these repositories for
convenience (replace "htmldocs" with "manpages" for the manual
pages):
git://git.kernel.org/pub/scm/git/git-htmldocs.git/
https://github.com/gitster/git-htmldocs.git/
Release tarballs are available at:
https://www.kernel.org/pub/software/scm/git/
--------------------------------------------------
[Graduated to 'master']
* ds/bundle-uri-docfix (2022-10-07) 1 commit
(merged to 'next' on 2022-10-07 at 9ebc1e497a)
+ bundle-uri: fix technical doc issues
Doc formatting fix.
source: <pull.1377.git.1665157810025.gitgitgadget@gmail.com>
* jk/sequencer-missing-author-name-check (2022-10-03) 1 commit
(merged to 'next' on 2022-10-07 at 6a9f7e8b80)
+ sequencer: detect author name errors in read_author_script()
Typofix in code.
source: <YzsdRuD2CdJFdNVG@coredump.intra.peff.net>
* nb/doc-mergetool-typofix (2022-10-05) 1 commit
(merged to 'next' on 2022-10-07 at d309a9a130)
+ mergetool.txt: typofix 'overwriten' -> 'overwritten'
Typofix.
source: <pull.1350.git.git.1664844924663.gitgitgadget@gmail.com>
* pw/mailinfo-b-fix (2022-10-03) 1 commit
(merged to 'next' on 2022-10-07 at 5c5d79daef)
+ mailinfo -b: fix an out of bounds access
Fix a logic in "mailinfo -b" that miscomputed the length of a
substring, which lead to an out-of-bounds access.
source: <pull.1372.git.1664789011089.gitgitgadget@gmail.com>
* pw/ssh-sign-report-errors (2022-10-05) 1 commit
(merged to 'next' on 2022-10-07 at 4df1d2379a)
+ ssh signing: return an error when signature cannot be read
The codepath to sign learned to report errors when it fails to read
from "ssh-keygen".
source: <pull.1371.v2.git.1664877694430.gitgitgadget@gmail.com>
* rs/gc-pack-refs-simplify (2022-10-05) 1 commit
(merged to 'next' on 2022-10-07 at ef7d12408d)
+ gc: simplify maintenance_task_pack_refs()
Code clean-up.
source: <ab33f72e-d552-7bd7-bf04-3c476d32b5b6@web.de>
* rs/test-httpd-in-C-locale (2022-10-06) 1 commit
(merged to 'next' on 2022-10-07 at 832c1e856a)
+ t/lib-httpd: pass LANG and LC_ALL to Apache
Force C locale while running tests around httpd to make sure we can
find expected error messages in the log.
source: <a1699375-c660-13ab-42fb-26a8afe4c376@web.de>
--------------------------------------------------
[New Topics]
* ab/grep-simplify-extended-expression (2022-10-11) 1 commit
- grep.c: remove "extended" in favor of "pattern_expression", fix segfault
Giving "--invert-grep" and "--all-match" without "--grep" to the
"git log" command resulted in an attempt to access grep pattern
expression structure that has not been allocated, which has been
corrected.
Will merge to 'next'.
source: <patch-v2-1.1-6ad7627706f-20221011T094715Z-avarab@gmail.com>
* rs/archive-dedup-printf (2022-10-11) 1 commit
- archive: deduplicate verbose printing
Code simplification.
Will merge to 'next'.
source: <af5611aa-8662-7508-4f00-7fcf4e9cbcc6@web.de>
* pw/rebase-reflog-fixes (2022-10-12) 9 commits
- rebase: cleanup action handling
- rebase --abort: improve reflog message
- rebase --apply: make reflog messages match rebase --merge
- rebase --apply: respect GIT_REFLOG_ACTION
- rebase --merge: fix reflog message after skipping
- rebase --merge: fix reflog when continuing
- t3406: rework rebase reflog tests
- rebase --apply: remove duplicated code
- Merge branch 'pw/rebase-keep-base-fixes' into pw/rebase-reflog-fixes
(this branch uses pw/rebase-keep-base-fixes.)
source: <pull.1150.v3.git.1665567312.gitgitgadget@gmail.com>
* sd/doc-smtp-encryption (2022-10-12) 1 commit
- docs: git-send-email: difference between ssl and tls smtp-encryption
Expecting a reroll??
cf. <19e5b678-6014-d783-347f-9169371aaa09@iee.email>
source: <20221012150619.12877-1-sndanailov@wired4ever.net>
--------------------------------------------------
[Stalled]
* ag/merge-strategies-in-c (2022-08-10) 14 commits
- sequencer: use the "octopus" strategy without forking
- sequencer: use the "resolve" strategy without forking
- merge: use the "octopus" strategy without forking
- merge: use the "resolve" strategy without forking
- merge-octopus: rewrite in C
- merge-recursive: move better_branch_name() to merge.c
- merge-resolve: rewrite in C
- merge-one-file: rewrite in C
- update-index: move add_cacheinfo() to read-cache.c
- merge-index: add a new way to invoke `git-merge-one-file'
- merge-index: drop the index
- merge-index: libify merge_one_path() and merge_all()
- t6060: add tests for removed files
- t6060: modify multiple files to expose a possible issue with merge-index
An attempt to rewrite remaining merge strategies from shell to C.
Needs more work.
At the minimum, we should lose 11/14 and possibly 08/14.
cf. <xmqq7d36vfur.fsf@gitster.g>
source: <20220809185429.20098-1-alban.gruin@gmail.com>
* po/glossary-around-traversal (2022-07-09) 3 commits
- glossary: add reachability bitmap description
- glossary: add commit graph description
- glossary: add Object DataBase (ODB) abbreviation
The glossary entries for "commit-graph file" and "reachability
bitmap" have been added.
Expecting a reroll.
cf. <dfe0c1ab-33f8-f13e-71ce-1829bb0d2d7f@iee.email>
source: <pull.1282.git.1657385781.gitgitgadget@gmail.com>
* pw/rebase-keep-base-fixes (2022-09-07) 7 commits
- rebase --keep-base: imply --no-fork-point
- rebase --keep-base: imply --reapply-cherry-picks
- rebase: factor out branch_base calculation
- rebase: rename merge_base to branch_base
- rebase: store orig_head as a commit
- t3416: set $EDITOR in subshell
- t3416: tighten two tests
(this branch is used by pw/rebase-reflog-fixes.)
"git rebase --keep-base" used to discard the commits that are
already cherry-picked to the upstream, even when "keep-base" meant
that the base, on top of which the history is being rebuilt, does
not yet include these cherry-picked commits. The --keep-base
option now implies --reapply-cherry-picks and --no-fork-point
options.
Expecting a reroll.
cf. <e25127f3-6135-b716-a12f-5dbe4f40dc42@gmail.com>
source: <pull.1323.v2.git.1662561470.gitgitgadget@gmail.com>
* js/cmake-updates (2022-08-24) 5 commits
- cmake: increase time-out for a long-running test
- cmake: avoid editing t/test-lib.sh
- add -p: avoid ambiguous signed/unsigned comparison
- cmake: copy the merge tools for testing
- cmake: make it easier to diagnose regressions in CTest runs
Update to build procedure with VS using CMake/CTest.
Expecting a reroll.
cf. <3df77ffd-85a2-3a54-9005-34a24ec6e82d@github.com>
cf. <531620e1-de4c-74aa-c840-c12ce81f8740@github.com> and others
source: <pull.1320.v2.git.1661243463.gitgitgadget@gmail.com>
* gc/submodule-clone-update-with-branches (2022-08-29) 6 commits
- clone, submodule update: check out branches
- submodule--helper: refactor up-to-date criterion
- submodule: return target of submodule symref
- t5617: drop references to remote-tracking branches
- repo-settings: add submodule_propagate_branches
- clone: teach --detach option
"git clone --recurse-submodules" and "git submodule update" learns
to honor the "propagete branches" option.
Expecting a reroll.
cf. <20220901200047.515294-1-jonathantanmy@google.com> and others
source: <pull.1321.git.git.1661806456.gitgitgadget@gmail.com>
* tb/diffstat-with-utf8-strwidth (2022-09-14) 1 commit
- diff.c: use utf8_strwidth() to count display width
"git diff --stat" etc. were invented back when everything was ASCII
and strlen() was a way to measure the display width of a string;
adjust them to compute the display width assuming UTF-8 pathnames.
Expecting a reroll.
source: <20220914151333.3309-1-tboegi@web.de>
* mj/credential-helper-auth-headers (2022-09-13) 8 commits
- http: set specific auth scheme depending on credential
- http: move proactive auth to first slot creation
- http: store all request headers on active_request_slot
- credential: add WWW-Authenticate header to cred requests
- http: read HTTP WWW-Authenticate response headers
- osxkeychain: clarify that we ignore unknown lines
- netrc: ignore unknown lines (do not die)
- wincred: ignore unknown lines (do not die)
Extending credential helper protocol.
Expecting a reroll.
A separate non-RFC submission of the first three is expected.
cf. <AS8PR03MB86897FAC3E1E4F03D4420644C04F9@AS8PR03MB8689.eurprd03.prod.outlook.com>
source: <pull.1352.git.1663097156.gitgitgadget@gmail.com>
* cw/submodule-status-in-parallel (2022-09-23) 4 commits
. diff-lib: parallelize run_diff_files for submodules
. diff-lib: refactor functions
. submodule: move status parsing into function
. run-command: add pipe_output to run_processes_parallel
Allow the internal "diff-files" engine to run "how has this
submodule changed?" in parallel to speed up "git status".
Breaks its self check.
cf. https://github.com/git/git/actions/runs/3115673002/jobs/5052804463
source: <20220922232947.631309-1-calvinwan@google.com>
* es/mark-gc-cruft-as-experimental (2022-08-03) 2 commits
- config: let feature.experimental imply gc.cruftPacks=true
- gc: add tests for --cruft and friends
Enable gc.cruftpacks by default for those who opt into
feature.experimental setting.
Expecting a reroll.
cf. <220804.86a68ke9d5.gmgdl@evledraar.gmail.com>
cf. <6803b725-526e-a1c8-f15c-a9ed4a144d4c@github.com>
source: <20220803205721.3686361-1-emilyshaffer@google.com>
* es/doc-creation-factor-fix (2022-07-28) 2 commits
- range-diff: clarify --creation-factor=<factor>
- format-patch: clarify --creation-factor=<factor>
Expecting a reroll by somebody more familiar with the logic
cf. <xmqqo7wfix7p.fsf@gitster.g>
source: <7229p500-p2r4-on87-6802-8o90s36rr3s4@tzk.qr>
* cw/remote-object-info (2022-08-13) 7 commits
. SQUASH???
. cat-file: add remote-object-info to batch-command
. transport: add client support for object-info
. serve: advertise object-info feature
. protocol-caps: initialization bug fix
. fetch-pack: move fetch initialization
. fetch-pack: refactor packet writing
A client component to talk with the object-info endpoint.
Expecting a reroll.
Under SANITIZE=address, t1006-cat-file.sh finds a breakage.
cf. <20220728230210.2952731-1-calvinwan@google.com>
cf. <CAFySSZDvgwbbHCHfyuaqX3tKsr-GjJ9iihygg6rNNe46Ys7_EA@mail.gmail.com>
source: <20220728230210.2952731-1-calvinwan@google.com>
--------------------------------------------------
[Cooking]
* ab/coding-guidelines-c99 (2022-10-11) 5 commits
- CodingGuidelines: recommend against unportable C99 struct syntax
- CodingGuidelines: mention C99 features we can't use
- CodingGuidelines: allow declaring variables in for loops
- CodingGuidelines: mention dynamic C99 initializer elements
- CodingGuidelines: update for C99
Update CodingGuidelines to clarify what features to use and avoid
in C99.
Will merge to 'next'.
source: <20221010203800.2154698-1-gitster@pobox.com>
* jc/symbolic-ref-no-recurse (2022-10-09) 1 commit
- symbolic-ref: teach "--[no-]recurse" option
After checking out a "branch" that is a symbolic-ref that points at
another branch, "git symbolic-ref HEAD" reports the underlying
branch, not the symbolic-ref the user gave checkout as argument.
The command learned the "--no-recurse" option to stop after
dereferencing a symbolic-ref only once.
Will merge to 'next'?
source: <xmqqleprcn08.fsf@gitster.g>
* jc/use-of-uc-in-log-messages (2022-10-07) 1 commit
(merged to 'next' on 2022-10-11 at 0b8c91d7e2)
+ SubmittingPatches: use usual capitalization in the log message body
Clarify that "the sentence after <area>: prefix does not begin with
a capital letter" rule applies only to the commit title.
Will merge to 'master'.
source: <xmqqedvjfqx1.fsf@gitster.g>
* ds/cmd-main-reorder (2022-10-08) 1 commit
- git.c: improve code readability in cmd_main()
Code clean-up.
Will merge to 'next'?
source: <pull.1355.v3.git.git.1665246097190.gitgitgadget@gmail.com>
* ed/fsmonitor-inotify (2022-10-10) 6 commits
. fsmonitor: update doc for Linux
. fsmonitor: test updates
. fsmonitor: enable fsmonitor for Linux
. fsmonitor: implement filesystem change listener for Linux
. fsmonitor: determine if filesystem is local or remote
. fsmonitor: prepare to share code between Mac OS and Linux
(this branch uses ed/fsmonitor-on-networked-macos.)
Bundled fsmonitor for Linux using inotify API.
Needs review.
source: <pull.1352.git.git.1665326258.gitgitgadget@gmail.com>
* en/sparse-checkout-design (2022-10-08) 1 commit
- sparse-checkout.txt: new document with sparse-checkout directions
Design doc.
Needs review.
source: <pull.1367.v3.git.1665269538608.gitgitgadget@gmail.com>
* jc/more-sanitizer-at-ci (2022-10-11) 1 commit
- ci: add address and undefined sanitizer tasks
Enable address and undefined sanitizer tasks at GitHub Actions CI.
Will merge to and cook in 'next'??
source: <xmqqpmezxl9p.fsf@gitster.g>
* rs/use-fspathncmp (2022-10-08) 1 commit
(merged to 'next' on 2022-10-11 at 11cbd1ce81)
+ dir: use fspathncmp() in pl_hashmap_cmp()
Code clean-up.
Will merge to 'master'.
source: <cb6ffcdb-d719-7928-96b8-e46482dd141f@web.de>
* jh/struct-zero-init-with-older-clang (2022-10-10) 1 commit
- config.mak.dev: disable suggest braces error on old clang versions
Work around older clang that warns against C99 zero initialization
syntax for struct.
Will merge to 'next'.
source: <pull.1375.v2.git.1665416340806.gitgitgadget@gmail.com>
* od/ci-use-checkout-v3-when-applicable (2022-10-10) 2 commits
. ci(main): linux32 uses actions/checkout@v2
. ci(main): upgrade actions/checkout to v3
Attempt to update GitHub CI to use actions/checkout@v3
Expecting a reroll.
Seems to break the CI completely.
source: <pull.1354.git.git.1665388136.gitgitgadget@gmail.com>
* pw/remove-rebase-p-test (2022-10-10) 1 commit
(merged to 'next' on 2022-10-11 at 000bd34796)
+ t3435: remove redundant test case
Remove outdated test.
Will merge to 'master'.
source: <pull.1379.git.1665395106351.gitgitgadget@gmail.com>
* ab/run-hook-api-cleanup (2022-10-05) 15 commits
- run-command.c: don't copy "ungroup" to "struct parallel_processes"
- run-command.c: don't copy *_fn to "struct parallel_processes"
- run-command API: move *_tr2() users to "run_processes_parallel()"
- run-command API: have run_process_parallel() take an "opts" struct
- run-command API: make run_process_parallel{,_tr2}() thin wrappers
- run-command API: add nascent "struct run_process_parallel_opts"
- run-command.c: add an initializer for "struct parallel_processes"
- run-command API: don't fall back on online_cpus()
- run-command API: make "jobs" parameter an "unsigned int"
- run-command API: have "run_processes_parallel{,_tr2}()" return void
- run-command tests: use "return", not "exit"
- run-command test helper: use "else if" pattern
- run-command tests: test stdout of run_command_parallel()
- submodule tests: reset "trace.out" between "grep" invocations
- hook tests: fix redirection logic error in 96e7225b310
Move a global variable added as a hack during regression fixes to
its proper place in the API.
Needs review.
source: <cover-00.15-00000000000-20220930T111343Z-avarab@gmail.com>
* rs/bisect-start-leakfix (2022-10-07) 1 commit
(merged to 'next' on 2022-10-11 at 07f87534c1)
+ bisect--helper: plug strvec leak
Code clean-up that results in plugging a leak.
Will merge to 'master'.
source: <1965b54b-122a-c965-f886-1a7dd6afbfb4@web.de>
* ab/unused-annotation (2022-10-05) 1 commit
(merged to 'next' on 2022-10-11 at c3099ad3ab)
+ git-compat-util.h: GCC deprecated message arg only in GCC 4.5+
Compilation fix for ancient compilers.
Will merge to 'master'.
source: <20221005221928.703750-1-asedeno@google.com>
* dd/document-runtime-prefix-better (2022-10-05) 1 commit
(merged to 'next' on 2022-10-11 at 9f4a3bb7bd)
+ Makefile: clarify runtime relative gitexecdir
Update comment in the Makefile about the RUNTIME_PREFIX config knob.
Will merge to 'master'.
source: <20221006013205.15015-1-congdanhqx@gmail.com>
* jk/cleanup-callback-parameters (2022-10-06) 4 commits
(merged to 'next' on 2022-10-11 at a3350d66b6)
+ attr: drop DEBUG_ATTR code
+ commit: avoid writing to global in option callback
+ multi-pack-index: avoid writing to global in option callback
+ test-submodule: inline resolve_relative_url() function
Code clean-up.
Will merge to 'master'.
source: <Yz7Tjy7Rh8cXVxYQ@coredump.intra.peff.net>
source: <Yz7UhYXvNl6+1GbZ@coredump.intra.peff.net>
* pw/test-todo (2022-10-06) 3 commits
- test_todo: allow [verbose] test as the command
- test_todo: allow [!] grep as the command
- tests: add test_todo() to mark known breakages
RFC for test framework improvement.
Needs review.
source: <pull.1374.git.1665068476.gitgitgadget@gmail.com>
* jc/tmp-objdir (2022-09-30) 1 commit
(merged to 'next' on 2022-10-11 at 17d0843c43)
+ tmp-objdir: skip clean up when handling a signal
The code to clean temporary object directories (used for
quarantine) tried to remove them inside its signal handler, which
was a no-no.
Will merge to 'master'.
source: <pull.1348.v4.git.git.1664570831583.gitgitgadget@gmail.com>
* jc/branch-description-unset (2022-09-30) 1 commit
(merged to 'next' on 2022-10-11 at 3f81ee978b)
+ branch: do not fail a no-op --edit-desc
"GIT_EDITOR=: git branch --edit-description" resulted in failure,
which has been corrected.
Will merge to 'master'.
source: <xmqqmtagka8x.fsf@gitster.g>
* rj/branch-edit-desc-unborn (2022-10-07) 1 commit
(merged to 'next' on 2022-10-11 at de3eccde7c)
+ branch: description for non-existent branch errors
"git branch --edit-description" on an unborh branch misleadingly
said that no such branch exists, which has been corrected.
Will merge to 'master'.
source: <8d627a2c-923f-181f-a03b-15f370c4dd0f@gmail.com>
* jt/promisor-remote-fetch-tweak (2022-10-05) 2 commits
(merged to 'next' on 2022-10-11 at e93567bc8f)
+ promisor-remote: die upon failing fetch
+ promisor-remote: remove a return value
Remove error detection from a function that fetches from promisor
remotes, and make it die when such a fetch fails to bring all the
requested objects, to give an early failure to various operations.
Will merge to 'master'.
source: <cover.1664917853.git.jonathantanmy@google.com>
* ed/fsmonitor-on-networked-macos (2022-10-10) 7 commits
(merged to 'next' on 2022-10-11 at 32076d13b7)
+ fsmonitor: fix leak of warning message
+ fsmonitor: add documentation for allowRemote and socketDir options
+ fsmonitor: check for compatability before communicating with fsmonitor
+ fsmonitor: deal with synthetic firmlinks on macOS
+ fsmonitor: avoid socket location check if using hook
+ fsmonitor: relocate socket file if .git directory is remote
+ fsmonitor: refactor filesystem checks to common interface
(this branch is used by ed/fsmonitor-inotify.)
By default, use of fsmonitor on a repository on networked
filesystem is disabled. Add knobs to make it workable on macOS.
Will merge to 'master'.
source: <pull.1326.v15.git.1664904751.gitgitgadget@gmail.com>
* rj/branch-edit-description-with-nth-checkout (2022-10-10) 1 commit
- branch: support for shortcuts like @{-1}, completed
"git branch --edit-description @{-1}" is now a way to edit branch
description of the branch you were on before switching to the
current branch.
Will merge to 'next'.
source: <fbf84e26-4306-c8df-0e2c-45dc94129e3a@gmail.com>
* rs/diff-caret-bang-with-parents (2022-10-01) 3 commits
- diff: support ^! for merges
- revisions.txt: unspecify order of resolved parts of ^!
- revision: use strtol_i() for exclude_parent
"git diff rev^!" did not show combined diff to go to the rev from
its parents.
Needs review.
source: <16c49d20-cafc-4b48-3c6b-e11c74c29abb@web.de>
* ab/doc-synopsis-and-cmd-usage (2022-10-05) 34 commits
- tests: assert consistent whitespace in -h output
- tests: start asserting that *.txt SYNOPSIS matches -h output
- doc txt & -h consistency: make "worktree" consistent
- worktree: define subcommand -h in terms of command -h
- reflog doc: list real subcommands up-front
- doc txt & -h consistency: make "commit" consistent
- doc txt & -h consistency: make "diff-tree" consistent
- doc txt & -h consistency: use "[<label>...]" for "zero or more"
- doc txt & -h consistency: make "annotate" consistent
- doc txt & -h consistency: make "stash" consistent
- doc txt & -h consistency: add missing options
- doc txt & -h consistency: use "git foo" form, not "git-foo"
- doc txt & -h consistency: make "bundle" consistent
- doc txt & -h consistency: make "read-tree" consistent
- doc txt & -h consistency: make "rerere" consistent
- doc txt & -h consistency: add missing options and labels
- doc txt & -h consistency: make output order consistent
- doc txt & -h consistency: add or fix optional "--" syntax
- doc txt & -h consistency: fix mismatching labels
- doc SYNOPSIS & -h: use "-" to separate words in labels, not "_"
- doc txt & -h consistency: use "<options>", not "<options>..."
- stash doc SYNOPSIS & -h: correct padding around "[]()"
- doc txt & -h consistency: correct padding around "[]()"
- doc txt & -h consistency: balance unbalanced "[" and "]"
- doc txt & -h consistency: add "-z" to cat-file "-h"
- doc txt & -h consistency: fix incorrect alternates syntax
- doc txt & -h consistency: word-wrap
- built-ins: consistently add "\n" between "usage" and options
- doc SYNOPSIS: consistently use ' for commands
- doc SYNOPSIS: don't use ' for subcommands
- bundle: define subcommand -h in terms of command -h
- builtin/bundle.c: indent with tabs
- CodingGuidelines: update and clarify command-line conventions
- tests: assert *.txt SYNOPSIS and -h output
The short-help text shown by "git cmd -h" and the synopsis text
shown at the beginning of "git help cmd" have been made more
consistent.
Needs review.
source: <cover-v4-00.34-00000000000-20221004T132211Z-avarab@gmail.com>
* ab/coccicheck-incremental (2022-08-31) 9 commits
- spatchcache: add a ccache-alike for "spatch"
- cocci: optimistically use COMPUTE_HEADER_DEPENDENCIES
- cocci: make "coccicheck" rule incremental
- cocci: split off "--all-includes" from SPATCH_FLAGS
- cocci: split off include-less "tests" from SPATCH_FLAGS
- Makefile: split off SPATCH_BATCH_SIZE comment from "cocci" heading
- Makefile: have "coccicheck" re-run if flags change
- Makefile: add ability to TAB-complete cocci *.patch rules
- cocci rules: remove unused "F" metavariable from pending rule
"make coccicheck" is time consuming. It has been made to run more
incrementally.
Needs review.
source: <cover-v2-0.9-00000000000-20220831T205130Z-avarab@gmail.com>
* ds/bundle-uri-3 (2022-10-12) 13 commits
- bundle-uri: suppress stderr from remote-https
- bundle-uri: quiet failed unbundlings
- bundle: add flags to verify_bundle()
- bundle-uri: fetch a list of bundles
- bundle: properly clear all revision flags
- bundle-uri: limit recursion depth for bundle lists
- bundle-uri: parse bundle list in config format
- bundle-uri: unit test "key=value" parsing
- bundle-uri: create "key=value" line parsing
- bundle-uri: create base key-value pair parsing
- bundle-uri: create bundle_list struct and helpers
- bundle-uri: use plain string in find_temp_filename()
- Merge branch 'ds/bundle-uri-clone' into ds/bundle-uri-3
Define the logical elements of a "bundle list", data structure to
store them in-core, format to transfer them, and code to parse
them.
source: <pull.1333.v5.git.1665579160.gitgitgadget@gmail.com>
* js/bisect-in-c (2022-08-30) 17 commits
- bisect: no longer try to clean up left-over `.git/head-name` files
- bisect: remove Cogito-related code
- Turn `git bisect` into a full built-in
- bisect: move even the command-line parsing to `bisect--helper`
- bisect--helper: make `state` optional
- bisect--helper: calling `bisect_state()` without an argument is a bug
- bisect: avoid double-quoting when printing the failed command
- bisect run: fix the error message
- bisect: verify that a bogus option won't try to start a bisection
- bisect--helper: migrate to OPT_SUBCOMMAND()
- bisect--helper: make the order consistently `argc, argv`
- bisect--helper: make `terms` an explicit singleton
- bisect--helper: simplify exit code computation
- bisect--helper: really retire `--bisect-autostart`
- bisect--helper: really retire --bisect-next-check
- bisect--helper: retire the --no-log option
- Merge branch 'sg/parse-options-subcommand' into js/bisect-in-c
Final bits of "git bisect.sh" have been rewritten in C.
Needs review.
cf. <xmqqv8pr8903.fsf@gitster.g>
source: <pull.1132.v6.git.1661885419.gitgitgadget@gmail.com>
^ permalink raw reply [relevance 3%]
* [PATCH v3 4/8] rebase --merge: fix reflog message after skipping
2022-10-12 9:35 2% ` [PATCH v3 0/8] rebase: make reflog messages independent of the backend Phillip Wood via GitGitGadget
2022-10-12 9:35 2% ` [PATCH v3 3/8] rebase --merge: fix reflog when continuing Phillip Wood via GitGitGadget
@ 2022-10-12 9:35 2% ` Phillip Wood via GitGitGadget
2022-10-21 9:21 2% ` [PATCH v4 0/8] rebase: make reflog messages independent of the backend Phillip Wood via GitGitGadget
2 siblings, 0 replies; 200+ results
From: Phillip Wood via GitGitGadget @ 2022-10-12 9:35 UTC (permalink / raw)
To: git
Cc: Phillip Wood, Christian Couder, Elijah Newren,
Ævar Arnfjörð Bjarmason, Calvin Wan, Emily Shaffer,
Glen Choo, Victoria Dye, Phillip Wood, Phillip Wood
From: Phillip Wood <phillip.wood@dunelm.org.uk>
The reflog message for every pick after running "rebase --skip" looks
like
rebase (skip) (pick): commit subject line
Fix this by not appending " (skip)" to the reflog action.
Signed-off-by: Phillip Wood <phillip.wood@dunelm.org.uk>
---
builtin/rebase.c | 2 --
t/t3406-rebase-message.sh | 24 ++++++++++++++++++++++++
2 files changed, 24 insertions(+), 2 deletions(-)
diff --git a/builtin/rebase.c b/builtin/rebase.c
index 488e6bdfd3e..9a40a5e27f8 100644
--- a/builtin/rebase.c
+++ b/builtin/rebase.c
@@ -1297,8 +1297,6 @@ int cmd_rebase(int argc, const char **argv, const char *prefix)
struct string_list merge_rr = STRING_LIST_INIT_DUP;
options.action = "skip";
- set_reflog_action(&options);
-
rerere_clear(the_repository, &merge_rr);
string_list_clear(&merge_rr, 1);
ropts.flags = RESET_HEAD_HARD;
diff --git a/t/t3406-rebase-message.sh b/t/t3406-rebase-message.sh
index 3ca2fbb0d59..8aa6a79acc1 100755
--- a/t/t3406-rebase-message.sh
+++ b/t/t3406-rebase-message.sh
@@ -163,6 +163,30 @@ test_reflog () {
# check there is only one new entry in the branch reflog
test_cmp_rev fast-forward@{1} X
'
+
+ test_expect_success "rebase $mode --skip reflog${reflog_action:+ GIT_REFLOG_ACTION=$reflog_action}" '
+ git checkout conflicts &&
+ test_when_finished "git reset --hard Q" &&
+
+ (
+ if test -n "$reflog_action"
+ then
+ GIT_REFLOG_ACTION="$reflog_action" &&
+ export GIT_REFLOG_ACTION
+ fi &&
+ test_must_fail git rebase $mode main &&
+ git rebase --skip
+ ) &&
+
+ git log -g --format=%gs -4 >actual &&
+ write_reflog_expect <<-EOF &&
+ ${reflog_action:-rebase} (finish): returning to refs/heads/conflicts
+ ${reflog_action:-rebase} (pick): Q
+ ${reflog_action:-rebase} (pick): P
+ ${reflog_action:-rebase} (start): checkout main
+ EOF
+ test_cmp expect actual
+ '
}
test_reflog --merge
--
gitgitgadget
^ permalink raw reply related [relevance 2%]
* [PATCH v3 3/8] rebase --merge: fix reflog when continuing
2022-10-12 9:35 2% ` [PATCH v3 0/8] rebase: make reflog messages independent of the backend Phillip Wood via GitGitGadget
@ 2022-10-12 9:35 2% ` Phillip Wood via GitGitGadget
2022-10-12 9:35 2% ` [PATCH v3 4/8] rebase --merge: fix reflog message after skipping Phillip Wood via GitGitGadget
2022-10-21 9:21 2% ` [PATCH v4 0/8] rebase: make reflog messages independent of the backend Phillip Wood via GitGitGadget
2 siblings, 0 replies; 200+ results
From: Phillip Wood via GitGitGadget @ 2022-10-12 9:35 UTC (permalink / raw)
To: git
Cc: Phillip Wood, Christian Couder, Elijah Newren,
Ævar Arnfjörð Bjarmason, Calvin Wan, Emily Shaffer,
Glen Choo, Victoria Dye, Phillip Wood, Phillip Wood
From: Phillip Wood <phillip.wood@dunelm.org.uk>
The reflog message for a conflict resolution committed by "rebase
--continue" looks like
rebase (continue): commit subject line
Unfortunately the reflog message each subsequent pick look like
rebase (continue) (pick): commit subject line
Fix this by setting the reflog message for "rebase --continue" in
sequencer_continue() so it does not affect subsequent commits. This
introduces a memory leak similar to the one leaking GIT_REFLOG_ACTION
in pick_commits(). Both of these will be fixed in a future series that
stops the sequencer calling setenv().
If we fail to commit the staged changes then we error out so
GIT_REFLOG_ACTION does not need to be reset in that case.
Signed-off-by: Phillip Wood <phillip.wood@dunelm.org.uk>
---
builtin/rebase.c | 2 --
sequencer.c | 5 +++++
t/t3406-rebase-message.sh | 9 +++++++--
3 files changed, 12 insertions(+), 4 deletions(-)
diff --git a/builtin/rebase.c b/builtin/rebase.c
index 51accb4fd61..488e6bdfd3e 100644
--- a/builtin/rebase.c
+++ b/builtin/rebase.c
@@ -1271,8 +1271,6 @@ int cmd_rebase(int argc, const char **argv, const char *prefix)
int fd;
options.action = "continue";
- set_reflog_action(&options);
-
/* Sanity check */
if (get_oid("HEAD", &head))
die(_("Cannot read HEAD"));
diff --git a/sequencer.c b/sequencer.c
index 61a8e0020d5..5790b35d763 100644
--- a/sequencer.c
+++ b/sequencer.c
@@ -4785,6 +4785,8 @@ int sequencer_continue(struct repository *r, struct replay_opts *opts)
if (read_populate_opts(opts))
return -1;
if (is_rebase_i(opts)) {
+ char *previous_reflog_action;
+
if ((res = read_populate_todo(r, &todo_list, opts)))
goto release_todo_list;
@@ -4795,10 +4797,13 @@ int sequencer_continue(struct repository *r, struct replay_opts *opts)
unlink(rebase_path_dropped());
}
+ previous_reflog_action = xstrdup(getenv(GIT_REFLOG_ACTION));
+ setenv(GIT_REFLOG_ACTION, reflog_message(opts, "continue", NULL), 1);
if (commit_staged_changes(r, opts, &todo_list)) {
res = -1;
goto release_todo_list;
}
+ setenv(GIT_REFLOG_ACTION, previous_reflog_action, 1);
} else if (!file_exists(get_todo_path(opts)))
return continue_single_pick(r, opts);
else if ((res = read_populate_todo(r, &todo_list, opts)))
diff --git a/t/t3406-rebase-message.sh b/t/t3406-rebase-message.sh
index 5253dd1551d..3ca2fbb0d59 100755
--- a/t/t3406-rebase-message.sh
+++ b/t/t3406-rebase-message.sh
@@ -17,6 +17,7 @@ test_expect_success 'setup' '
git checkout -b conflicts O &&
test_commit P &&
+ test_commit conflict-X fileX &&
test_commit Q &&
git checkout -b topic O &&
@@ -107,13 +108,17 @@ test_reflog () {
GIT_REFLOG_ACTION="$reflog_action" &&
export GIT_REFLOG_ACTION
fi &&
- git rebase $mode main
+ test_must_fail git rebase $mode main &&
+ echo resolved >fileX &&
+ git add fileX &&
+ git rebase --continue
) &&
- git log -g --format=%gs -4 >actual &&
+ git log -g --format=%gs -5 >actual &&
write_reflog_expect <<-EOF &&
${reflog_action:-rebase} (finish): returning to refs/heads/conflicts
${reflog_action:-rebase} (pick): Q
+ ${reflog_action:-rebase} (continue): conflict-X
${reflog_action:-rebase} (pick): P
${reflog_action:-rebase} (start): checkout main
EOF
--
gitgitgadget
^ permalink raw reply related [relevance 2%]
* [PATCH v3 0/8] rebase: make reflog messages independent of the backend
2022-04-20 9:56 3% ` [PATCH v2 0/8] " Phillip Wood via GitGitGadget
2022-04-20 9:56 2% ` [PATCH v2 3/8] rebase --merge: fix reflog when continuing Phillip Wood via GitGitGadget
2022-04-20 9:56 2% ` [PATCH v2 4/8] rebase --merge: fix reflog message after skipping Phillip Wood via GitGitGadget
@ 2022-10-12 9:35 2% ` Phillip Wood via GitGitGadget
2022-10-12 9:35 2% ` [PATCH v3 3/8] rebase --merge: fix reflog when continuing Phillip Wood via GitGitGadget
` (2 more replies)
2 siblings, 3 replies; 200+ results
From: Phillip Wood via GitGitGadget @ 2022-10-12 9:35 UTC (permalink / raw)
To: git
Cc: Phillip Wood, Christian Couder, Elijah Newren,
Ævar Arnfjörð Bjarmason, Calvin Wan, Emily Shaffer,
Glen Choo, Victoria Dye, Phillip Wood
This series fixes some bugs in the reflog messages when rebasing and changes
the reflog messages of "rebase --apply" to match "rebase --merge" with the
aim of making the reflog easier to parse.
Thanks to everyone who commented on V2, I've added the review club
participants that I've got address for to the cc list. I've rebased onto
pw/rebase-keep-base-fixes.
Change since V2:
* Patch 1: Reworded the commit message to address the concerns in [1,2]
about the behavior when head_name is NULL. There is also a small change
due to being rebased.
* Patch 2: Unchanged. There wasn't much love for parameterized tests in
review club but we want to ensure both backends produce the same messages
I think this is the safest way to achieve that. Using separate tests
makes it too easy to introduce subtle differences in the testing of the
two backends.
* Patch 3: Added a note to the commit message to address the concerns in
[1] about not resetting GIT_REFLOG_ACTION when we return early.
* Patches 4 & 5: Unchanged.
* Patch 6: Reworded the commit message to make a stronger argument for this
change. There are concerns about backwards compatibility in [1,3,4] but
(i) we have made similar changes in the past without complaints and (ii)
we're changing the message to an existing format. There is also a small
change due to being rebased.
* Patches 7 & 8: Small changes due to rebase.
[1]
https://docs.google.com/document/d/14L8BAumGTpsXpjDY8VzZ4rRtpAjuGrFSRqn3stCuS_w/edit?pli=1#heading=h.t6g5l2t5ibzw
[2] https://lore.kernel.org/git/xmqq35i7r4rj.fsf@gitster.g/ [3]
https://lore.kernel.org/git/xmqq4k2nmmeg.fsf@gitster.g/ [4]
https://lore.kernel.org/git/220420.865yn4833u.gmgdl@evledraar.gmail.com/
V2 Cover Letter:
Thanks to Christian and Elijah for their comments on V1.
I've updated commit message for patch 1 to try and be clearer about the
removal of a call to strbuf_release() and spilt out the test changes from
the old patch 2 into a separate preparatory patch.
V1 Cover Letter:
This is a series of rebase reflog related patches with the aim of unifying
the reflog messages from the two rebase backends.
* improve rebase reflog test coverage
* rebase --merge: fix reflog messages for --continue and --skip
* rebase --apply: respect GIT_REFLOG_ACTION
* rebase --abort: improve reflog message
* unify reflog messages between the two rebase backends
This series is based on pw/use-inprocess-checkout-in-rebase
Phillip Wood (8):
rebase --apply: remove duplicated code
t3406: rework rebase reflog tests
rebase --merge: fix reflog when continuing
rebase --merge: fix reflog message after skipping
rebase --apply: respect GIT_REFLOG_ACTION
rebase --apply: make reflog messages match rebase --merge
rebase --abort: improve reflog message
rebase: cleanup action handling
builtin/rebase.c | 146 ++++++++++++------------------
sequencer.c | 5 ++
t/t3406-rebase-message.sh | 185 +++++++++++++++++++++++++++++++-------
3 files changed, 215 insertions(+), 121 deletions(-)
base-commit: 0203c679871112c78adc6428a8ed6c04c30ccad9
Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-1150%2Fphillipwood%2Fwip%2Frebase-reflog-fixes-v3
Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-1150/phillipwood/wip/rebase-reflog-fixes-v3
Pull-Request: https://github.com/gitgitgadget/git/pull/1150
Range-diff vs v2:
1: a4320f2fcf3 ! 1: a84cf971a75 rebase --apply: remove duplicated code
@@ Metadata
## Commit message ##
rebase --apply: remove duplicated code
- When we are reattaching HEAD after a fast-forward we can use
- move_to_original_branch() rather than open coding a copy of that
- code. The old code appears to handle the case where the rebase is
- started from a detached HEAD but in fact in that case there is nothing
- to do as we have already updated HEAD.
+ Use move_to_original_branch() when reattaching HEAD after a fast-forward
+ rather than open coding a copy of that code. move_to_original_branch()
+ does not call reset_head() if head_name is NULL but there should be no
+ user visible changes even though we currently call reset_head() in that
+ case. The reason for this is that the reset_head() call does not add a
+ message to the reflog because we're not changing the commit that HEAD
+ points to and so lock_ref_for_update() elides the update. When head_name
+ is not NULL then reset_head() behaves like "git symbolic-ref" and so the
+ reflog is updated.
Note that the removal of "strbuf_release(&msg)" is safe as there is an
identical call just above this hunk which can be seen by viewing the
@@ builtin/rebase.c: int cmd_rebase(int argc, const char **argv, const char *prefix
* we just fast-forwarded.
*/
- strbuf_reset(&msg);
- if (oideq(&merge_base, &options.orig_head)) {
+ if (oideq(&branch_base, &options.orig_head->object.oid)) {
printf(_("Fast-forwarded %s to %s.\n"),
branch_name, options.onto_name);
- strbuf_addf(&msg, "rebase finished: %s onto %s",
2: 0904b50a377 = 2: b9255ad35d2 t3406: rework rebase reflog tests
3: 6c15f00e170 ! 3: ea4da25a19c rebase --merge: fix reflog when continuing
@@ Commit message
in pick_commits(). Both of these will be fixed in a future series that
stops the sequencer calling setenv().
+ If we fail to commit the staged changes then we error out so
+ GIT_REFLOG_ACTION does not need to be reset in that case.
+
Signed-off-by: Phillip Wood <phillip.wood@dunelm.org.uk>
## builtin/rebase.c ##
4: d3afa85ffc5 = 4: 225ff4baef7 rebase --merge: fix reflog message after skipping
5: afa67abe01a = 5: 1094681eb11 rebase --apply: respect GIT_REFLOG_ACTION
6: 95161f21e00 ! 6: a5338e6bdd8 rebase --apply: make reflog messages match rebase --merge
@@ Commit message
rebase --apply: make reflog messages match rebase --merge
The apply backend creates slightly different reflog messages to the
- merge backend when starting and finishing a rebase and when picking
- commits. The choice of backend is really an implementation detail so
- it is confusing to have the same command create different messages
- depending on which backend is selected. Change the apply backend so
- the reflog messages from the two backends match as closely as
- possible. Note that there is still a difference when committing a
- conflict resolution - the merge backend will use "(continue)" rather
- than "(pick)" in that case as it does not know which command created
- the conflict that it is committing.
+ merge backend when starting or finishing a rebase and when picking
+ commits. These differences make it harder than it needs to be to parse
+ the reflog (I have a script that reads the finishing messages from
+ rebase and it is a pain to have to accommodate two different message
+ formats). While it is possible to determine the backend used for a
+ rebase from the reflog messages, the differences are not designed for
+ that purpose. c2417d3af7 (rebase: drop '-i' from the reflog for
+ interactive-based rebases, 2020-02-15) removed the clear distinction
+ between the reflog messages of the two backends without complaint.
+
+ As the merge backend is the default it is likely to be the format most
+ common in existing reflogs. For that reason the apply backend is changed
+ to format its reflog messages to match the merge backend as closely as
+ possible. Note that there is still a difference as when committing a
+ conflict resolution the apply backend will use "(pick)" rather than
+ "(continue)" because it is not currently possible to change the message
+ for a single commit.
+
+ In addition to c2417d3af7 we also changed the reflog messages in
+ 68aa495b59 (rebase: implement --merge via the interactive machinery,
+ 2018-12-11) and 2ac0d6273f (rebase: change the default backend from "am"
+ to "merge", 2020-02-15). This commit makes the same change to "git
+ rebase --apply" that 2ac0d6273f made to "git rebase" without any backend
+ specific options. As the messages are changed to use an existing format
+ any scripts that can parse the reflog messages of the default rebase
+ backend should be unaffected by this change.
+
+ There are existing tests for the messages from both backends which are
+ adjusted to ensure that they do not get out of sync in the future.
Signed-off-by: Phillip Wood <phillip.wood@dunelm.org.uk>
@@ builtin/rebase.c: static int run_am(struct rebase_options *opts)
am.git_cmd = 1;
strvec_push(&am.args, "am");
-
-+ strvec_pushf(&am.env_array, GIT_REFLOG_ACTION_ENVIRONMENT "=%s (pick)",
++ strvec_pushf(&am.env, GIT_REFLOG_ACTION_ENVIRONMENT "=%s (pick)",
+ getenv(GIT_REFLOG_ACTION_ENVIRONMENT));
if (opts->action && !strcmp("continue", opts->action)) {
strvec_push(&am.args, "--resolved");
@@ builtin/rebase.c: int cmd_rebase(int argc, const char **argv, const char *prefix
+ strbuf_addf(&msg, "%s (start): checkout %s",
getenv(GIT_REFLOG_ACTION_ENVIRONMENT), options.onto_name);
ropts.oid = &options.onto->object.oid;
- ropts.orig_head = &options.orig_head,
+ ropts.orig_head = &options.orig_head->object.oid,
## t/t3406-rebase-message.sh ##
@@ t/t3406-rebase-message.sh: test_expect_success 'error out early upon -C<n> or --whitespace=<bad>' '
7: d2c1dfbcd5e ! 7: aa808725fb8 rebase --abort: improve reflog message
@@ builtin/rebase.c: int cmd_rebase(int argc, const char **argv, const char *prefix
+ strbuf_addf(&head_msg, "%s (abort): returning to %s",
+ getenv(GIT_REFLOG_ACTION_ENVIRONMENT),
+ options.head_name ? options.head_name
-+ : oid_to_hex(&options.orig_head));
- ropts.oid = &options.orig_head;
++ : oid_to_hex(&options.orig_head->object.oid));
+ ropts.oid = &options.orig_head->object.oid;
+ ropts.head_msg = head_msg.buf;
ropts.branch = options.head_name;
ropts.flags = RESET_HEAD_HARD;
- ropts.default_reflog_action = DEFAULT_REFLOG_ACTION;
if (reset_head(the_repository, &ropts) < 0)
die(_("could not move back to %s"),
- oid_to_hex(&options.orig_head));
+ oid_to_hex(&options.orig_head->object.oid));
## t/t3406-rebase-message.sh ##
@@ t/t3406-rebase-message.sh: test_reflog () {
8: b0d21affa78 ! 8: f9c8664b883 rebase: cleanup action handling
@@ builtin/rebase.c: static int run_sequencer_rebase(struct rebase_options *opts,
return ret;
@@ builtin/rebase.c: static int run_am(struct rebase_options *opts)
strvec_push(&am.args, "am");
- strvec_pushf(&am.env_array, GIT_REFLOG_ACTION_ENVIRONMENT "=%s (pick)",
+ strvec_pushf(&am.env, GIT_REFLOG_ACTION_ENVIRONMENT "=%s (pick)",
getenv(GIT_REFLOG_ACTION_ENVIRONMENT));
- if (opts->action && !strcmp("continue", opts->action)) {
+ if (opts->action == ACTION_CONTINUE) {
@@ builtin/rebase.c: static int run_specific_rebase(struct rebase_options *opts, en
else
@@ builtin/rebase.c: int cmd_rebase(int argc, const char **argv, const char *prefix)
struct strbuf buf = STRBUF_INIT;
- struct object_id merge_base;
+ struct object_id branch_base;
int ignore_whitespace = 0;
- enum action action = ACTION_NONE;
const char *gpg_sign = NULL;
@@ builtin/rebase.c: int cmd_rebase(int argc, const char **argv, const char *prefix
ACTION_SHOW_CURRENT_PATCH),
OPT_CALLBACK_F(0, "apply", &options, NULL,
@@ builtin/rebase.c: int cmd_rebase(int argc, const char **argv, const char *prefix)
- if (preserve_merges_selected)
- die(_("--preserve-merges was replaced by --rebase-merges"));
+ } else if (is_directory(merge_dir())) {
+ strbuf_reset(&buf);
+ strbuf_addf(&buf, "%s/rewritten", merge_dir());
+- if (!(action == ACTION_ABORT) && is_directory(buf.buf)) {
++ if (!(options.action == ACTION_ABORT) && is_directory(buf.buf)) {
+ die(_("`rebase --preserve-merges` (-p) is no longer supported.\n"
+ "Use `git rebase --abort` to terminate current rebase.\n"
+ "Or downgrade to v2.33, or earlier, to complete the rebase."));
+@@ builtin/rebase.c: int cmd_rebase(int argc, const char **argv, const char *prefix)
+ "Note: Your `pull.rebase` configuration may also be set to 'preserve',\n"
+ "which is no longer supported; use 'merges' instead"));
- if (action != ACTION_NONE && total_argc != 2) {
+ if (options.action != ACTION_NONE && total_argc != 2) {
@@ builtin/rebase.c: int cmd_rebase(int argc, const char **argv, const char *prefix
}
@@ builtin/rebase.c: int cmd_rebase(int argc, const char **argv, const char *prefix)
if (options.root && options.fork_point > 0)
- die(_("cannot combine '--root' with '--fork-point'"));
+ die(_("options '%s' and '%s' cannot be used together"), "--root", "--fork-point");
- if (action != ACTION_NONE && !in_progress)
+ if (options.action != ACTION_NONE && !in_progress)
--
gitgitgadget
^ permalink raw reply [relevance 2%]
* [ANNOUNCE] Git v2.38.0
@ 2022-10-03 17:26 3% Junio C Hamano
0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2022-10-03 17:26 UTC (permalink / raw)
To: git; +Cc: git-packagers
The latest feature release Git v2.38.0 is now available at the
usual places. It is comprised of 699 non-merge commits since
v2.37.0, contributed by 92 people, 24 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.38.0'
tag and the 'master' branch that the tag points at:
url = https://git.kernel.org/pub/scm/git/git
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.37.0 are as follows.
Welcome to the Git development community!
Andrew Olsen, Anthony Delannoy, Carlos López, Celeste Liu,
Cleber Rosa, David Plumpton, Elijah Conners, Eric DeCosta,
Goss Geppert, Hubert Bossot, Ilya K, Ingy dot Net, Jacob Stopak,
Julien Rouhaud, Kilian Kilger, Lana Deere, Manuel Boni, Matthew
Klein, Miaoqian Lin, Moritz Baumann, Pavel Rappo, Pierre Garnier,
Richard Oliver, and Xavier Morel.
Returning contributors who helped this release are as follows.
Thanks for your continued support.
Abhradeep Chakraborty, Adam Dinwoodie, Ævar Arnfjörð
Bjarmason, Alexander Shopov, Alex Henrie, Arthur Milchior,
Bagas Sanjaya, brian m. carlson, Calvin Wan, Carlo Marcelo
Arenas Belón, Christian Couder, Christoph Reiter, Derrick
Stolee, Dimitriy Ryazantcev, Đoàn Trần Công Danh, Elijah
Newren, Emily Shaffer, Emir SARI, Eric Sunshine, Fangyi
Zhou, Felipe Contreras, Fernando Ramos, Glen Choo, Han Xin,
Hariom Verma, Jacob Keller, Jaydeep Das, Jean-Noël Avila,
Jeff King, Jiang Xin, Joey Hess, Johannes Schindelin, John
Cai, Jonathan Tan, Jordi Mas, Josh Steadmon, Junio C Hamano,
Justin Donnelly, Kyle Zhao, Lessley Dennington, Li Linchao,
Linus Torvalds, Martin Ågren, Matheus Tavares, Matthew John
Cheetham, Michael J Gruber, Øystein Walle, Peter Krefting,
Philip Oakley, Philippe Blain, Phillip Szelat, Phillip Wood,
Ralf Thielow, Randall S. Becker, Renato Botelho, René Scharfe,
Shaoxuan Yuan, Siddharth Asthana, SZEDER Gábor, Tao Klerks,
Taylor Blau, Teng Long, Todd Zullinger, Torsten Bögershausen,
Victoria Dye, Yi-Jyun Pan, ZheNing Hu, and 依云.
[*] We are counting not just the authorship contribution but issue
reporting, mentoring, helping and reviewing that are recorded in
the commit trailers.
----------------------------------------------------------------
Git v2.38 Release Notes
=======================
UI, Workflows & Features
* "git remote show [-n] frotz" now pays attention to negative
pathspec.
* "git push" sometimes performs poorly when reachability bitmaps are
used, even in a repository where other operations are helped by
bitmaps. The push.useBitmaps configuration variable is introduced
to allow disabling use of reachability bitmaps only for "git push".
* "git grep -m<max-hits>" is a way to limit the hits shown per file.
* "git merge-tree" learned a new mode where it takes two commits and
computes a tree that would result in the merge commit, if the
histories leading to these two commits were to be merged.
* "git mv A B" in a sparsely populated working tree can be asked to
move a path between directories that are "in cone" (i.e. expected
to be materialized in the working tree) and "out of cone"
(i.e. expected to be hidden). The handling of such cases has been
improved.
* Earlier, HTTP transport clients learned to tell the server side
what locale they are in by sending Accept-Language HTTP header, but
this was done only for some requests but not others.
* Introduce a safe.barerepository configuration variable that
allows users to forbid discovery of bare repositories.
* Various messages that come from the pack-bitmap codepaths have been
tweaked.
* "git rebase -i" learns to update branches whose tip appear in the
rebased range with "--update-refs" option.
* "git ls-files" learns the "--format" option to tweak its output.
* "git cat-file" learned an option to use the mailmap when showing
commit and tag objects.
* When "git merge" finds that it cannot perform a merge, it should
restore the working tree to the state before the command was
initiated, but in some corner cases it didn't.
* Operating modes like "--batch" of "git cat-file" command learned to
take NUL-terminated input, instead of one-item-per-line.
* "git rm" has become more aware of the sparse-index feature.
* "git rev-list --disk-usage" learned to take an optional value
"human" to show the reported value in human-readable format, like
"3.40MiB".
* The "diagnose" feature to create a zip archive for diagnostic
material has been lifted from "scalar" and made into a feature of
"git bugreport".
* The namespaces used by "log --decorate" from "refs/" hierarchy by
default has been tightened.
* "git rev-list --ancestry-path=C A..B" is a natural extension of
"git rev-list A..B"; instead of choosing a subset of A..B to those
that have ancestry relationship with A, it lets a subset with
ancestry relationship with C.
* "scalar" now enables built-in fsmonitor on enlisted repositories,
when able.
* The bash prompt (in contrib/) learned to optionally indicate when
the index is unmerged.
* "git clone" command learned the "--bundle-uri" option to coordinate
with hosting sites the use of pre-prepared bundle files.
* "git range-diff" learned to honor pathspec argument if given.
* "git format-patch --from=<ident>" can be told to add an in-body
"From:" line even for commits that are authored by the given
<ident> with "--force-in-body-from" option.
* The built-in fsmonitor refuses to work on a network mounted
repositories; a configuration knob for users to override this has
been introduced.
* The "scalar" addition from Microsoft is now part of the core Git
installation.
Performance, Internal Implementation, Development Support etc.
* Collection of what is referenced by objects in promisor packs have
been optimized to inspect these objects in the in-pack order.
* Introduce a helper to see if a branch is already being worked on
(hence should not be newly checked out in a working tree), which
performs much better than the existing find_shared_symref() to
replace many uses of the latter.
* Teach "git archive" to (optionally and then by default) avoid
spawning an external "gzip" process when creating ".tar.gz" (and
".tgz") archives.
* Allow large objects read from a packstream to be streamed into a
loose object file straight, without having to keep it in-core as a
whole.
* Further preparation to turn git-submodule.sh into a builtin
continues.
* Apply Coccinelle rule to turn raw memmove() into MOVE_ARRAY() cpp
macro, which would improve maintainability and readability.
* Teach "make all" to build gitweb as well.
* Tweak tests so that they still work when the "git init" template
did not create .git/info directory.
* Add Coccinelle rules to detect the pattern of initializing and then
finalizing a structure without using it in between at all, which
happens after code restructuring and the compilers fail to
recognize as an unused variable.
* The code to convert between GPG trust level strings and internal
constants we use to represent them have been cleaned up.
* Support for libnettle as SHA256 implementation has been added.
* The way "git multi-pack" uses parse-options API has been improved.
* A Coccinelle rule (in contrib/) to encourage use of COPY_ARRAY
macro has been improved.
* API tweak to make it easier to run fuzz testing on commit-graph parser.
* Omit fsync-related trace2 entries when their values are all zero.
* The codepath to write multi-pack index has been taught to release a
large chunk of memory that holds an array of objects in the packs,
as soon as it is done with the array, to reduce memory consumption.
* Add a level of redirection to array allocation API in xdiff part,
to make it easier to share with the libgit2 project.
* "git fetch" client logs the partial clone filter used in the trace2
output.
* The "bundle URI" design gets documented.
* The common ancestor negotiation exchange during a "git fetch"
session now leaves trace log.
* Test portability improvements.
(merge 4d1d843be7 mt/rot13-in-c later to maint).
* The "subcommand" mode is introduced to parse-options API and update
the command line parser of Git commands with subcommands.
* The pack bitmap file gained a bitmap-lookup table to speed up
locating the necessary bitmap for a given commit.
* The assembly version of SHA-1 implementation for PPC has been
removed.
* The server side that responds to "git fetch" and "git clone"
request has been optimized by allowing it to send objects in its
object store without recomputing and validating the object names.
* Annotate function parameters that are not used (but cannot be
removed for structural reasons), to prepare us to later compile
with -Wunused warning turned on.
* Share the text used to explain configuration variables used by "git
<subcmd>" in "git help <subcmd>" with the text from "git help config".
* "git mv A B" in a sparsely populated working tree can be asked to
move a path from a directory that is "in cone" to another directory
that is "out of cone". Handling of such a case has been improved.
* The chainlint script for our tests has been revamped.
Fixes since v2.37
-----------------
* Rewrite of "git add -i" in C that appeared in Git 2.25 didn't
correctly record a removed file to the index, which was fixed.
* Certain diff options are currently ignored when combined-diff is
shown; mark them as incompatible with the feature.
* Adjust technical/bitmap-format to be formatted by AsciiDoc, and
add some missing information to the documentation.
* Fixes for tests when the source directory has unusual characters in
its path, e.g. whitespaces, double-quotes, etc.
* "git mktree --missing" lazily fetched objects that are missing from
the local object store, which was totally unnecessary for the purpose
of creating the tree object(s) from its input.
* Give _() markings to fatal/warning/usage: labels that are shown in
front of these messages.
* References to commands-to-be-typed-literally in "git rebase"
documentation mark-up have been corrected.
* In a non-bare repository, the behavior of Git when the
core.worktree configuration variable points at a directory that has
a repository as its subdirectory, regressed in Git 2.27 days.
* Recent update to vimdiff layout code has been made more robust
against different end-user vim settings.
* Plug various memory leaks, both in the main code and in test-tool
commands.
* Fixes a long-standing corner case bug around directory renames in
the merge-ort strategy.
* The resolve-undo information in the index was not protected against
GC, which has been corrected.
* A corner case bug where lazily fetching objects from a promisor
remote resulted in infinite recursion has been corrected.
* "git clone" from a repository with some ref whose HEAD is unborn
did not set the HEAD in the resulting repository correctly, which
has been corrected.
* An earlier attempt to plug leaks placed a clean-up label to jump to
at a bogus place, which as been corrected.
* Variable quoting fix in the vimdiff driver of "git mergetool"
* "git shortlog -n" relied on the underlying qsort() to be stable,
which shouldn't have. Fixed.
* A fix for a regression in test framework.
* mkstemp() emulation on Windows has been improved.
* Add missing documentation for "include" and "includeIf" features in
"git config" file format, which incidentally teaches the command
line completion to include them in its offerings.
* Avoid "white/black-list" in documentation and code comments.
* Workaround for a compiler warning against use of die() in
osx-keychain (in contrib/).
* Workaround for a false positive compiler warning.
* "git p4" working on UTF-16 files on Windows did not implement
CRLF-to-LF conversion correctly, which has been corrected.
* "git p4" did not handle non-ASCII client name well, which has been
corrected.
* "rerere-train" script (in contrib/) used to honor commit.gpgSign
while recreating the throw-away merges.
* "git checkout" miscounted the paths it updated, which has been
corrected.
* Fix for a bug that makes write-tree to fail to write out a
non-existent index as a tree, introduced in 2.37.
* There was a bug in the codepath to upgrade generation information
in commit-graph from v1 to v2 format, which has been corrected.
* Gitweb had legacy URL shortener that is specific to the way
projects hosted on kernel.org used to (but no longer) work, which
has been removed.
* Fix build procedure for Windows that uses CMake so that it can pick
up the shell interpreter from local installation location.
* Conditionally allow building Python interpreter on Windows
* Fix to lstat() emulation on Windows.
* Older gcc with -Wall complains about the universal zero initializer
"struct s = { 0 };" idiom, which makes developers' lives
inconvenient (as -Werror is enabled by DEVELOPER=YesPlease). The
build procedure has been tweaked to help these compilers.
* Plug memory leaks in the failure code path in the "merge-ort" merge
strategy backend.
* "git symbolic-ref symref non..sen..se" is now diagnosed as an error.
* A follow-up fix to a fix for a regression in 2.36 around hooks.
* Avoid repeatedly running getconf to ask libc version in the test
suite, and instead just as it once per script.
* Platform-specific code that determines if a directory is OK to use
as a repository has been taught to report more details, especially
on Windows.
* "vimdiff3" regression fix.
* "git fsck" reads mode from tree objects but canonicalizes the mode
before passing it to the logic to check object sanity, which has
hid broken tree objects from the checking logic. This has been
corrected, but to help existing projects with broken tree objects
that they cannot fix retroactively, the severity of anomalies this
code detects has been demoted to "info" for now.
* Fixes to sparse index compatibility work for "reset" and "checkout"
commands.
* An earlier optimization discarded a tree-object buffer that is
still in use, which has been corrected.
* Fix deadlocks between main Git process and subprocess spawned via
the pipe_command() API, that can kill "git add -p" that was
reimplemented in C recently.
* The sequencer machinery translated messages left in the reflog by
mistake, which has been corrected.
* xcalloc(), imitating calloc(), takes "number of elements of the
array", and "size of a single element", in this order. A call that
does not follow this ordering has been corrected.
* The preload-index codepath made copies of pathspec to give to
multiple threads, which were left leaked.
* Update the version of Ubuntu used for GitHub Actions CI from 18.04
to 22.04.
* The auto-stashed local changes created by "git merge --autostash"
was mixed into a conflicted state left in the working tree, which
has been corrected.
* Multi-pack index got corrupted when preferred pack changed from one
pack to another in a certain way, which has been corrected.
(merge 99e4d084ff tb/midx-with-changing-preferred-pack-fix later to maint).
* The clean-up of temporary files created via mks_tempfile_dt() was
racy and attempted to unlink() the leading directory when signals
are involved, which has been corrected.
(merge babe2e0559 rs/tempfile-cleanup-race-fix later to maint).
* FreeBSD portability fix for "git maintenance" that spawns "crontab"
to schedule tasks.
(merge ee69e7884e bc/gc-crontab-fix later to maint).
* Those who use diff-so-fancy as the diff-filter noticed a regression
or two in the code that parses the diff output in the built-in
version of "add -p", which has been corrected.
(merge 0a101676e5 js/add-p-diff-parsing-fix later to maint).
* Segfault fix-up to an earlier fix to the topic to teach "git reset"
and "git checkout" work better in a sparse checkout.
(merge 037f8ea6d9 vd/sparse-reset-checkout-fixes later to maint).
* "git diff --no-index A B" managed its the pathnames of its two
input files rather haphazardly, sometimes leaking them. The
command line argument processing has been straightened out to clean
it up.
(merge 2b43dd0eb5 rs/diff-no-index-cleanup later to maint).
* "git rev-list --verify-objects" ought to inspect the contents of
objects and notice corrupted ones, but it didn't when the commit
graph is in use, which has been corrected.
(merge b27ccae34b jk/rev-list-verify-objects-fix later to maint).
* More fixes to "add -p"
(merge 64ec8efb83 js/builtin-add-p-portability-fix later to maint).
* The parser in the script interface to parse-options in "git
rev-parse" has been updated to diagnose a bogus input correctly.
(merge f20b9c36d0 ow/rev-parse-parseopt-fix later to maint).
* The code that manages list-object-filter structure, used in partial
clones, leaked the instances, which has been plugged.
(merge 66eede4a37 jk/plug-list-object-filter-leaks later to maint).
* Fix another UI regression in the reimplemented "add -p".
(merge f6f0ee247f rs/add-p-worktree-mode-prompt-fix later to maint).
* "git fetch" over protocol v2 sent an incorrect ref prefix request
to the server and made "git pull" with configured fetch refspec
that does not cover the remote branch to merge with fail, which has
been corrected.
(merge 49ca2fba39 jk/proto-v2-ref-prefix-fix later to maint).
* A result from opendir() was leaking in the commit-graph expiration
codepath, which has been plugged.
(merge 12f1ae5324 ml/commit-graph-expire-dir-leak-fix later to maint).
* Just like we have coding guidelines, we now have guidelines for
reviewers.
(merge e01b851923 vd/doc-reviewing-guidelines later to maint).
* Other code cleanup, docfix, build fix, etc.
(merge 77b9e85c0f vd/fix-perf-tests later to maint).
(merge 0682bc43f5 jk/test-crontab-fixes later to maint).
(merge b46dd1726c cc/doc-trailer-whitespace-rules later to maint).
----------------------------------------------------------------
Changes since v2.37.0 are as follows:
Abhradeep Chakraborty (9):
bitmap-format.txt: feed the file to asciidoc to generate html
bitmap-format.txt: fix some formatting issues
bitmap-format.txt: add information for trailing checksum
Documentation/technical: describe bitmap lookup table extension
bitmap: move `get commit positions` code to `bitmap_writer_finish`
pack-bitmap-write.c: write lookup table extension
pack-bitmap-write: learn pack.writeBitmapLookupTable and add tests
pack-bitmap: prepare to read lookup table extension
bitmap-lookup-table: add performance tests for lookup table
Adam Dinwoodie (1):
t1800: correct test to handle Cygwin
Alex Henrie (5):
gc: don't translate literal commands
builtin/diagnose.c: don't translate the two mode values
pack-bitmap: improve grammar of "xor chain" error message
l10n: fr: don't say that merge is "the default strategy"
l10n: es: update translation
Alexander Shopov (3):
l10n: bg.po: Updated Bulgarian translation (5482t)
l10n: bg.po: Updated Bulgarian translation (5484t)
l10n: bg.po: Updated Bulgarian translation (5484t)
Anthony Delannoy (1):
preload-index: fix memleak
Bagas Sanjaya (3):
l10n: po-id for 2.38 (round 1)
l10n: po-id for 2.38 (round 2)
l10n: po-id for 2.38 (round 3)
Calvin Wan (1):
submodule merge: update conflict error message
Carlo Marcelo Arenas Belón (2):
setup: tighten ownership checks post CVE-2022-24765
cmake: support local installations of git
Carlos López (1):
grep: add --max-count command line option
Celeste Liu (1):
contrib/rerere-train: avoid useless gpg sign in training
Christian Couder (1):
Documentation: clarify whitespace rules for trailers
Cleber Rosa (1):
setup: fix function name in a BUG() message
Derrick Stolee (51):
branch: add branch_checked_out() helper
branch: check for bisects and rebases
fetch: use new branch_checked_out() and add tests
branch: use branch_checked_out() when deleting refs
branch: fix branch_checked_out() leaks
t5510: replace 'origin' with URL more carefully
vscode: improve tab size and wrapping
git-rebase.txt: use back-ticks consistently
pack-bitmap-write: use const for hashes
midx: extract bitmap write setup
midx: reduce memory pressure while writing bitmaps
daemon: clarify directory arguments
git-cvsserver: clarify directory list
git.txt: remove redundant language
t: avoid "whitelist"
transport.c: avoid "whitelist"
t2407: test bisect and rebase as black-boxes
t2407: test branches currently using apply backend
branch: consider refs under 'update-refs'
rebase-interactive: update 'merge' description
sequencer: define array with enum values
sequencer: add update-ref command
rebase: add --update-refs option
rebase: update refs from 'update-ref' commands
sequencer: rewrite update-refs as user edits todo list
rebase: add rebase.updateRefs config option
sequencer: ignore HEAD ref under --update-refs
sequencer: notify user of --update-refs activity
compat/win32: correct for incorrect compiler warning
refs: allow "HEAD" as decoration filter
t4207: modernize test
t4207: test coloring of grafted decorations
refs: add array of ref namespaces
refs: use ref_namespaces for replace refs base
log-tree: use ref_namespaces instead of if/else-if
log: add default decoration filter
log: add --clear-decorations option
log: create log.initialDecorationSet=all
maintenance: stop writing log.excludeDecoration
fetch: use ref_namespaces during prefetch
docs: document bundle URI standard
bundle-uri: add example bundle organization
remote-curl: add 'get' capability
bundle-uri: create basic file-copy logic
clone: add --bundle-uri option
bundle-uri: add support for http(s):// and file://
clone: --bundle-uri cannot be combined with --depth
t6019: modernize tests with helper
clone: warn on failure to repo_init()
ci: update 'static-analysis' to Ubuntu 22.04
pack-bitmap: remove trace2 region from hot path
Dimitriy Ryazantcev (1):
i18n: mark message helpers prefix for translation
Elijah Conners (1):
reftable: use a pointer for pq_entry param
Elijah Newren (43):
merge-tree: rename merge_trees() to trivial_merge_trees()
merge-tree: move logic for existing merge into new function
merge-tree: add option parsing and initial shell for real merge function
merge-tree: implement real merges
merge-ort: split out a separate display_update_messages() function
merge-tree: support including merge messages in output
merge-ort: provide a merge_get_conflicted_files() helper function
merge-ort: remove command-line-centric submodule message from merge-ort
merge-tree: provide a list of which files have conflicts
merge-tree: provide easy access to `ls-files -u` style info
merge-ort: store more specific conflict information
merge-ort: optionally produce machine-readable output
merge-tree: allow `ls-files -u` style info to be NUL terminated
merge-tree: add a --allow-unrelated-histories flag
git-merge-tree.txt: add a section on potentional usage mistakes
t6429: fix use of non-existent function
t6423: add tests of dual directory rename plus add/add conflict
merge-ort: small cleanups of check_for_directory_rename
merge-ort: make a separate function for freeing struct collisions
merge-ort: shuffle the computation and cleanup of potential collisions
merge-ort: fix issue with dual rename and add/add conflict
merge-ort-wrappers: make printed message match the one from recursive
merge-resolve: abort if index does not match HEAD
merge: abort if index does not match HEAD for trivial merges
merge: do not abort early if one strategy fails to handle the merge
merge: fix save_state() to work when there are stat-dirty files
merge: make restore_state() restore staged state too
merge: ensure we can actually restore pre-merge state
merge: do not exit restore_state() prematurely
merge-ort: remove translator lego in new "submodule conflict suggestion"
merge-ort: avoid surprise with new sub_flag variable
merge-ort: provide helpful submodule update message when possible
merge-ort: remove code obsoleted by other changes
rev-list-options.txt: fix simple typo
revision: allow --ancestry-path to take an argument
merge: only apply autostash when appropriate
merge: cleanup confusing logic for handling successful merges
merge: small code readability improvement
t4301: add more interesting merge-tree testcases
t64xx: convert 'test_create_repo' to 'git init'
diff: have submodule_format logic avoid additional diff headers
diff: fix filtering of additional headers under --remerge-diff
diff: fix filtering of merge commits under --remerge-diff
Emir SARI (3):
l10n: tr: Update translations for v2.38.0 round #1
l10n: tr: v2.38.0 round 2
l10n: tr: v2.38.0 3rd round
Eric DeCosta (1):
fsmonitor: option to allow fsmonitor to run against network-mounted repos
Eric Sunshine (25):
t2407: fix broken &&-chains in compound statement
t1092: fix buggy sparse "blame" test
t: detect and signal failure within loop
t4301: account for behavior differences between sed implementations
t4301: fix broken &&-chains and add missing loop termination
t4301: emit blank line in more idiomatic fashion
t: add skeleton chainlint.pl
chainlint.pl: add POSIX shell lexical analyzer
chainlint.pl: add POSIX shell parser
chainlint.pl: add parser to validate tests
chainlint.pl: add parser to identify test definitions
chainlint.pl: validate test scripts in parallel
chainlint.pl: don't require `return|exit|continue` to end with `&&`
t/Makefile: apply chainlint.pl to existing self-tests
chainlint.pl: don't require `&` background command to end with `&&`
chainlint.pl: don't flag broken &&-chain if `$?` handled explicitly
chainlint.pl: don't flag broken &&-chain if failure indicated explicitly
chainlint.pl: complain about loops lacking explicit failure handling
chainlint.pl: allow `|| echo` to signal failure upstream of a pipe
t/chainlint: add more chainlint.pl self-tests
test-lib: retire "lint harder" optimization hack
test-lib: replace chainlint.sed with chainlint.pl
t/Makefile: teach `make test` and `make prove` to run chainlint.pl
t: retire unused chainlint.sed
chainlint: colorize problem annotations and test delimiters
Fangyi Zhou (3):
help: fix doubled words in explanation for developer interfaces
l10n: zh_CN v2.38.0 rounds 1 & 2
l10n: zh_CN: 2.38.0 round 3
Felipe Contreras (7):
mergetools: vimdiff: fix comment
mergetools: vimdiff: make vimdiff3 actually work
mergetools: vimdiff: silence annoying messages
mergetools: vimdiff: fix for diffopt
mergetools: vimdiff: rework tab logic
mergetools: vimdiff: fix single window layouts
mergetools: vimdiff: simplify tabfirst
Fernando Ramos (1):
vimdiff: make layout engine more robust against user vim settings
Glen Choo (16):
submodule--helper: eliminate internal "--update" option
submodule--helper tests: add missing "display path" coverage
submodule--helper update: use display path helper
submodule--helper: don't recreate recursive prefix
submodule--helper: use correct display path helper
submodule--helper update: use --super-prefix
submodule--helper: remove display path helper
Documentation/git-config.txt: add SCOPES section
Documentation: define protected configuration
config: learn `git_protected_config()`
safe.directory: use git_protected_config()
setup.c: create `safe.bareRepository`
config.c: NULL check when reading protected config
Documentation/git-reflog: remove unneeded \ from \{
submodule--helper: add "const" to copy of "update_data"
submodule--helper: refactor "errmsg_str" to be a "struct strbuf"
Goss Geppert (2):
dir: traverse into repository
dir: minor refactoring / clean-up
Han Xin (6):
unpack-objects: low memory footprint for get_data() in dry_run mode
object-file.c: refactor write_loose_object() to several steps
object-file.c: add "stream_loose_object()" to handle large object
unpack-objects: use stream_loose_object() to unpack large objects
commit-graph.c: no lazy fetch in lookup_commit_in_graph()
t5330: remove run_with_limited_processses()
Hubert Bossot (1):
l10n: fr: The word 'branche' is only feminine
Jacob Keller (1):
remote: handle negative refspecs in git remote show
Jacob Stopak (3):
Documentation: fix various repeat word typos
Documentation: clean up a few misspelled word typos
Documentation: clean up various typos in technical docs
Jaydeep Das (1):
gpg-interface: add function for converting trust level to string
Jean-Noël Avila (3):
l10n: fr: v2.38 round 1
l10n: fr: v2.38.0 round 2
l10n: fr: v2.38.0 round 3
Jeff King (64):
is_promisor_object(): walk promisor packs in pack-order
fetch: stop passing around unused worktrees variable
branch: drop unused worktrees variable
revisions.txt: escape "..." to avoid asciidoc horizontal ellipsis
clone: drop extra newline from warning message
clone: propagate empty remote HEAD even with other branches
clone: use remote branch if it matches default HEAD
clone: move unborn head creation to update_head()
ref-filter: disable save_commit_buffer while traversing
diff-files: move misplaced cleanup label
write_midx_bitmap(): drop unused refs_snapshot parameter
config.mak.dev: squelch -Wno-missing-braces for older gcc
tree-walk: add a mechanism for getting non-canonicalized modes
fsck: actually detect bad file modes in trees
fsck: downgrade tree badFilemode to "info"
is_promisor_object(): fix use-after-free of tree buffer
compat: add function to enable nonblocking pipes
git-compat-util: make MAX_IO_SIZE define globally available
pipe_command(): avoid xwrite() for writing to pipe
pipe_command(): handle ENOSPC when writing to a pipe
pipe_command(): mark stdin descriptor as non-blocking
git-compat-util: add UNUSED macro
refs: mark unused each_ref_fn parameters
refs: mark unused reflog callback parameters
refs: mark unused virtual method parameters
transport: mark bundle transport_options as unused
streaming: mark unused virtual method parameters
config: mark unused callback parameters
hashmap: mark unused callback parameters
mark unused read_tree_recursive() callback parameters
run-command: mark unused async callback parameters
is_path_owned_by_current_uid(): mark "report" parameter as unused
xdiff: drop unused mmfile parameters from xdl_do_histogram_diff()
log-tree: drop unused commit param in remerge_diff()
match_pathname(): drop unused "flags" parameter
verify_one_sparse(): drop unused parameters
reftable: drop unused parameter from reader_seek_linear()
reflog: assert PARSE_OPT_NONEG in parse-options callbacks
xdiff: drop unused mmfile parameters from xdl_do_patience_diff()
pass subcommand "prefix" arguments to parse_options()
maintenance: add parse-options boilerplate for subcommands
remote: run "remote rm" argv through parse_options()
pack-bitmap-write: drop unused pack_idx_entry parameters
tempfile: drop active flag
tempfile: update comment describing state transitions
test-crontab: minor memory and error handling fixes
lookup_commit_in_graph(): use prepare_commit_graph() to check for graph
rev-list: disable commit graph with --verify-objects
parse_object(): allow skipping hash check
upload-pack: skip parse-object re-hashing of "want" objects
parse_object(): check commit-graph when skip_hash set
t1060: check partial clone of misnamed blob
list_objects_filter_copy(): deep-copy sparse_oid_name field
transport: deep-copy object-filter struct for fetch-pack
transport: free filter options in disconnect_git()
list_objects_filter_options: plug leak of filter_spec strings
prepare_repo_settings(): plug leak of config values
fetch: stop checking for NULL transport->remote in do_fetch()
fetch: add branch.*.merge to default ref-prefix extension
list-objects-filter: don't memset after releasing filter struct
list-objects-filter: handle null default filter spec
list-objects-filter: add and use initializers
list-objects-filter: convert filter_spec to a strbuf
list-objects-filter: initialize sub-filter structs
Johannes Schindelin (38):
merge-ort: store messages in a list, not in a single strbuf
merge-ort: make `path_messages` a strmap to a string_list
Git 2.30.5
Git 2.31.4
Git 2.32.3
Git 2.33.4
Git 2.34.4
Git 2.35.4
Git 2.36.2
add --interactive: allow `update` to stage deleted files
tests: fix incorrect --write-junit-xml code
mergetool(vimdiff): allow paths to contain spaces again
shortlog: use a stable sort
t5351: avoid relying on `core.fsyncMethod = batch` to be supported
t5351: avoid using `test_cmp` for binary data
windows: include the Python bits when building Git for Windows
mingw: remove unneeded `NO_GETTEXT` directive
mingw: remove unneeded `NO_CURL` directive
lstat(mingw): correctly detect ENOTDIR scenarios
merge-ort: clean up after failed merge
merge-ort: do leave trace2 region even if checkout fails
setup: fix some formatting
setup: prepare for more detailed "dubious ownership" messages
mingw: provide details about unsafe directories' ownership
mingw: be more informative when ownership check fails on FAT32
mingw: handle a file owned by the Administrators group correctly
scalar unregister: stop FSMonitor daemon
range-diff: reorder argument handling
range-diff: consistently validate the arguments
range-diff: optionally accept pathspecs
add -p: avoid ambiguous signed/unsigned comparison
t3701: test the built-in `add -i` regardless of NO_PERL
t6132(NO_PERL): do not run the scripted `add -p`
add -p: detect more mismatches between plain vs colored diffs
add -p: gracefully handle unparseable hunk headers in colored diffs
add -p: ignore dirty submodules
git help: special-case `scalar`
scalar: implement the `help` subcommand
Jonathan Tan (1):
fetch-pack: write effective filter to trace2
Jordi Mas (3):
l10n: Update Catalan translation
l10n: Update Catalan translation
l10n: Update Catalan translation
Josh Steadmon (1):
fetch-pack: add tracing for negotiation rounds
Julien Rouhaud (1):
gitweb: remove title shortening heuristics
Junio C Hamano (45):
revision: mark blobs needed for resolve-undo as reachable
A regression fix for 2.37
Git 2.37.1
builtin/mv.c: use the MOVE_ARRAY() macro instead of memmove()
The first batch after Git 2.37
fsck: do not dereference NULL while checking resolve-undo data
The second batch
The third batch
The fourth batch
The fifth batch
builtin/remote.c: use the right kind of STRING_LIST_INIT
The sixth batch
The seventh batch
Downmerge a handful of fixes for 2.37.x maintenance track
The eighth batch
The ninth batch
doc: consolidate --rerere-autoupdate description
doc: clarify rerere-autoupdate
Downmerge a bit more for 2.37.x
The tenth batch
The eleventh batch
Git 2.37.2
The twelfth batch
The thirteenth batch
The fourteenth batch
t5329: notice a failure within a loop
The fifteenth batch
A handful more topics from the 'master' front for 2.37.3
pretty: separate out the logic to decide the use of in-body from
format-patch: allow forcing the use of in-body From: header
format-patch: learn format.forceInBodyFrom configuration variable
The sixteenth batch
Git 2.37.3
The seventeenth batch
The eighteenth batch
The nineteenth batch
The twentieth batch
Merge a handful of topics from the 'master' front
Prepare for 2.38-rc0
Git 2.38-rc0
A bit more of remaining topics before -rc1
Final batch before -rc1
Git 2.38-rc1
Git 2.38-rc2
Git 2.38
Justin Donnelly (1):
git-prompt: show presence of unresolved conflicts at command prompt
Kilian Kilger (2):
git-p4: fix bug with encoding of p4 client name
git-p4: refactoring of p4CmdList()
Kyle Zhao (1):
send-pack.c: add config push.useBitmaps
Lessley Dennington (1):
osx-keychain: fix compiler warning
Li Linchao (3):
ls-files: update test style
remote-curl: send Accept-Language header to server
rev-list: support human-readable output for `--disk-usage`
Linus Torvalds (1):
symbolic-ref: refuse to set syntactically invalid target
Manuel Boni (1):
config.txt: document include, includeIf
Martin Ågren (4):
config/core.txt: fix minor issues for `core.sparseCheckoutCone`
t4200: drop irrelevant code
read-cache: make `do_read_index()` always set up `istate->repo`
cmd-list.perl: fix identifying man sections
Matheus Tavares (7):
checkout: document bug where delayed checkout counts entries twice
checkout: show bug about failed entries being included in final report
checkout: fix two bugs on the final count of updated entries
pkt-line.h: move comment closer to the associated code
t0021: avoid grepping for a Perl-specific string at filter output
t0021: implementation the rot13-filter.pl script in C
tests: use the new C rot13-filter helper to avoid PERL prereq
Matthew John Cheetham (1):
scalar: enable built-in FSMonitor on `register`
Miaoqian Lin (1):
commit-graph: Fix missing closedir in expire_commit_graphs
Michael J Gruber (3):
sequencer: do not translate reflog messages
sequencer: do not translate parameters to error_resolve_conflict()
sequencer: do not translate command names
Moritz Baumann (3):
git-p4: fix CR LF handling for utf16 files
git-p4: fix typo in P4Submit.applyCommit()
git-p4: fix error handling in P4Unshelve.renameBranch()
Peter Krefting (2):
l10n: sv.po: Update Swedish translation (5482t0f0u)
l10n: sv.po: Update Swedish translation (5484t0f0u)
Philip Oakley (1):
doc add: renormalize is not idempotent for CRCRLF
Philippe Blain (3):
diff-format.txt: dst can be 0* SHA-1 when path is deleted, too
diff-format.txt: correct misleading wording
diff-index.txt: update raw output format in examples
Phillip Wood (5):
xdiff: introduce XDL_ALLOC_ARRAY()
xdiff: introduce xdl_calloc
xdiff: introduce XDL_CALLOC_ARRAY()
xdiff: introduce XDL_ALLOC_GROW()
tests: cache glibc version check
Ralf Thielow (2):
l10n: de.po: update German translation
l10n: de.po: update German translation
René Scharfe (28):
archive: update format documentation
archive: rename archiver data field to filter_command
archive-tar: factor out write_block()
archive-tar: add internal gzip implementation
archive-tar: use OS_CODE 3 (Unix) for internal gzip
archive-tar: use internal gzip by default
combine-diff: abort if --ignore-matching-lines is given
combine-diff: abort if --output is given
cocci: avoid normalization rules for memcpy
mingw: avoid mktemp() in mkstemp() implementation
mergesort: unify ranks loops
mergesort: tighten merge loop
mergesort: add macros for typed sort of linked lists
test-mergesort: use DEFINE_LIST_SORT_DEBUG
test-mergesort: use DEFINE_LIST_SORT
blame: use DEFINE_LIST_SORT
commit: use DEFINE_LIST_SORT
fetch-pack: use DEFINE_LIST_SORT
packfile: use DEFINE_LIST_SORT
mergesort: remove llist_mergesort()
nonblock: support Windows
tempfile: avoid directory cleanup race
test-mergesort: read sort input all at once
test-mergesort: use mem_pool for sort input
diff-no-index: release strbuf on queue error
diff-no-index: release prefixed filenames
diff-no-index: simplify argv index calculation
add -p: fix worktree patch mode prompts
Richard Oliver (1):
mktree: do not check type of remote objects
SZEDER Gábor (30):
Makefile: build 'gitweb' in the default target
multi-pack-index: simplify handling of unknown --options
index-format.txt: remove outdated list of supported extensions
git.c: update NO_PARSEOPT markings
t3301-notes.sh: check that default operation mode doesn't take arguments
t5505-remote.sh: check the behavior without a subcommand
t0040-parse-options: test parse_options() with various 'parse_opt_flags'
api-parse-options.txt: fix description of OPT_CMDMODE
parse-options: PARSE_OPT_KEEP_UNKNOWN only applies to --options
parse-options: clarify the limitations of PARSE_OPT_NODASH
parse-options: drop leading space from '--git-completion-helper' output
parse-options: add support for parsing subcommands
builtin/bundle.c: let parse-options parse subcommands
builtin/commit-graph.c: let parse-options parse subcommands
builtin/gc.c: let parse-options parse 'git maintenance's subcommands
builtin/hook.c: let parse-options parse subcommands
builtin/multi-pack-index.c: let parse-options parse subcommands
builtin/notes.c: let parse-options parse subcommands
builtin/reflog.c: let parse-options parse subcommands
builtin/remote.c: let parse-options parse subcommands
builtin/sparse-checkout.c: let parse-options parse subcommands
builtin/stash.c: let parse-options parse subcommands
builtin/worktree.c: let parse-options parse subcommands
promisor-remote: fix xcalloc() argument order
t0040-parse-options: remove leftover debugging
test-parse-options.c: don't use for loop initial declaration
test-parse-options.c: fix style of comparison with zero
notes: simplify default operation mode arguments check
notes, remote: show unknown subcommands between `'
t/Makefile: remove 'test-results' on 'make clean'
Shaoxuan Yuan (22):
t7002: add tests for moving out-of-cone file/directory
t1092: mv directory from out-of-cone to in-cone
mv: update sparsity after moving from out-of-cone to in-cone
mv: decouple if/else-if checks using goto
mv: check if out-of-cone file exists in index with SKIP_WORKTREE bit
mv: check if <destination> exists in index to handle overwriting
mv: use flags mode for update_mode
mv: add check_dir_in_index() and solve general dir check issue
t1092: add tests for `git-rm`
pathspec.h: move pathspec_needs_expanded_index() from reset.c to here
rm: expand the index only when necessary
rm: integrate with sparse-index
t7002: add tests for moving from in-cone to out-of-cone
mv: rename check_dir_in_index() to empty_dir_has_sparse_contents()
mv: free the with_slash in check_dir_in_index()
mv: check if <destination> is a SKIP_WORKTREE_DIR
mv: remove BOTH from enum update_mode
mv: from in-cone to out-of-cone
mv: cleanup empty WORKING_DIRECTORY
advice.h: add advise_on_moving_dirty_path()
mv: check overwrite for in-to-out move
builtin/mv.c: fix possible segfault in add_slash()
Siddharth Asthana (4):
revision: improve commit_rewrite_person()
ident: move commit_rewrite_person() to ident.c
ident: rename commit_rewrite_person() to apply_mailmap_to_header()
cat-file: add mailmap support
Tao Klerks (1):
rev-parse: documentation adjustment - mention remote tracking with @{u}
Taylor Blau (14):
pack-objects.h: remove outdated pahole results
commit-graph: pass repo_settings instead of repository
t5318: demonstrate commit-graph generation v2 corruption
commit-graph: introduce `repo_find_commit_pos_in_graph()`
commit-graph: fix corrupt upgrade from generation v1 to v2
t1006: extract --batch-command inputs to variables
builtin/cat-file.c: support NUL-delimited input with `-z`
t5326: demonstrate potential bitmap corruption
t/lib-bitmap.sh: avoid silencing stderr
midx.c: extract `struct midx_fanout`
midx.c: extract `midx_fanout_add_midx_fanout()`
midx.c: extract `midx_fanout_add_pack_fanout()`
midx.c: include preferred pack correctly with existing MIDX
midx.c: avoid adding preferred objects twice
Teng Long (8):
pack-bitmap.c: fix formatting of error messages
pack-bitmap.c: mark more strings for translations
pack-bitmap.c: rename "idx_name" to "bitmap_name"
pack-bitmap.c: do not ignore error when opening a bitmap file
pack-bitmap.c: using error() instead of silently returning -1
pack-bitmap.c: continue looping when first MIDX bitmap is found
api-trace2.txt: print config key-value pair
tr2: shows scope unconditionally in addition to key-value pair
Todd Zullinger (2):
docs: fix a few recently broken links
api docs: link to html version of api-trace2
Victoria Dye (37):
scalar: reword command documentation to clarify purpose
scalar: convert README.md into a technical design doc
checkout: fix nested sparse directory diff in sparse index
oneway_diff: handle removed sparse directories
cache.h: create 'index_name_pos_sparse()'
unpack-trees: unpack new trees as sparse directories
scalar-diagnose: use "$GIT_UNZIP" in test
scalar-diagnose: avoid 32-bit overflow of size_t
scalar-diagnose: add directory to archiver more gently
scalar-diagnose: move 'get_disk_info()' to 'compat/'
scalar-diagnose: move functionality to common location
diagnose.c: add option to configure archive contents
builtin/diagnose.c: create 'git diagnose' builtin
builtin/diagnose.c: add '--mode' option
builtin/bugreport.c: create '--diagnose' option
scalar-diagnose: use 'git diagnose --mode=all'
scalar: update technical doc roadmap
scalar: constrain enlistment search
scalar-unregister: handle error codes greater than 0
scalar-[un]register: clearly indicate source of error
scalar-delete: do not 'die()' in 'delete_enlistment()'
scalar: move config setting logic into its own function
scalar: update technical doc roadmap with FSMonitor support
p0004: fix prereq declaration
p0006: fix 'read-tree' argument ordering
unpack-trees: fix sparse directory recursion check
scalar: fix command documentation section header
scalar: include in standard Git build & installation
scalar: add to 'git help -a' command list
scalar-clone: add test coverage
t/perf: add Scalar performance tests
t/perf: add 'GIT_PERF_USE_SCALAR' run option
Documentation/technical: include Scalar technical doc
diagnose.c: refactor to safely use 'd_type'
Documentation: add ReviewingGuidelines
diagnose: add to command-list.txt
version: fix builtin linking & documentation
Yi-Jyun Pan (1):
l10n: zh_TW.po: Git 2.38.0, round 3
ZheNing Hu (2):
ls-files: introduce "--format" option
ls-files: fix black space in error message
brian m. carlson (2):
sha256: add support for Nettle
gc: use temporary file for editing crontab
Ævar Arnfjörð Bjarmason (153):
t0008: don't rely on default ".git/info/exclude"
tests: don't depend on template-created .git/branches
tests: don't assume a .git/info for .git/info/grafts
tests: don't assume a .git/info for .git/info/attributes
tests: don't assume a .git/info for .git/info/refs
tests: don't assume a .git/info for .git/info/exclude
tests: don't assume a .git/info for .git/info/sparse-checkout
object-file.c: factor out deflate part of write_loose_object()
core doc: modernize core.bigFileThreshold documentation
git-submodule.sh: remove unused sanitize_submodule_env()
git-submodule.sh: remove unused $prefix variable
git-submodule.sh: make the "$cached" variable a boolean
git-submodule.sh: remove unused top-level "--branch" argument
submodule--helper: have --require-init imply --init
submodule update: remove "-v" option
submodule--helper: rename "absorb-git-dirs" to "absorbgitdirs"
submodule--helper: report "submodule" as our name in some "-h" output
submodule--helper: understand --checkout, --merge and --rebase synonyms
git-submodule.sh: use "$quiet", not "$GIT_QUIET"
git-sh-setup.sh: remove "say" function, change last users
gitweb/Makefile: define all .PHONY prerequisites inline
gitweb/Makefile: add a $(GITWEB_ALL) variable
gitweb/Makefile: clear up and de-duplicate the gitweb.{css,js} vars
gitweb/Makefile: prepare to merge into top-level Makefile
gitweb: remove "test" and "test-installed" targets
gitweb/Makefile: include in top-level Makefile
gitweb/Makefile: add a "NO_GITWEB" parameter
tests: add missing double quotes to included library paths
test-lib.sh: fix prepend_var() quoting issue
config tests: fix harmless but broken "rm -r" cleanup
submodule--helper: remove unused SUPPORT_SUPER_PREFIX flags
check-ref-format: fix trivial memory leak
clone: fix memory leak in wanted_peer_refs()
submodule.c: free() memory from xgetcwd()
revert: free "struct replay_opts" members
cat-file: fix a memory leak in --batch-command mode
merge-file: refactor for subsequent memory leak fix
merge-file: fix memory leaks on error path
checkout: avoid "struct unpack_trees_options" leak
gc: fix a memory leak
cat-file: fix a common "struct object_context" memory leak
pull: fix a "struct oid_array" memory leak
test-tool test-hash: fix a memory leak
test-tool path-utils: fix a memory leak
test-tool {dump,scrap}-cache-tree: fix memory leaks
test-tool urlmatch-normalization: fix a memory leak
test-tool regex: call regfree(), fix memory leaks
test-tool json-writer: fix memory leaks
test-tool bloom: fix memory leaks
test-tool ref-store: fix a memory leak
test-tool delta: fix a memory leak
Makefile: remove mandatory "spatch" arguments from SPATCH_FLAGS
Makefile & .gitignore: ignore & clean "git.res", not "*.res"
cocci: add a "coccicheck-test" target and test *.cocci rules
cocci: have "coccicheck{,-pending}" depend on "coccicheck-test"
cocci: add and apply a rule to find "unused" strbufs
cocci: generalize "unused" rule to cover more than "strbuf"
trace2: only include "fsync" events if we git_fsync()
test-lib: use $1, not $@ in test_known_broken_{ok,failure}_
test-lib: don't set GIT_EXIT_OK before calling test_atexit_handler
test-lib: fix GIT_EXIT_OK logic errors, use BAIL_OUT
test-lib: add a --invert-exit-code switch
t/README: reword the "GIT_TEST_PASSING_SANITIZE_LEAK" description
test-lib: add a SANITIZE=leak logging mode
t/Makefile: don't remove test-results in "clean-except-prove-cache"
tests: move copy/pasted PERL + Test::More checks to a lib-perl.sh
test-lib: simplify by removing test_external
test-lib: add a GIT_TEST_PASSING_SANITIZE_LEAK=check mode
test-lib: have the "check" mode for SANITIZE=leak consider leak logs
leak tests: don't skip some tests under SANITIZE=leak
leak tests: mark passing SANITIZE=leak tests as leak-free
upload-pack: fix a memory leak in create_pack_file()
CI: use "GIT_TEST_SANITIZE_LEAK_LOG=true" in linux-leaks
bisect.c: add missing "goto" for release_revisions()
test-fast-rebase helper: use release_revisions() (again)
log: fix a memory leak in "git show <revision>..."
log: refactor "rev.pending" code in cmd_show()
bisect.c: partially fix bisect_rev_setup() memory leak
revisions API: don't leak memory on argv elements that need free()-ing
help.c: refactor drop_prefix() to use a "switch" statement"
help.c: remove common category behavior from drop_prefix() behavior
git help doc: use "<doc>" instead of "<guide>"
git docs: add a category for user-facing file, repo and command UX
git docs: add a category for file formats, protocols and interfaces
docs: move commit-graph format docs to man section 5
docs: move protocol-related docs to man section 5
docs: move index format docs to man section 5
docs: move signature docs to man section 5
docs: move pack format docs to man section 5
docs: move cruft pack docs to gitformat-pack
docs: move http-protocol docs to man section 5
hook API: don't segfault on strbuf_addf() to NULL "out"
Makefile + hash.h: remove PPC_SHA1 implementation
Makefile: use $(OBJECTS) instead of $(C_OBJ)
git-compat-util.h: use "UNUSED", not "UNUSED(var)"
git-compat-util.h: use "deprecated" for UNUSED variables
submodule tests: test usage behavior
submodule tests: test for "add <repository> <abs-path>"
submodule--helper: remove unused "name" helper
submodule--helper: remove unused "list" helper
test-tool submodule-config: remove unused "--url" handling
submodule--helper: move "is-active" to a test-tool
submodule--helper: move "check-name" to a test-tool
submodule--helper: move "resolve-relative-url-test" to a test-tool
submodule--helper style: don't separate declared variables with \n\n
submodule--helper style: add \n\n after variable declarations
submodule--helper: replace memset() with { 0 }-initialization
submodule--helper: use xstrfmt() in clone_submodule()
submodule--helper: move "sb" in clone_submodule() to its own scope
submodule--helper: add "const" to passed "module_clone_data"
submodule--helper: add "const" to passed "struct update_data"
submodule--helper: don't redundantly check "else if (res)"
submodule--helper: rename "int res" to "int ret"
submodule--helper: return "ret", not "1" from update_submodule()
submodule--helper: add missing braces to "else" arm
submodule--helper: don't call submodule_strategy_to_string() in BUG()
submodule API: don't handle SM_..{UNSPECIFIED,COMMAND} in to_string()
submodule--helper: use "code" in run_update_command()
submodule--helper: don't exit() on failure, return
submodule--helper: libify determine_submodule_update_strategy()
submodule--helper: libify "must_die_on_failure" code paths
submodule--helper update: don't override 'checkout' exit code
submodule--helper: libify "must_die_on_failure" code paths (for die)
submodule--helper: check repo{_submodule,}_init() return values
submodule--helper: libify more "die" paths for module_update()
submodule--helper: libify even more "die" paths for module_update()
submodule--helper: fix bad config API usage
submodule--helper: fix a leak in "clone_submodule"
submodule--helper: fix trivial get_default_remote_submodule() leak
submodule--helper: fix most "struct pathspec" memory leaks
submodule--helper: "struct pathspec" memory leak in module_update()
submodule--helper: don't leak {run,capture}_command() cp.dir argument
submodule--helper: add and use *_release() functions
submodule--helper: fix "errmsg_str" memory leak
submodule--helper: fix "sm_path" and other "module_cb_list" leaks
submodule--helper: fix a leak with repo_clear()
submodule--helper: fix a memory leak in get_default_remote_submodule()
submodule--helper: fix "reference" leak
submodule--helper: fix obscure leak in module_add()
submodule--helper: fix a leak in module_add()
submodule--helper: fix a memory leak in print_status()
submodule--helper: free some "displaypath" in "struct update_data"
submodule--helper: free rest of "displaypath" in "struct update_data"
submodule--helper: fix a configure_added_submodule() leak
docs: add and use include template for config/* includes
grep docs: de-duplicate configuration sections
send-email docs: de-duplicate configuration sections
apply docs: de-duplicate configuration sections
notes docs: de-duplicate and combine configuration sections
difftool docs: de-duplicate configuration sections
log docs: de-duplicate configuration sections
docs: add CONFIGURATION sections that map to a built-in
docs: add CONFIGURATION sections that fuzzy map to built-ins
Øystein Walle (1):
rev-parse --parseopt: detect missing opt-spec
^ permalink raw reply [relevance 3%]
* [ANNOUNCE] Git v2.38.0-rc2
@ 2022-09-27 21:10 3% Junio C Hamano
0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2022-09-27 21:10 UTC (permalink / raw)
To: git; +Cc: git-packagers
A release candidate Git v2.38.0-rc2 is now available for testing at
the usual places. It is comprised of 673 non-merge commits since
v2.37.0, contributed by 81 people, 23 of which are new faces [*].
The manpage generation problem in -rc1 has been corrected. Other
than that, there aren't that many changes since -rc1.
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.38.0-rc2' tag and the 'master' branch that the tag points at:
url = https://git.kernel.org/pub/scm/git/git
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.37.0 are as follows.
Welcome to the Git development community!
Andrew Olsen, Anthony Delannoy, Carlos López, Celeste Liu,
Cleber Rosa, David Plumpton, Elijah Conners, Eric DeCosta, Goss
Geppert, Ilya K, Ingy dot Net, Jacob Stopak, Julien Rouhaud,
Kilian Kilger, Lana Deere, Manuel Boni, Matthew Klein, Miaoqian
Lin, Moritz Baumann, Pavel Rappo, Pierre Garnier, Richard Oliver,
and Xavier Morel.
Returning contributors who helped this release are as follows.
Thanks for your continued support.
Abhradeep Chakraborty, Adam Dinwoodie, Ævar Arnfjörð
Bjarmason, Alex Henrie, Arthur Milchior, brian m. carlson,
Calvin Wan, Carlo Marcelo Arenas Belón, Christian Couder,
Christoph Reiter, Derrick Stolee, Dimitriy Ryazantcev, Đoàn
Trần Công Danh, Elijah Newren, Emily Shaffer, Eric Sunshine,
Fangyi Zhou, Felipe Contreras, Fernando Ramos, Glen Choo,
Han Xin, Hariom Verma, Jacob Keller, Jaydeep Das, Jeff King,
Jiang Xin, Joey Hess, Johannes Schindelin, John Cai, Jonathan
Tan, Josh Steadmon, Junio C Hamano, Justin Donnelly, Kyle Zhao,
Lessley Dennington, Li Linchao, Linus Torvalds, Martin Ågren,
Matheus Tavares, Matthew John Cheetham, Michael J Gruber,
Øystein Walle, Philip Oakley, Philippe Blain, Phillip Wood,
Randall S. Becker, Renato Botelho, René Scharfe, Shaoxuan Yuan,
Siddharth Asthana, SZEDER Gábor, Tao Klerks, Taylor Blau,
Teng Long, Todd Zullinger, Torsten Bögershausen, Victoria Dye,
and ZheNing Hu.
[*] We are counting not just the authorship contribution but issue
reporting, mentoring, helping and reviewing that are recorded in
the commit trailers.
----------------------------------------------------------------
Git v2.38 Release Notes (draft)
===============================
UI, Workflows & Features
* "git remote show [-n] frotz" now pays attention to negative
pathspec.
* "git push" sometimes performs poorly when reachability bitmaps are
used, even in a repository where other operations are helped by
bitmaps. The push.useBitmaps configuration variable is introduced
to allow disabling use of reachability bitmaps only for "git push".
* "git grep -m<max-hits>" is a way to limit the hits shown per file.
* "git merge-tree" learned a new mode where it takes two commits and
computes a tree that would result in the merge commit, if the
histories leading to these two commits were to be merged.
* "git mv A B" in a sparsely populated working tree can be asked to
move a path between directories that are "in cone" (i.e. expected
to be materialized in the working tree) and "out of cone"
(i.e. expected to be hidden). The handling of such cases has been
improved.
* Earlier, HTTP transport clients learned to tell the server side
what locale they are in by sending Accept-Language HTTP header, but
this was done only for some requests but not others.
* Introduce a safe.barerepository configuration variable that
allows users to forbid discovery of bare repositories.
* Various messages that come from the pack-bitmap codepaths have been
tweaked.
* "git rebase -i" learns to update branches whose tip appear in the
rebased range with "--update-refs" option.
* "git ls-files" learns the "--format" option to tweak its output.
* "git cat-file" learned an option to use the mailmap when showing
commit and tag objects.
* When "git merge" finds that it cannot perform a merge, it should
restore the working tree to the state before the command was
initiated, but in some corner cases it didn't.
* Operating modes like "--batch" of "git cat-file" command learned to
take NUL-terminated input, instead of one-item-per-line.
* "git rm" has become more aware of the sparse-index feature.
* "git rev-list --disk-usage" learned to take an optional value
"human" to show the reported value in human-readable format, like
"3.40MiB".
* The "diagnose" feature to create a zip archive for diagnostic
material has been lifted from "scalar" and made into a feature of
"git bugreport".
* The namespaces used by "log --decorate" from "refs/" hierarchy by
default has been tightened.
* "git rev-list --ancestry-path=C A..B" is a natural extension of
"git rev-list A..B"; instead of choosing a subset of A..B to those
that have ancestry relationship with A, it lets a subset with
ancestry relationship with C.
* "scalar" now enables built-in fsmonitor on enlisted repositories,
when able.
* The bash prompt (in contrib/) learned to optionally indicate when
the index is unmerged.
* "git clone" command learned the "--bundle-uri" option to coordinate
with hosting sites the use of pre-prepared bundle files.
* "git range-diff" learned to honor pathspec argument if given.
* "git format-patch --from=<ident>" can be told to add an in-body
"From:" line even for commits that are authored by the given
<ident> with "--force-in-body-from" option.
* The built-in fsmonitor refuses to work on a network mounted
repositories; a configuration knob for users to override this has
been introduced.
* The "scalar" addition from Microsoft is now part of the core Git
installation.
Performance, Internal Implementation, Development Support etc.
* Collection of what is referenced by objects in promisor packs have
been optimized to inspect these objects in the in-pack order.
* Introduce a helper to see if a branch is already being worked on
(hence should not be newly checked out in a working tree), which
performs much better than the existing find_shared_symref() to
replace many uses of the latter.
* Teach "git archive" to (optionally and then by default) avoid
spawning an external "gzip" process when creating ".tar.gz" (and
".tgz") archives.
* Allow large objects read from a packstream to be streamed into a
loose object file straight, without having to keep it in-core as a
whole.
* Further preparation to turn git-submodule.sh into a builtin
continues.
* Apply Coccinelle rule to turn raw memmove() into MOVE_ARRAY() cpp
macro, which would improve maintainability and readability.
* Teach "make all" to build gitweb as well.
* Tweak tests so that they still work when the "git init" template
did not create .git/info directory.
* Add Coccinelle rules to detect the pattern of initializing and then
finalizing a structure without using it in between at all, which
happens after code restructuring and the compilers fail to
recognize as an unused variable.
* The code to convert between GPG trust level strings and internal
constants we use to represent them have been cleaned up.
* Support for libnettle as SHA256 implementation has been added.
* The way "git multi-pack" uses parse-options API has been improved.
* A Coccinelle rule (in contrib/) to encourage use of COPY_ARRAY
macro has been improved.
* API tweak to make it easier to run fuzz testing on commit-graph parser.
* Omit fsync-related trace2 entries when their values are all zero.
* The codepath to write multi-pack index has been taught to release a
large chunk of memory that holds an array of objects in the packs,
as soon as it is done with the array, to reduce memory consumption.
* Add a level of redirection to array allocation API in xdiff part,
to make it easier to share with the libgit2 project.
* "git fetch" client logs the partial clone filter used in the trace2
output.
* The "bundle URI" design gets documented.
* The common ancestor negotiation exchange during a "git fetch"
session now leaves trace log.
* Test portability improvements.
(merge 4d1d843be7 mt/rot13-in-c later to maint).
* The "subcommand" mode is introduced to parse-options API and update
the command line parser of Git commands with subcommands.
* The pack bitmap file gained a bitmap-lookup table to speed up
locating the necessary bitmap for a given commit.
* The assembly version of SHA-1 implementation for PPC has been
removed.
* The server side that responds to "git fetch" and "git clone"
request has been optimized by allowing it to send objects in its
object store without recomputing and validating the object names.
* Annotate function parameters that are not used (but cannot be
removed for structural reasons), to prepare us to later compile
with -Wunused warning turned on.
* Share the text used to explain configuration variables used by "git
<subcmd>" in "git help <subcmd>" with the text from "git help config".
* "git mv A B" in a sparsely populated working tree can be asked to
move a path from a directory that is "in cone" to another directory
that is "out of cone". Handling of such a case has been improved.
* The chainlint script for our tests has been revamped.
Fixes since v2.37
-----------------
* Rewrite of "git add -i" in C that appeared in Git 2.25 didn't
correctly record a removed file to the index, which was fixed.
* Certain diff options are currently ignored when combined-diff is
shown; mark them as incompatible with the feature.
* Adjust technical/bitmap-format to be formatted by AsciiDoc, and
add some missing information to the documentation.
* Fixes for tests when the source directory has unusual characters in
its path, e.g. whitespaces, double-quotes, etc.
* "git mktree --missing" lazily fetched objects that are missing from
the local object store, which was totally unnecessary for the purpose
of creating the tree object(s) from its input.
* Give _() markings to fatal/warning/usage: labels that are shown in
front of these messages.
* References to commands-to-be-typed-literally in "git rebase"
documentation mark-up have been corrected.
* In a non-bare repository, the behavior of Git when the
core.worktree configuration variable points at a directory that has
a repository as its subdirectory, regressed in Git 2.27 days.
* Recent update to vimdiff layout code has been made more robust
against different end-user vim settings.
* Plug various memory leaks, both in the main code and in test-tool
commands.
* Fixes a long-standing corner case bug around directory renames in
the merge-ort strategy.
* The resolve-undo information in the index was not protected against
GC, which has been corrected.
* A corner case bug where lazily fetching objects from a promisor
remote resulted in infinite recursion has been corrected.
* "git clone" from a repository with some ref whose HEAD is unborn
did not set the HEAD in the resulting repository correctly, which
has been corrected.
* An earlier attempt to plug leaks placed a clean-up label to jump to
at a bogus place, which as been corrected.
* Variable quoting fix in the vimdiff driver of "git mergetool"
* "git shortlog -n" relied on the underlying qsort() to be stable,
which shouldn't have. Fixed.
* A fix for a regression in test framework.
* mkstemp() emulation on Windows has been improved.
* Add missing documentation for "include" and "includeIf" features in
"git config" file format, which incidentally teaches the command
line completion to include them in its offerings.
* Avoid "white/black-list" in documentation and code comments.
* Workaround for a compiler warning against use of die() in
osx-keychain (in contrib/).
* Workaround for a false positive compiler warning.
* "git p4" working on UTF-16 files on Windows did not implement
CRLF-to-LF conversion correctly, which has been corrected.
* "git p4" did not handle non-ASCII client name well, which has been
corrected.
* "rerere-train" script (in contrib/) used to honor commit.gpgSign
while recreating the throw-away merges.
* "git checkout" miscounted the paths it updated, which has been
corrected.
* Fix for a bug that makes write-tree to fail to write out a
non-existent index as a tree, introduced in 2.37.
* There was a bug in the codepath to upgrade generation information
in commit-graph from v1 to v2 format, which has been corrected.
* Gitweb had legacy URL shortener that is specific to the way
projects hosted on kernel.org used to (but no longer) work, which
has been removed.
* Fix build procedure for Windows that uses CMake so that it can pick
up the shell interpreter from local installation location.
* Conditionally allow building Python interpreter on Windows
* Fix to lstat() emulation on Windows.
* Older gcc with -Wall complains about the universal zero initializer
"struct s = { 0 };" idiom, which makes developers' lives
inconvenient (as -Werror is enabled by DEVELOPER=YesPlease). The
build procedure has been tweaked to help these compilers.
* Plug memory leaks in the failure code path in the "merge-ort" merge
strategy backend.
* "git symbolic-ref symref non..sen..se" is now diagnosed as an error.
* A follow-up fix to a fix for a regression in 2.36 around hooks.
* Avoid repeatedly running getconf to ask libc version in the test
suite, and instead just as it once per script.
* Platform-specific code that determines if a directory is OK to use
as a repository has been taught to report more details, especially
on Windows.
* "vimdiff3" regression fix.
* "git fsck" reads mode from tree objects but canonicalizes the mode
before passing it to the logic to check object sanity, which has
hid broken tree objects from the checking logic. This has been
corrected, but to help existing projects with broken tree objects
that they cannot fix retroactively, the severity of anomalies this
code detects has been demoted to "info" for now.
* Fixes to sparse index compatibility work for "reset" and "checkout"
commands.
* An earlier optimization discarded a tree-object buffer that is
still in use, which has been corrected.
* Fix deadlocks between main Git process and subprocess spawned via
the pipe_command() API, that can kill "git add -p" that was
reimplemented in C recently.
* The sequencer machinery translated messages left in the reflog by
mistake, which has been corrected.
* xcalloc(), imitating calloc(), takes "number of elements of the
array", and "size of a single element", in this order. A call that
does not follow this ordering has been corrected.
* The preload-index codepath made copies of pathspec to give to
multiple threads, which were left leaked.
* Update the version of Ubuntu used for GitHub Actions CI from 18.04
to 22.04.
* The auto-stashed local changes created by "git merge --autostash"
was mixed into a conflicted state left in the working tree, which
has been corrected.
* Multi-pack index got corrupted when preferred pack changed from one
pack to another in a certain way, which has been corrected.
(merge 99e4d084ff tb/midx-with-changing-preferred-pack-fix later to maint).
* The clean-up of temporary files created via mks_tempfile_dt() was
racy and attempted to unlink() the leading directory when signals
are involved, which has been corrected.
(merge babe2e0559 rs/tempfile-cleanup-race-fix later to maint).
* FreeBSD portability fix for "git maintenance" that spawns "crontab"
to schedule tasks.
(merge ee69e7884e bc/gc-crontab-fix later to maint).
* Those who use diff-so-fancy as the diff-filter noticed a regression
or two in the code that parses the diff output in the built-in
version of "add -p", which has been corrected.
(merge 0a101676e5 js/add-p-diff-parsing-fix later to maint).
* Segfault fix-up to an earlier fix to the topic to teach "git reset"
and "git checkout" work better in a sparse checkout.
(merge 037f8ea6d9 vd/sparse-reset-checkout-fixes later to maint).
* "git diff --no-index A B" managed its the pathnames of its two
input files rather haphazardly, sometimes leaking them. The
command line argument processing has been straightened out to clean
it up.
(merge 2b43dd0eb5 rs/diff-no-index-cleanup later to maint).
* "git rev-list --verify-objects" ought to inspect the contents of
objects and notice corrupted ones, but it didn't when the commit
graph is in use, which has been corrected.
(merge b27ccae34b jk/rev-list-verify-objects-fix later to maint).
* More fixes to "add -p"
(merge 64ec8efb83 js/builtin-add-p-portability-fix later to maint).
* The parser in the script interface to parse-options in "git
rev-parse" has been updated to diagnose a bogus input correctly.
(merge f20b9c36d0 ow/rev-parse-parseopt-fix later to maint).
* The code that manages list-object-filter structure, used in partial
clones, leaked the instances, which has been plugged.
(merge 66eede4a37 jk/plug-list-object-filter-leaks later to maint).
* Fix another UI regression in the reimplemented "add -p".
(merge f6f0ee247f rs/add-p-worktree-mode-prompt-fix later to maint).
* "git fetch" over protocol v2 sent an incorrect ref prefix request
to the server and made "git pull" with configured fetch refspec
that does not cover the remote branch to merge with fail, which has
been corrected.
(merge 49ca2fba39 jk/proto-v2-ref-prefix-fix later to maint).
* A result from opendir() was leaking in the commit-graph expiration
codepath, which has been plugged.
(merge 12f1ae5324 ml/commit-graph-expire-dir-leak-fix later to maint).
* Just like we have coding guidelines, we now have guidelines for
reviewers.
(merge e01b851923 vd/doc-reviewing-guidelines later to maint).
* Other code cleanup, docfix, build fix, etc.
(merge 77b9e85c0f vd/fix-perf-tests later to maint).
(merge 0682bc43f5 jk/test-crontab-fixes later to maint).
(merge b46dd1726c cc/doc-trailer-whitespace-rules later to maint).
----------------------------------------------------------------
Changes since v2.37.0 are as follows:
Abhradeep Chakraborty (9):
bitmap-format.txt: feed the file to asciidoc to generate html
bitmap-format.txt: fix some formatting issues
bitmap-format.txt: add information for trailing checksum
Documentation/technical: describe bitmap lookup table extension
bitmap: move `get commit positions` code to `bitmap_writer_finish`
pack-bitmap-write.c: write lookup table extension
pack-bitmap-write: learn pack.writeBitmapLookupTable and add tests
pack-bitmap: prepare to read lookup table extension
bitmap-lookup-table: add performance tests for lookup table
Adam Dinwoodie (1):
t1800: correct test to handle Cygwin
Alex Henrie (3):
gc: don't translate literal commands
builtin/diagnose.c: don't translate the two mode values
pack-bitmap: improve grammar of "xor chain" error message
Anthony Delannoy (1):
preload-index: fix memleak
Calvin Wan (1):
submodule merge: update conflict error message
Carlo Marcelo Arenas Belón (2):
setup: tighten ownership checks post CVE-2022-24765
cmake: support local installations of git
Carlos López (1):
grep: add --max-count command line option
Celeste Liu (1):
contrib/rerere-train: avoid useless gpg sign in training
Christian Couder (1):
Documentation: clarify whitespace rules for trailers
Cleber Rosa (1):
setup: fix function name in a BUG() message
Derrick Stolee (51):
branch: add branch_checked_out() helper
branch: check for bisects and rebases
fetch: use new branch_checked_out() and add tests
branch: use branch_checked_out() when deleting refs
branch: fix branch_checked_out() leaks
t5510: replace 'origin' with URL more carefully
vscode: improve tab size and wrapping
git-rebase.txt: use back-ticks consistently
pack-bitmap-write: use const for hashes
midx: extract bitmap write setup
midx: reduce memory pressure while writing bitmaps
daemon: clarify directory arguments
git-cvsserver: clarify directory list
git.txt: remove redundant language
t: avoid "whitelist"
transport.c: avoid "whitelist"
t2407: test bisect and rebase as black-boxes
t2407: test branches currently using apply backend
branch: consider refs under 'update-refs'
rebase-interactive: update 'merge' description
sequencer: define array with enum values
sequencer: add update-ref command
rebase: add --update-refs option
rebase: update refs from 'update-ref' commands
sequencer: rewrite update-refs as user edits todo list
rebase: add rebase.updateRefs config option
sequencer: ignore HEAD ref under --update-refs
sequencer: notify user of --update-refs activity
compat/win32: correct for incorrect compiler warning
refs: allow "HEAD" as decoration filter
t4207: modernize test
t4207: test coloring of grafted decorations
refs: add array of ref namespaces
refs: use ref_namespaces for replace refs base
log-tree: use ref_namespaces instead of if/else-if
log: add default decoration filter
log: add --clear-decorations option
log: create log.initialDecorationSet=all
maintenance: stop writing log.excludeDecoration
fetch: use ref_namespaces during prefetch
docs: document bundle URI standard
bundle-uri: add example bundle organization
remote-curl: add 'get' capability
bundle-uri: create basic file-copy logic
clone: add --bundle-uri option
bundle-uri: add support for http(s):// and file://
clone: --bundle-uri cannot be combined with --depth
t6019: modernize tests with helper
clone: warn on failure to repo_init()
ci: update 'static-analysis' to Ubuntu 22.04
pack-bitmap: remove trace2 region from hot path
Dimitriy Ryazantcev (1):
i18n: mark message helpers prefix for translation
Elijah Conners (1):
reftable: use a pointer for pq_entry param
Elijah Newren (43):
merge-tree: rename merge_trees() to trivial_merge_trees()
merge-tree: move logic for existing merge into new function
merge-tree: add option parsing and initial shell for real merge function
merge-tree: implement real merges
merge-ort: split out a separate display_update_messages() function
merge-tree: support including merge messages in output
merge-ort: provide a merge_get_conflicted_files() helper function
merge-ort: remove command-line-centric submodule message from merge-ort
merge-tree: provide a list of which files have conflicts
merge-tree: provide easy access to `ls-files -u` style info
merge-ort: store more specific conflict information
merge-ort: optionally produce machine-readable output
merge-tree: allow `ls-files -u` style info to be NUL terminated
merge-tree: add a --allow-unrelated-histories flag
git-merge-tree.txt: add a section on potentional usage mistakes
t6429: fix use of non-existent function
t6423: add tests of dual directory rename plus add/add conflict
merge-ort: small cleanups of check_for_directory_rename
merge-ort: make a separate function for freeing struct collisions
merge-ort: shuffle the computation and cleanup of potential collisions
merge-ort: fix issue with dual rename and add/add conflict
merge-ort-wrappers: make printed message match the one from recursive
merge-resolve: abort if index does not match HEAD
merge: abort if index does not match HEAD for trivial merges
merge: do not abort early if one strategy fails to handle the merge
merge: fix save_state() to work when there are stat-dirty files
merge: make restore_state() restore staged state too
merge: ensure we can actually restore pre-merge state
merge: do not exit restore_state() prematurely
merge-ort: remove translator lego in new "submodule conflict suggestion"
merge-ort: avoid surprise with new sub_flag variable
merge-ort: provide helpful submodule update message when possible
merge-ort: remove code obsoleted by other changes
rev-list-options.txt: fix simple typo
revision: allow --ancestry-path to take an argument
merge: only apply autostash when appropriate
merge: cleanup confusing logic for handling successful merges
merge: small code readability improvement
t4301: add more interesting merge-tree testcases
t64xx: convert 'test_create_repo' to 'git init'
diff: have submodule_format logic avoid additional diff headers
diff: fix filtering of additional headers under --remerge-diff
diff: fix filtering of merge commits under --remerge-diff
Eric DeCosta (1):
fsmonitor: option to allow fsmonitor to run against network-mounted repos
Eric Sunshine (25):
t2407: fix broken &&-chains in compound statement
t1092: fix buggy sparse "blame" test
t: detect and signal failure within loop
t4301: account for behavior differences between sed implementations
t4301: fix broken &&-chains and add missing loop termination
t4301: emit blank line in more idiomatic fashion
t: add skeleton chainlint.pl
chainlint.pl: add POSIX shell lexical analyzer
chainlint.pl: add POSIX shell parser
chainlint.pl: add parser to validate tests
chainlint.pl: add parser to identify test definitions
chainlint.pl: validate test scripts in parallel
chainlint.pl: don't require `return|exit|continue` to end with `&&`
t/Makefile: apply chainlint.pl to existing self-tests
chainlint.pl: don't require `&` background command to end with `&&`
chainlint.pl: don't flag broken &&-chain if `$?` handled explicitly
chainlint.pl: don't flag broken &&-chain if failure indicated explicitly
chainlint.pl: complain about loops lacking explicit failure handling
chainlint.pl: allow `|| echo` to signal failure upstream of a pipe
t/chainlint: add more chainlint.pl self-tests
test-lib: retire "lint harder" optimization hack
test-lib: replace chainlint.sed with chainlint.pl
t/Makefile: teach `make test` and `make prove` to run chainlint.pl
t: retire unused chainlint.sed
chainlint: colorize problem annotations and test delimiters
Fangyi Zhou (1):
help: fix doubled words in explanation for developer interfaces
Felipe Contreras (7):
mergetools: vimdiff: fix comment
mergetools: vimdiff: make vimdiff3 actually work
mergetools: vimdiff: silence annoying messages
mergetools: vimdiff: fix for diffopt
mergetools: vimdiff: rework tab logic
mergetools: vimdiff: fix single window layouts
mergetools: vimdiff: simplify tabfirst
Fernando Ramos (1):
vimdiff: make layout engine more robust against user vim settings
Glen Choo (16):
submodule--helper: eliminate internal "--update" option
submodule--helper tests: add missing "display path" coverage
submodule--helper update: use display path helper
submodule--helper: don't recreate recursive prefix
submodule--helper: use correct display path helper
submodule--helper update: use --super-prefix
submodule--helper: remove display path helper
Documentation/git-config.txt: add SCOPES section
Documentation: define protected configuration
config: learn `git_protected_config()`
safe.directory: use git_protected_config()
setup.c: create `safe.bareRepository`
config.c: NULL check when reading protected config
Documentation/git-reflog: remove unneeded \ from \{
submodule--helper: add "const" to copy of "update_data"
submodule--helper: refactor "errmsg_str" to be a "struct strbuf"
Goss Geppert (2):
dir: traverse into repository
dir: minor refactoring / clean-up
Han Xin (6):
unpack-objects: low memory footprint for get_data() in dry_run mode
object-file.c: refactor write_loose_object() to several steps
object-file.c: add "stream_loose_object()" to handle large object
unpack-objects: use stream_loose_object() to unpack large objects
commit-graph.c: no lazy fetch in lookup_commit_in_graph()
t5330: remove run_with_limited_processses()
Jacob Keller (1):
remote: handle negative refspecs in git remote show
Jacob Stopak (3):
Documentation: fix various repeat word typos
Documentation: clean up a few misspelled word typos
Documentation: clean up various typos in technical docs
Jaydeep Das (1):
gpg-interface: add function for converting trust level to string
Jeff King (64):
is_promisor_object(): walk promisor packs in pack-order
fetch: stop passing around unused worktrees variable
branch: drop unused worktrees variable
revisions.txt: escape "..." to avoid asciidoc horizontal ellipsis
clone: drop extra newline from warning message
clone: propagate empty remote HEAD even with other branches
clone: use remote branch if it matches default HEAD
clone: move unborn head creation to update_head()
ref-filter: disable save_commit_buffer while traversing
diff-files: move misplaced cleanup label
write_midx_bitmap(): drop unused refs_snapshot parameter
config.mak.dev: squelch -Wno-missing-braces for older gcc
tree-walk: add a mechanism for getting non-canonicalized modes
fsck: actually detect bad file modes in trees
fsck: downgrade tree badFilemode to "info"
is_promisor_object(): fix use-after-free of tree buffer
compat: add function to enable nonblocking pipes
git-compat-util: make MAX_IO_SIZE define globally available
pipe_command(): avoid xwrite() for writing to pipe
pipe_command(): handle ENOSPC when writing to a pipe
pipe_command(): mark stdin descriptor as non-blocking
git-compat-util: add UNUSED macro
refs: mark unused each_ref_fn parameters
refs: mark unused reflog callback parameters
refs: mark unused virtual method parameters
transport: mark bundle transport_options as unused
streaming: mark unused virtual method parameters
config: mark unused callback parameters
hashmap: mark unused callback parameters
mark unused read_tree_recursive() callback parameters
run-command: mark unused async callback parameters
is_path_owned_by_current_uid(): mark "report" parameter as unused
xdiff: drop unused mmfile parameters from xdl_do_histogram_diff()
log-tree: drop unused commit param in remerge_diff()
match_pathname(): drop unused "flags" parameter
verify_one_sparse(): drop unused parameters
reftable: drop unused parameter from reader_seek_linear()
reflog: assert PARSE_OPT_NONEG in parse-options callbacks
xdiff: drop unused mmfile parameters from xdl_do_patience_diff()
pass subcommand "prefix" arguments to parse_options()
maintenance: add parse-options boilerplate for subcommands
remote: run "remote rm" argv through parse_options()
pack-bitmap-write: drop unused pack_idx_entry parameters
tempfile: drop active flag
tempfile: update comment describing state transitions
test-crontab: minor memory and error handling fixes
lookup_commit_in_graph(): use prepare_commit_graph() to check for graph
rev-list: disable commit graph with --verify-objects
parse_object(): allow skipping hash check
upload-pack: skip parse-object re-hashing of "want" objects
parse_object(): check commit-graph when skip_hash set
t1060: check partial clone of misnamed blob
list_objects_filter_copy(): deep-copy sparse_oid_name field
transport: deep-copy object-filter struct for fetch-pack
transport: free filter options in disconnect_git()
list_objects_filter_options: plug leak of filter_spec strings
prepare_repo_settings(): plug leak of config values
fetch: stop checking for NULL transport->remote in do_fetch()
fetch: add branch.*.merge to default ref-prefix extension
list-objects-filter: don't memset after releasing filter struct
list-objects-filter: handle null default filter spec
list-objects-filter: add and use initializers
list-objects-filter: convert filter_spec to a strbuf
list-objects-filter: initialize sub-filter structs
Johannes Schindelin (38):
merge-ort: store messages in a list, not in a single strbuf
merge-ort: make `path_messages` a strmap to a string_list
Git 2.30.5
Git 2.31.4
Git 2.32.3
Git 2.33.4
Git 2.34.4
Git 2.35.4
Git 2.36.2
add --interactive: allow `update` to stage deleted files
tests: fix incorrect --write-junit-xml code
mergetool(vimdiff): allow paths to contain spaces again
shortlog: use a stable sort
t5351: avoid relying on `core.fsyncMethod = batch` to be supported
t5351: avoid using `test_cmp` for binary data
windows: include the Python bits when building Git for Windows
mingw: remove unneeded `NO_GETTEXT` directive
mingw: remove unneeded `NO_CURL` directive
lstat(mingw): correctly detect ENOTDIR scenarios
merge-ort: clean up after failed merge
merge-ort: do leave trace2 region even if checkout fails
setup: fix some formatting
setup: prepare for more detailed "dubious ownership" messages
mingw: provide details about unsafe directories' ownership
mingw: be more informative when ownership check fails on FAT32
mingw: handle a file owned by the Administrators group correctly
scalar unregister: stop FSMonitor daemon
range-diff: reorder argument handling
range-diff: consistently validate the arguments
range-diff: optionally accept pathspecs
add -p: avoid ambiguous signed/unsigned comparison
t3701: test the built-in `add -i` regardless of NO_PERL
t6132(NO_PERL): do not run the scripted `add -p`
add -p: detect more mismatches between plain vs colored diffs
add -p: gracefully handle unparseable hunk headers in colored diffs
add -p: ignore dirty submodules
git help: special-case `scalar`
scalar: implement the `help` subcommand
Jonathan Tan (1):
fetch-pack: write effective filter to trace2
Josh Steadmon (1):
fetch-pack: add tracing for negotiation rounds
Julien Rouhaud (1):
gitweb: remove title shortening heuristics
Junio C Hamano (44):
revision: mark blobs needed for resolve-undo as reachable
A regression fix for 2.37
Git 2.37.1
builtin/mv.c: use the MOVE_ARRAY() macro instead of memmove()
The first batch after Git 2.37
fsck: do not dereference NULL while checking resolve-undo data
The second batch
The third batch
The fourth batch
The fifth batch
builtin/remote.c: use the right kind of STRING_LIST_INIT
The sixth batch
The seventh batch
Downmerge a handful of fixes for 2.37.x maintenance track
The eighth batch
The ninth batch
doc: consolidate --rerere-autoupdate description
doc: clarify rerere-autoupdate
Downmerge a bit more for 2.37.x
The tenth batch
The eleventh batch
Git 2.37.2
The twelfth batch
The thirteenth batch
The fourteenth batch
t5329: notice a failure within a loop
The fifteenth batch
A handful more topics from the 'master' front for 2.37.3
pretty: separate out the logic to decide the use of in-body from
format-patch: allow forcing the use of in-body From: header
format-patch: learn format.forceInBodyFrom configuration variable
The sixteenth batch
Git 2.37.3
The seventeenth batch
The eighteenth batch
The nineteenth batch
The twentieth batch
Merge a handful of topics from the 'master' front
Prepare for 2.38-rc0
Git 2.38-rc0
A bit more of remaining topics before -rc1
Final batch before -rc1
Git 2.38-rc1
Git 2.38-rc2
Justin Donnelly (1):
git-prompt: show presence of unresolved conflicts at command prompt
Kilian Kilger (2):
git-p4: fix bug with encoding of p4 client name
git-p4: refactoring of p4CmdList()
Kyle Zhao (1):
send-pack.c: add config push.useBitmaps
Lessley Dennington (1):
osx-keychain: fix compiler warning
Li Linchao (3):
ls-files: update test style
remote-curl: send Accept-Language header to server
rev-list: support human-readable output for `--disk-usage`
Linus Torvalds (1):
symbolic-ref: refuse to set syntactically invalid target
Manuel Boni (1):
config.txt: document include, includeIf
Martin Ågren (4):
config/core.txt: fix minor issues for `core.sparseCheckoutCone`
t4200: drop irrelevant code
read-cache: make `do_read_index()` always set up `istate->repo`
cmd-list.perl: fix identifying man sections
Matheus Tavares (7):
checkout: document bug where delayed checkout counts entries twice
checkout: show bug about failed entries being included in final report
checkout: fix two bugs on the final count of updated entries
pkt-line.h: move comment closer to the associated code
t0021: avoid grepping for a Perl-specific string at filter output
t0021: implementation the rot13-filter.pl script in C
tests: use the new C rot13-filter helper to avoid PERL prereq
Matthew John Cheetham (1):
scalar: enable built-in FSMonitor on `register`
Miaoqian Lin (1):
commit-graph: Fix missing closedir in expire_commit_graphs
Michael J Gruber (3):
sequencer: do not translate reflog messages
sequencer: do not translate parameters to error_resolve_conflict()
sequencer: do not translate command names
Moritz Baumann (3):
git-p4: fix CR LF handling for utf16 files
git-p4: fix typo in P4Submit.applyCommit()
git-p4: fix error handling in P4Unshelve.renameBranch()
Philip Oakley (1):
doc add: renormalize is not idempotent for CRCRLF
Philippe Blain (3):
diff-format.txt: dst can be 0* SHA-1 when path is deleted, too
diff-format.txt: correct misleading wording
diff-index.txt: update raw output format in examples
Phillip Wood (5):
xdiff: introduce XDL_ALLOC_ARRAY()
xdiff: introduce xdl_calloc
xdiff: introduce XDL_CALLOC_ARRAY()
xdiff: introduce XDL_ALLOC_GROW()
tests: cache glibc version check
René Scharfe (28):
archive: update format documentation
archive: rename archiver data field to filter_command
archive-tar: factor out write_block()
archive-tar: add internal gzip implementation
archive-tar: use OS_CODE 3 (Unix) for internal gzip
archive-tar: use internal gzip by default
combine-diff: abort if --ignore-matching-lines is given
combine-diff: abort if --output is given
cocci: avoid normalization rules for memcpy
mingw: avoid mktemp() in mkstemp() implementation
mergesort: unify ranks loops
mergesort: tighten merge loop
mergesort: add macros for typed sort of linked lists
test-mergesort: use DEFINE_LIST_SORT_DEBUG
test-mergesort: use DEFINE_LIST_SORT
blame: use DEFINE_LIST_SORT
commit: use DEFINE_LIST_SORT
fetch-pack: use DEFINE_LIST_SORT
packfile: use DEFINE_LIST_SORT
mergesort: remove llist_mergesort()
nonblock: support Windows
tempfile: avoid directory cleanup race
test-mergesort: read sort input all at once
test-mergesort: use mem_pool for sort input
diff-no-index: release strbuf on queue error
diff-no-index: release prefixed filenames
diff-no-index: simplify argv index calculation
add -p: fix worktree patch mode prompts
Richard Oliver (1):
mktree: do not check type of remote objects
SZEDER Gábor (30):
Makefile: build 'gitweb' in the default target
multi-pack-index: simplify handling of unknown --options
index-format.txt: remove outdated list of supported extensions
git.c: update NO_PARSEOPT markings
t3301-notes.sh: check that default operation mode doesn't take arguments
t5505-remote.sh: check the behavior without a subcommand
t0040-parse-options: test parse_options() with various 'parse_opt_flags'
api-parse-options.txt: fix description of OPT_CMDMODE
parse-options: PARSE_OPT_KEEP_UNKNOWN only applies to --options
parse-options: clarify the limitations of PARSE_OPT_NODASH
parse-options: drop leading space from '--git-completion-helper' output
parse-options: add support for parsing subcommands
builtin/bundle.c: let parse-options parse subcommands
builtin/commit-graph.c: let parse-options parse subcommands
builtin/gc.c: let parse-options parse 'git maintenance's subcommands
builtin/hook.c: let parse-options parse subcommands
builtin/multi-pack-index.c: let parse-options parse subcommands
builtin/notes.c: let parse-options parse subcommands
builtin/reflog.c: let parse-options parse subcommands
builtin/remote.c: let parse-options parse subcommands
builtin/sparse-checkout.c: let parse-options parse subcommands
builtin/stash.c: let parse-options parse subcommands
builtin/worktree.c: let parse-options parse subcommands
promisor-remote: fix xcalloc() argument order
t0040-parse-options: remove leftover debugging
test-parse-options.c: don't use for loop initial declaration
test-parse-options.c: fix style of comparison with zero
notes: simplify default operation mode arguments check
notes, remote: show unknown subcommands between `'
t/Makefile: remove 'test-results' on 'make clean'
Shaoxuan Yuan (22):
t7002: add tests for moving out-of-cone file/directory
t1092: mv directory from out-of-cone to in-cone
mv: update sparsity after moving from out-of-cone to in-cone
mv: decouple if/else-if checks using goto
mv: check if out-of-cone file exists in index with SKIP_WORKTREE bit
mv: check if <destination> exists in index to handle overwriting
mv: use flags mode for update_mode
mv: add check_dir_in_index() and solve general dir check issue
t1092: add tests for `git-rm`
pathspec.h: move pathspec_needs_expanded_index() from reset.c to here
rm: expand the index only when necessary
rm: integrate with sparse-index
t7002: add tests for moving from in-cone to out-of-cone
mv: rename check_dir_in_index() to empty_dir_has_sparse_contents()
mv: free the with_slash in check_dir_in_index()
mv: check if <destination> is a SKIP_WORKTREE_DIR
mv: remove BOTH from enum update_mode
mv: from in-cone to out-of-cone
mv: cleanup empty WORKING_DIRECTORY
advice.h: add advise_on_moving_dirty_path()
mv: check overwrite for in-to-out move
builtin/mv.c: fix possible segfault in add_slash()
Siddharth Asthana (4):
revision: improve commit_rewrite_person()
ident: move commit_rewrite_person() to ident.c
ident: rename commit_rewrite_person() to apply_mailmap_to_header()
cat-file: add mailmap support
Tao Klerks (1):
rev-parse: documentation adjustment - mention remote tracking with @{u}
Taylor Blau (14):
pack-objects.h: remove outdated pahole results
commit-graph: pass repo_settings instead of repository
t5318: demonstrate commit-graph generation v2 corruption
commit-graph: introduce `repo_find_commit_pos_in_graph()`
commit-graph: fix corrupt upgrade from generation v1 to v2
t1006: extract --batch-command inputs to variables
builtin/cat-file.c: support NUL-delimited input with `-z`
t5326: demonstrate potential bitmap corruption
t/lib-bitmap.sh: avoid silencing stderr
midx.c: extract `struct midx_fanout`
midx.c: extract `midx_fanout_add_midx_fanout()`
midx.c: extract `midx_fanout_add_pack_fanout()`
midx.c: include preferred pack correctly with existing MIDX
midx.c: avoid adding preferred objects twice
Teng Long (8):
pack-bitmap.c: fix formatting of error messages
pack-bitmap.c: mark more strings for translations
pack-bitmap.c: rename "idx_name" to "bitmap_name"
pack-bitmap.c: do not ignore error when opening a bitmap file
pack-bitmap.c: using error() instead of silently returning -1
pack-bitmap.c: continue looping when first MIDX bitmap is found
api-trace2.txt: print config key-value pair
tr2: shows scope unconditionally in addition to key-value pair
Todd Zullinger (2):
docs: fix a few recently broken links
api docs: link to html version of api-trace2
Victoria Dye (37):
scalar: reword command documentation to clarify purpose
scalar: convert README.md into a technical design doc
checkout: fix nested sparse directory diff in sparse index
oneway_diff: handle removed sparse directories
cache.h: create 'index_name_pos_sparse()'
unpack-trees: unpack new trees as sparse directories
scalar-diagnose: use "$GIT_UNZIP" in test
scalar-diagnose: avoid 32-bit overflow of size_t
scalar-diagnose: add directory to archiver more gently
scalar-diagnose: move 'get_disk_info()' to 'compat/'
scalar-diagnose: move functionality to common location
diagnose.c: add option to configure archive contents
builtin/diagnose.c: create 'git diagnose' builtin
builtin/diagnose.c: add '--mode' option
builtin/bugreport.c: create '--diagnose' option
scalar-diagnose: use 'git diagnose --mode=all'
scalar: update technical doc roadmap
scalar: constrain enlistment search
scalar-unregister: handle error codes greater than 0
scalar-[un]register: clearly indicate source of error
scalar-delete: do not 'die()' in 'delete_enlistment()'
scalar: move config setting logic into its own function
scalar: update technical doc roadmap with FSMonitor support
p0004: fix prereq declaration
p0006: fix 'read-tree' argument ordering
unpack-trees: fix sparse directory recursion check
scalar: fix command documentation section header
scalar: include in standard Git build & installation
scalar: add to 'git help -a' command list
scalar-clone: add test coverage
t/perf: add Scalar performance tests
t/perf: add 'GIT_PERF_USE_SCALAR' run option
Documentation/technical: include Scalar technical doc
diagnose.c: refactor to safely use 'd_type'
Documentation: add ReviewingGuidelines
diagnose: add to command-list.txt
version: fix builtin linking & documentation
ZheNing Hu (2):
ls-files: introduce "--format" option
ls-files: fix black space in error message
brian m. carlson (2):
sha256: add support for Nettle
gc: use temporary file for editing crontab
Ævar Arnfjörð Bjarmason (153):
t0008: don't rely on default ".git/info/exclude"
tests: don't depend on template-created .git/branches
tests: don't assume a .git/info for .git/info/grafts
tests: don't assume a .git/info for .git/info/attributes
tests: don't assume a .git/info for .git/info/refs
tests: don't assume a .git/info for .git/info/exclude
tests: don't assume a .git/info for .git/info/sparse-checkout
object-file.c: factor out deflate part of write_loose_object()
core doc: modernize core.bigFileThreshold documentation
git-submodule.sh: remove unused sanitize_submodule_env()
git-submodule.sh: remove unused $prefix variable
git-submodule.sh: make the "$cached" variable a boolean
git-submodule.sh: remove unused top-level "--branch" argument
submodule--helper: have --require-init imply --init
submodule update: remove "-v" option
submodule--helper: rename "absorb-git-dirs" to "absorbgitdirs"
submodule--helper: report "submodule" as our name in some "-h" output
submodule--helper: understand --checkout, --merge and --rebase synonyms
git-submodule.sh: use "$quiet", not "$GIT_QUIET"
git-sh-setup.sh: remove "say" function, change last users
gitweb/Makefile: define all .PHONY prerequisites inline
gitweb/Makefile: add a $(GITWEB_ALL) variable
gitweb/Makefile: clear up and de-duplicate the gitweb.{css,js} vars
gitweb/Makefile: prepare to merge into top-level Makefile
gitweb: remove "test" and "test-installed" targets
gitweb/Makefile: include in top-level Makefile
gitweb/Makefile: add a "NO_GITWEB" parameter
tests: add missing double quotes to included library paths
test-lib.sh: fix prepend_var() quoting issue
config tests: fix harmless but broken "rm -r" cleanup
submodule--helper: remove unused SUPPORT_SUPER_PREFIX flags
check-ref-format: fix trivial memory leak
clone: fix memory leak in wanted_peer_refs()
submodule.c: free() memory from xgetcwd()
revert: free "struct replay_opts" members
cat-file: fix a memory leak in --batch-command mode
merge-file: refactor for subsequent memory leak fix
merge-file: fix memory leaks on error path
checkout: avoid "struct unpack_trees_options" leak
gc: fix a memory leak
cat-file: fix a common "struct object_context" memory leak
pull: fix a "struct oid_array" memory leak
test-tool test-hash: fix a memory leak
test-tool path-utils: fix a memory leak
test-tool {dump,scrap}-cache-tree: fix memory leaks
test-tool urlmatch-normalization: fix a memory leak
test-tool regex: call regfree(), fix memory leaks
test-tool json-writer: fix memory leaks
test-tool bloom: fix memory leaks
test-tool ref-store: fix a memory leak
test-tool delta: fix a memory leak
Makefile: remove mandatory "spatch" arguments from SPATCH_FLAGS
Makefile & .gitignore: ignore & clean "git.res", not "*.res"
cocci: add a "coccicheck-test" target and test *.cocci rules
cocci: have "coccicheck{,-pending}" depend on "coccicheck-test"
cocci: add and apply a rule to find "unused" strbufs
cocci: generalize "unused" rule to cover more than "strbuf"
trace2: only include "fsync" events if we git_fsync()
test-lib: use $1, not $@ in test_known_broken_{ok,failure}_
test-lib: don't set GIT_EXIT_OK before calling test_atexit_handler
test-lib: fix GIT_EXIT_OK logic errors, use BAIL_OUT
test-lib: add a --invert-exit-code switch
t/README: reword the "GIT_TEST_PASSING_SANITIZE_LEAK" description
test-lib: add a SANITIZE=leak logging mode
t/Makefile: don't remove test-results in "clean-except-prove-cache"
tests: move copy/pasted PERL + Test::More checks to a lib-perl.sh
test-lib: simplify by removing test_external
test-lib: add a GIT_TEST_PASSING_SANITIZE_LEAK=check mode
test-lib: have the "check" mode for SANITIZE=leak consider leak logs
leak tests: don't skip some tests under SANITIZE=leak
leak tests: mark passing SANITIZE=leak tests as leak-free
upload-pack: fix a memory leak in create_pack_file()
CI: use "GIT_TEST_SANITIZE_LEAK_LOG=true" in linux-leaks
bisect.c: add missing "goto" for release_revisions()
test-fast-rebase helper: use release_revisions() (again)
log: fix a memory leak in "git show <revision>..."
log: refactor "rev.pending" code in cmd_show()
bisect.c: partially fix bisect_rev_setup() memory leak
revisions API: don't leak memory on argv elements that need free()-ing
help.c: refactor drop_prefix() to use a "switch" statement"
help.c: remove common category behavior from drop_prefix() behavior
git help doc: use "<doc>" instead of "<guide>"
git docs: add a category for user-facing file, repo and command UX
git docs: add a category for file formats, protocols and interfaces
docs: move commit-graph format docs to man section 5
docs: move protocol-related docs to man section 5
docs: move index format docs to man section 5
docs: move signature docs to man section 5
docs: move pack format docs to man section 5
docs: move cruft pack docs to gitformat-pack
docs: move http-protocol docs to man section 5
hook API: don't segfault on strbuf_addf() to NULL "out"
Makefile + hash.h: remove PPC_SHA1 implementation
Makefile: use $(OBJECTS) instead of $(C_OBJ)
git-compat-util.h: use "UNUSED", not "UNUSED(var)"
git-compat-util.h: use "deprecated" for UNUSED variables
submodule tests: test usage behavior
submodule tests: test for "add <repository> <abs-path>"
submodule--helper: remove unused "name" helper
submodule--helper: remove unused "list" helper
test-tool submodule-config: remove unused "--url" handling
submodule--helper: move "is-active" to a test-tool
submodule--helper: move "check-name" to a test-tool
submodule--helper: move "resolve-relative-url-test" to a test-tool
submodule--helper style: don't separate declared variables with \n\n
submodule--helper style: add \n\n after variable declarations
submodule--helper: replace memset() with { 0 }-initialization
submodule--helper: use xstrfmt() in clone_submodule()
submodule--helper: move "sb" in clone_submodule() to its own scope
submodule--helper: add "const" to passed "module_clone_data"
submodule--helper: add "const" to passed "struct update_data"
submodule--helper: don't redundantly check "else if (res)"
submodule--helper: rename "int res" to "int ret"
submodule--helper: return "ret", not "1" from update_submodule()
submodule--helper: add missing braces to "else" arm
submodule--helper: don't call submodule_strategy_to_string() in BUG()
submodule API: don't handle SM_..{UNSPECIFIED,COMMAND} in to_string()
submodule--helper: use "code" in run_update_command()
submodule--helper: don't exit() on failure, return
submodule--helper: libify determine_submodule_update_strategy()
submodule--helper: libify "must_die_on_failure" code paths
submodule--helper update: don't override 'checkout' exit code
submodule--helper: libify "must_die_on_failure" code paths (for die)
submodule--helper: check repo{_submodule,}_init() return values
submodule--helper: libify more "die" paths for module_update()
submodule--helper: libify even more "die" paths for module_update()
submodule--helper: fix bad config API usage
submodule--helper: fix a leak in "clone_submodule"
submodule--helper: fix trivial get_default_remote_submodule() leak
submodule--helper: fix most "struct pathspec" memory leaks
submodule--helper: "struct pathspec" memory leak in module_update()
submodule--helper: don't leak {run,capture}_command() cp.dir argument
submodule--helper: add and use *_release() functions
submodule--helper: fix "errmsg_str" memory leak
submodule--helper: fix "sm_path" and other "module_cb_list" leaks
submodule--helper: fix a leak with repo_clear()
submodule--helper: fix a memory leak in get_default_remote_submodule()
submodule--helper: fix "reference" leak
submodule--helper: fix obscure leak in module_add()
submodule--helper: fix a leak in module_add()
submodule--helper: fix a memory leak in print_status()
submodule--helper: free some "displaypath" in "struct update_data"
submodule--helper: free rest of "displaypath" in "struct update_data"
submodule--helper: fix a configure_added_submodule() leak
docs: add and use include template for config/* includes
grep docs: de-duplicate configuration sections
send-email docs: de-duplicate configuration sections
apply docs: de-duplicate configuration sections
notes docs: de-duplicate and combine configuration sections
difftool docs: de-duplicate configuration sections
log docs: de-duplicate configuration sections
docs: add CONFIGURATION sections that map to a built-in
docs: add CONFIGURATION sections that fuzzy map to built-ins
Øystein Walle (1):
rev-parse --parseopt: detect missing opt-spec
^ permalink raw reply [relevance 3%]
* [ANNOUNCE] Git v2.38.0-rc1
@ 2022-09-22 0:11 3% Junio C Hamano
0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2022-09-22 0:11 UTC (permalink / raw)
To: git; +Cc: git-packagers
A release candidate Git v2.38.0-rc1 is now available for testing at
the usual places. It is comprised of 668 non-merge commits since
v2.37.0, contributed by 81 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.38.0-rc1' tag and the 'master' branch that the tag points at:
url = https://git.kernel.org/pub/scm/git/git
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.37.0 are as follows.
Welcome to the Git development community!
Andrew Olsen, Anthony Delannoy, Carlos López, Celeste Liu,
Cleber Rosa, David Plumpton, Elijah Conners, Eric DeCosta, Goss
Geppert, Ilya K, Ingy dot Net, Jacob Stopak, Julien Rouhaud,
Kilian Kilger, Lana Deere, Manuel Boni, Matthew Klein, Miaoqian
Lin, Moritz Baumann, Pavel Rappo, Pierre Garnier, Richard Oliver,
and Xavier Morel.
Returning contributors who helped this release are as follows.
Thanks for your continued support.
Abhradeep Chakraborty, Adam Dinwoodie, Ævar Arnfjörð
Bjarmason, Alex Henrie, Arthur Milchior, brian m. carlson,
Calvin Wan, Carlo Marcelo Arenas Belón, Christian Couder,
Christoph Reiter, Derrick Stolee, Dimitriy Ryazantcev, Đoàn
Trần Công Danh, Elijah Newren, Emily Shaffer, Eric Sunshine,
Fangyi Zhou, Felipe Contreras, Fernando Ramos, Glen Choo,
Han Xin, Hariom Verma, Jacob Keller, Jaydeep Das, Jeff King,
Jiang Xin, Joey Hess, Johannes Schindelin, John Cai, Jonathan
Tan, Josh Steadmon, Junio C Hamano, Justin Donnelly, Kyle Zhao,
Lessley Dennington, Li Linchao, Linus Torvalds, Martin Ågren,
Matheus Tavares, Matthew John Cheetham, Michael J Gruber,
Øystein Walle, Philip Oakley, Philippe Blain, Phillip Wood,
Randall S. Becker, Renato Botelho, René Scharfe, Shaoxuan Yuan,
Siddharth Asthana, SZEDER Gábor, Tao Klerks, Taylor Blau,
Teng Long, Todd Zullinger, Torsten Bögershausen, Victoria Dye,
and ZheNing Hu.
[*] We are counting not just the authorship contribution but issue
reporting, mentoring, helping and reviewing that are recorded in
the commit trailers.
----------------------------------------------------------------
Git v2.38 Release Notes (draft)
===============================
UI, Workflows & Features
* "git remote show [-n] frotz" now pays attention to negative
pathspec.
* "git push" sometimes performs poorly when reachability bitmaps are
used, even in a repository where other operations are helped by
bitmaps. The push.useBitmaps configuration variable is introduced
to allow disabling use of reachability bitmaps only for "git push".
* "git grep -m<max-hits>" is a way to limit the hits shown per file.
* "git merge-tree" learned a new mode where it takes two commits and
computes a tree that would result in the merge commit, if the
histories leading to these two commits were to be merged.
* "git mv A B" in a sparsely populated working tree can be asked to
move a path between directories that are "in cone" (i.e. expected
to be materialized in the working tree) and "out of cone"
(i.e. expected to be hidden). The handling of such cases has been
improved.
* Earlier, HTTP transport clients learned to tell the server side
what locale they are in by sending Accept-Language HTTP header, but
this was done only for some requests but not others.
* Introduce a safe.barerepository configuration variable that
allows users to forbid discovery of bare repositories.
* Various messages that come from the pack-bitmap codepaths have been
tweaked.
* "git rebase -i" learns to update branches whose tip appear in the
rebased range with "--update-refs" option.
* "git ls-files" learns the "--format" option to tweak its output.
* "git cat-file" learned an option to use the mailmap when showing
commit and tag objects.
* When "git merge" finds that it cannot perform a merge, it should
restore the working tree to the state before the command was
initiated, but in some corner cases it didn't.
* Operating modes like "--batch" of "git cat-file" command learned to
take NUL-terminated input, instead of one-item-per-line.
* "git rm" has become more aware of the sparse-index feature.
* "git rev-list --disk-usage" learned to take an optional value
"human" to show the reported value in human-readable format, like
"3.40MiB".
* The "diagnose" feature to create a zip archive for diagnostic
material has been lifted from "scalar" and made into a feature of
"git bugreport".
* The namespaces used by "log --decorate" from "refs/" hierarchy by
default has been tightened.
* "git rev-list --ancestry-path=C A..B" is a natural extension of
"git rev-list A..B"; instead of choosing a subset of A..B to those
that have ancestry relationship with A, it lets a subset with
ancestry relationship with C.
* "scalar" now enables built-in fsmonitor on enlisted repositories,
when able.
* The bash prompt (in contrib/) learned to optionally indicate when
the index is unmerged.
* "git clone" command learned the "--bundle-uri" option to coordinate
with hosting sites the use of pre-prepared bundle files.
* "git range-diff" learned to honor pathspec argument if given.
* "git format-patch --from=<ident>" can be told to add an in-body
"From:" line even for commits that are authored by the given
<ident> with "--force-in-body-from" option.
* The built-in fsmonitor refuses to work on a network mounted
repositories; a configuration knob for users to override this has
been introduced.
* The "scalar" addition from Microsoft is now part of the core Git
installation.
Performance, Internal Implementation, Development Support etc.
* Collection of what is referenced by objects in promisor packs have
been optimized to inspect these objects in the in-pack order.
* Introduce a helper to see if a branch is already being worked on
(hence should not be newly checked out in a working tree), which
performs much better than the existing find_shared_symref() to
replace many uses of the latter.
* Teach "git archive" to (optionally and then by default) avoid
spawning an external "gzip" process when creating ".tar.gz" (and
".tgz") archives.
* Allow large objects read from a packstream to be streamed into a
loose object file straight, without having to keep it in-core as a
whole.
* Further preparation to turn git-submodule.sh into a builtin
continues.
* Apply Coccinelle rule to turn raw memmove() into MOVE_ARRAY() cpp
macro, which would improve maintainability and readability.
* Teach "make all" to build gitweb as well.
* Tweak tests so that they still work when the "git init" template
did not create .git/info directory.
* Add Coccinelle rules to detect the pattern of initializing and then
finalizing a structure without using it in between at all, which
happens after code restructuring and the compilers fail to
recognize as an unused variable.
* The code to convert between GPG trust level strings and internal
constants we use to represent them have been cleaned up.
* Support for libnettle as SHA256 implementation has been added.
* The way "git multi-pack" uses parse-options API has been improved.
* A Coccinelle rule (in contrib/) to encourage use of COPY_ARRAY
macro has been improved.
* API tweak to make it easier to run fuzz testing on commit-graph parser.
* Omit fsync-related trace2 entries when their values are all zero.
* The codepath to write multi-pack index has been taught to release a
large chunk of memory that holds an array of objects in the packs,
as soon as it is done with the array, to reduce memory consumption.
* Add a level of redirection to array allocation API in xdiff part,
to make it easier to share with the libgit2 project.
* "git fetch" client logs the partial clone filter used in the trace2
output.
* The "bundle URI" design gets documented.
* The common ancestor negotiation exchange during a "git fetch"
session now leaves trace log.
* Test portability improvements.
(merge 4d1d843be7 mt/rot13-in-c later to maint).
* The "subcommand" mode is introduced to parse-options API and update
the command line parser of Git commands with subcommands.
* The pack bitmap file gained a bitmap-lookup table to speed up
locating the necessary bitmap for a given commit.
* The assembly version of SHA-1 implementation for PPC has been
removed.
* The server side that responds to "git fetch" and "git clone"
request has been optimized by allowing it to send objects in its
object store without recomputing and validating the object names.
* Annotate function parameters that are not used (but cannot be
removed for structural reasons), to prepare us to later compile
with -Wunused warning turned on.
* Share the text used to explain configuration variables used by "git
<subcmd>" in "git help <subcmd>" with the text from "git help config".
* "git mv A B" in a sparsely populated working tree can be asked to
move a path from a directory that is "in cone" to another directory
that is "out of cone". Handling of such a case has been improved.
* The chainlint script for our tests has been revamped.
Fixes since v2.37
-----------------
* Rewrite of "git add -i" in C that appeared in Git 2.25 didn't
correctly record a removed file to the index, which was fixed.
* Certain diff options are currently ignored when combined-diff is
shown; mark them as incompatible with the feature.
* Adjust technical/bitmap-format to be formatted by AsciiDoc, and
add some missing information to the documentation.
* Fixes for tests when the source directory has unusual characters in
its path, e.g. whitespaces, double-quotes, etc.
* "git mktree --missing" lazily fetched objects that are missing from
the local object store, which was totally unnecessary for the purpose
of creating the tree object(s) from its input.
* Give _() markings to fatal/warning/usage: labels that are shown in
front of these messages.
* References to commands-to-be-typed-literally in "git rebase"
documentation mark-up have been corrected.
* In a non-bare repository, the behavior of Git when the
core.worktree configuration variable points at a directory that has
a repository as its subdirectory, regressed in Git 2.27 days.
* Recent update to vimdiff layout code has been made more robust
against different end-user vim settings.
* Plug various memory leaks, both in the main code and in test-tool
commands.
* Fixes a long-standing corner case bug around directory renames in
the merge-ort strategy.
* The resolve-undo information in the index was not protected against
GC, which has been corrected.
* A corner case bug where lazily fetching objects from a promisor
remote resulted in infinite recursion has been corrected.
* "git clone" from a repository with some ref whose HEAD is unborn
did not set the HEAD in the resulting repository correctly, which
has been corrected.
* An earlier attempt to plug leaks placed a clean-up label to jump to
at a bogus place, which as been corrected.
* Variable quoting fix in the vimdiff driver of "git mergetool"
* "git shortlog -n" relied on the underlying qsort() to be stable,
which shouldn't have. Fixed.
* A fix for a regression in test framework.
* mkstemp() emulation on Windows has been improved.
* Add missing documentation for "include" and "includeIf" features in
"git config" file format, which incidentally teaches the command
line completion to include them in its offerings.
* Avoid "white/black-list" in documentation and code comments.
* Workaround for a compiler warning against use of die() in
osx-keychain (in contrib/).
* Workaround for a false positive compiler warning.
* "git p4" working on UTF-16 files on Windows did not implement
CRLF-to-LF conversion correctly, which has been corrected.
* "git p4" did not handle non-ASCII client name well, which has been
corrected.
* "rerere-train" script (in contrib/) used to honor commit.gpgSign
while recreating the throw-away merges.
* "git checkout" miscounted the paths it updated, which has been
corrected.
* Fix for a bug that makes write-tree to fail to write out a
non-existent index as a tree, introduced in 2.37.
* There was a bug in the codepath to upgrade generation information
in commit-graph from v1 to v2 format, which has been corrected.
* Gitweb had legacy URL shortener that is specific to the way
projects hosted on kernel.org used to (but no longer) work, which
has been removed.
* Fix build procedure for Windows that uses CMake so that it can pick
up the shell interpreter from local installation location.
* Conditionally allow building Python interpreter on Windows
* Fix to lstat() emulation on Windows.
* Older gcc with -Wall complains about the universal zero initializer
"struct s = { 0 };" idiom, which makes developers' lives
inconvenient (as -Werror is enabled by DEVELOPER=YesPlease). The
build procedure has been tweaked to help these compilers.
* Plug memory leaks in the failure code path in the "merge-ort" merge
strategy backend.
* "git symbolic-ref symref non..sen..se" is now diagnosed as an error.
* A follow-up fix to a fix for a regression in 2.36 around hooks.
* Avoid repeatedly running getconf to ask libc version in the test
suite, and instead just as it once per script.
* Platform-specific code that determines if a directory is OK to use
as a repository has been taught to report more details, especially
on Windows.
* "vimdiff3" regression fix.
* "git fsck" reads mode from tree objects but canonicalizes the mode
before passing it to the logic to check object sanity, which has
hid broken tree objects from the checking logic. This has been
corrected, but to help existing projects with broken tree objects
that they cannot fix retroactively, the severity of anomalies this
code detects has been demoted to "info" for now.
* Fixes to sparse index compatibility work for "reset" and "checkout"
commands.
* An earlier optimization discarded a tree-object buffer that is
still in use, which has been corrected.
* Fix deadlocks between main Git process and subprocess spawned via
the pipe_command() API, that can kill "git add -p" that was
reimplemented in C recently.
* The sequencer machinery translated messages left in the reflog by
mistake, which has been corrected.
* xcalloc(), imitating calloc(), takes "number of elements of the
array", and "size of a single element", in this order. A call that
does not follow this ordering has been corrected.
* The preload-index codepath made copies of pathspec to give to
multiple threads, which were left leaked.
* Update the version of Ubuntu used for GitHub Actions CI from 18.04
to 22.04.
* The auto-stashed local changes created by "git merge --autostash"
was mixed into a conflicted state left in the working tree, which
has been corrected.
* Multi-pack index got corrupted when preferred pack changed from one
pack to another in a certain way, which has been corrected.
(merge 99e4d084ff tb/midx-with-changing-preferred-pack-fix later to maint).
* The clean-up of temporary files created via mks_tempfile_dt() was
racy and attempted to unlink() the leading directory when signals
are involved, which has been corrected.
(merge babe2e0559 rs/tempfile-cleanup-race-fix later to maint).
* FreeBSD portability fix for "git maintenance" that spawns "crontab"
to schedule tasks.
(merge ee69e7884e bc/gc-crontab-fix later to maint).
* Those who use diff-so-fancy as the diff-filter noticed a regression
or two in the code that parses the diff output in the built-in
version of "add -p", which has been corrected.
(merge 0a101676e5 js/add-p-diff-parsing-fix later to maint).
* Segfault fix-up to an earlier fix to the topic to teach "git reset"
and "git checkout" work better in a sparse checkout.
(merge 037f8ea6d9 vd/sparse-reset-checkout-fixes later to maint).
* "git diff --no-index A B" managed its the pathnames of its two
input files rather haphazardly, sometimes leaking them. The
command line argument processing has been straightened out to clean
it up.
(merge 2b43dd0eb5 rs/diff-no-index-cleanup later to maint).
* "git rev-list --verify-objects" ought to inspect the contents of
objects and notice corrupted ones, but it didn't when the commit
graph is in use, which has been corrected.
(merge b27ccae34b jk/rev-list-verify-objects-fix later to maint).
* More fixes to "add -p"
(merge 64ec8efb83 js/builtin-add-p-portability-fix later to maint).
* The parser in the script interface to parse-options in "git
rev-parse" has been updated to diagnose a bogus input correctly.
(merge f20b9c36d0 ow/rev-parse-parseopt-fix later to maint).
* The code that manages list-object-filter structure, used in partial
clones, leaked the instances, which has been plugged.
(merge 66eede4a37 jk/plug-list-object-filter-leaks later to maint).
* Fix another UI regression in the reimplemented "add -p".
(merge f6f0ee247f rs/add-p-worktree-mode-prompt-fix later to maint).
* "git fetch" over protocol v2 sent an incorrect ref prefix request
to the server and made "git pull" with configured fetch refspec
that does not cover the remote branch to merge with fail, which has
been corrected.
(merge 49ca2fba39 jk/proto-v2-ref-prefix-fix later to maint).
* A result from opendir() was leaking in the commit-graph expiration
codepath, which has been plugged.
(merge 12f1ae5324 ml/commit-graph-expire-dir-leak-fix later to maint).
* Just like we have coding guidelines, we now have guidelines for
reviewers.
(merge e01b851923 vd/doc-reviewing-guidelines later to maint).
* Other code cleanup, docfix, build fix, etc.
(merge 77b9e85c0f vd/fix-perf-tests later to maint).
(merge 0682bc43f5 jk/test-crontab-fixes later to maint).
(merge b46dd1726c cc/doc-trailer-whitespace-rules later to maint).
----------------------------------------------------------------
Changes since v2.37.0 are as follows:
Abhradeep Chakraborty (9):
bitmap-format.txt: feed the file to asciidoc to generate html
bitmap-format.txt: fix some formatting issues
bitmap-format.txt: add information for trailing checksum
Documentation/technical: describe bitmap lookup table extension
bitmap: move `get commit positions` code to `bitmap_writer_finish`
pack-bitmap-write.c: write lookup table extension
pack-bitmap-write: learn pack.writeBitmapLookupTable and add tests
pack-bitmap: prepare to read lookup table extension
bitmap-lookup-table: add performance tests for lookup table
Adam Dinwoodie (1):
t1800: correct test to handle Cygwin
Alex Henrie (2):
gc: don't translate literal commands
builtin/diagnose.c: don't translate the two mode values
Anthony Delannoy (1):
preload-index: fix memleak
Calvin Wan (1):
submodule merge: update conflict error message
Carlo Marcelo Arenas Belón (2):
setup: tighten ownership checks post CVE-2022-24765
cmake: support local installations of git
Carlos López (1):
grep: add --max-count command line option
Celeste Liu (1):
contrib/rerere-train: avoid useless gpg sign in training
Christian Couder (1):
Documentation: clarify whitespace rules for trailers
Cleber Rosa (1):
setup: fix function name in a BUG() message
Derrick Stolee (50):
branch: add branch_checked_out() helper
branch: check for bisects and rebases
fetch: use new branch_checked_out() and add tests
branch: use branch_checked_out() when deleting refs
branch: fix branch_checked_out() leaks
t5510: replace 'origin' with URL more carefully
vscode: improve tab size and wrapping
git-rebase.txt: use back-ticks consistently
pack-bitmap-write: use const for hashes
midx: extract bitmap write setup
midx: reduce memory pressure while writing bitmaps
daemon: clarify directory arguments
git-cvsserver: clarify directory list
git.txt: remove redundant language
t: avoid "whitelist"
transport.c: avoid "whitelist"
t2407: test bisect and rebase as black-boxes
t2407: test branches currently using apply backend
branch: consider refs under 'update-refs'
rebase-interactive: update 'merge' description
sequencer: define array with enum values
sequencer: add update-ref command
rebase: add --update-refs option
rebase: update refs from 'update-ref' commands
sequencer: rewrite update-refs as user edits todo list
rebase: add rebase.updateRefs config option
sequencer: ignore HEAD ref under --update-refs
sequencer: notify user of --update-refs activity
compat/win32: correct for incorrect compiler warning
refs: allow "HEAD" as decoration filter
t4207: modernize test
t4207: test coloring of grafted decorations
refs: add array of ref namespaces
refs: use ref_namespaces for replace refs base
log-tree: use ref_namespaces instead of if/else-if
log: add default decoration filter
log: add --clear-decorations option
log: create log.initialDecorationSet=all
maintenance: stop writing log.excludeDecoration
fetch: use ref_namespaces during prefetch
docs: document bundle URI standard
bundle-uri: add example bundle organization
remote-curl: add 'get' capability
bundle-uri: create basic file-copy logic
clone: add --bundle-uri option
bundle-uri: add support for http(s):// and file://
clone: --bundle-uri cannot be combined with --depth
t6019: modernize tests with helper
clone: warn on failure to repo_init()
ci: update 'static-analysis' to Ubuntu 22.04
Dimitriy Ryazantcev (1):
i18n: mark message helpers prefix for translation
Elijah Conners (1):
reftable: use a pointer for pq_entry param
Elijah Newren (43):
merge-tree: rename merge_trees() to trivial_merge_trees()
merge-tree: move logic for existing merge into new function
merge-tree: add option parsing and initial shell for real merge function
merge-tree: implement real merges
merge-ort: split out a separate display_update_messages() function
merge-tree: support including merge messages in output
merge-ort: provide a merge_get_conflicted_files() helper function
merge-ort: remove command-line-centric submodule message from merge-ort
merge-tree: provide a list of which files have conflicts
merge-tree: provide easy access to `ls-files -u` style info
merge-ort: store more specific conflict information
merge-ort: optionally produce machine-readable output
merge-tree: allow `ls-files -u` style info to be NUL terminated
merge-tree: add a --allow-unrelated-histories flag
git-merge-tree.txt: add a section on potentional usage mistakes
t6429: fix use of non-existent function
t6423: add tests of dual directory rename plus add/add conflict
merge-ort: small cleanups of check_for_directory_rename
merge-ort: make a separate function for freeing struct collisions
merge-ort: shuffle the computation and cleanup of potential collisions
merge-ort: fix issue with dual rename and add/add conflict
merge-ort-wrappers: make printed message match the one from recursive
merge-resolve: abort if index does not match HEAD
merge: abort if index does not match HEAD for trivial merges
merge: do not abort early if one strategy fails to handle the merge
merge: fix save_state() to work when there are stat-dirty files
merge: make restore_state() restore staged state too
merge: ensure we can actually restore pre-merge state
merge: do not exit restore_state() prematurely
merge-ort: remove translator lego in new "submodule conflict suggestion"
merge-ort: avoid surprise with new sub_flag variable
merge-ort: provide helpful submodule update message when possible
merge-ort: remove code obsoleted by other changes
rev-list-options.txt: fix simple typo
revision: allow --ancestry-path to take an argument
merge: only apply autostash when appropriate
merge: cleanup confusing logic for handling successful merges
merge: small code readability improvement
t4301: add more interesting merge-tree testcases
t64xx: convert 'test_create_repo' to 'git init'
diff: have submodule_format logic avoid additional diff headers
diff: fix filtering of additional headers under --remerge-diff
diff: fix filtering of merge commits under --remerge-diff
Eric DeCosta (1):
fsmonitor: option to allow fsmonitor to run against network-mounted repos
Eric Sunshine (25):
t2407: fix broken &&-chains in compound statement
t1092: fix buggy sparse "blame" test
t: detect and signal failure within loop
t4301: account for behavior differences between sed implementations
t4301: fix broken &&-chains and add missing loop termination
t4301: emit blank line in more idiomatic fashion
t: add skeleton chainlint.pl
chainlint.pl: add POSIX shell lexical analyzer
chainlint.pl: add POSIX shell parser
chainlint.pl: add parser to validate tests
chainlint.pl: add parser to identify test definitions
chainlint.pl: validate test scripts in parallel
chainlint.pl: don't require `return|exit|continue` to end with `&&`
t/Makefile: apply chainlint.pl to existing self-tests
chainlint.pl: don't require `&` background command to end with `&&`
chainlint.pl: don't flag broken &&-chain if `$?` handled explicitly
chainlint.pl: don't flag broken &&-chain if failure indicated explicitly
chainlint.pl: complain about loops lacking explicit failure handling
chainlint.pl: allow `|| echo` to signal failure upstream of a pipe
t/chainlint: add more chainlint.pl self-tests
test-lib: retire "lint harder" optimization hack
test-lib: replace chainlint.sed with chainlint.pl
t/Makefile: teach `make test` and `make prove` to run chainlint.pl
t: retire unused chainlint.sed
chainlint: colorize problem annotations and test delimiters
Fangyi Zhou (1):
help: fix doubled words in explanation for developer interfaces
Felipe Contreras (7):
mergetools: vimdiff: fix comment
mergetools: vimdiff: make vimdiff3 actually work
mergetools: vimdiff: silence annoying messages
mergetools: vimdiff: fix for diffopt
mergetools: vimdiff: rework tab logic
mergetools: vimdiff: fix single window layouts
mergetools: vimdiff: simplify tabfirst
Fernando Ramos (1):
vimdiff: make layout engine more robust against user vim settings
Glen Choo (16):
submodule--helper: eliminate internal "--update" option
submodule--helper tests: add missing "display path" coverage
submodule--helper update: use display path helper
submodule--helper: don't recreate recursive prefix
submodule--helper: use correct display path helper
submodule--helper update: use --super-prefix
submodule--helper: remove display path helper
Documentation/git-config.txt: add SCOPES section
Documentation: define protected configuration
config: learn `git_protected_config()`
safe.directory: use git_protected_config()
setup.c: create `safe.bareRepository`
config.c: NULL check when reading protected config
Documentation/git-reflog: remove unneeded \ from \{
submodule--helper: add "const" to copy of "update_data"
submodule--helper: refactor "errmsg_str" to be a "struct strbuf"
Goss Geppert (2):
dir: traverse into repository
dir: minor refactoring / clean-up
Han Xin (6):
unpack-objects: low memory footprint for get_data() in dry_run mode
object-file.c: refactor write_loose_object() to several steps
object-file.c: add "stream_loose_object()" to handle large object
unpack-objects: use stream_loose_object() to unpack large objects
commit-graph.c: no lazy fetch in lookup_commit_in_graph()
t5330: remove run_with_limited_processses()
Jacob Keller (1):
remote: handle negative refspecs in git remote show
Jacob Stopak (3):
Documentation: fix various repeat word typos
Documentation: clean up a few misspelled word typos
Documentation: clean up various typos in technical docs
Jaydeep Das (1):
gpg-interface: add function for converting trust level to string
Jeff King (63):
is_promisor_object(): walk promisor packs in pack-order
fetch: stop passing around unused worktrees variable
branch: drop unused worktrees variable
revisions.txt: escape "..." to avoid asciidoc horizontal ellipsis
clone: drop extra newline from warning message
clone: propagate empty remote HEAD even with other branches
clone: use remote branch if it matches default HEAD
clone: move unborn head creation to update_head()
ref-filter: disable save_commit_buffer while traversing
diff-files: move misplaced cleanup label
write_midx_bitmap(): drop unused refs_snapshot parameter
config.mak.dev: squelch -Wno-missing-braces for older gcc
tree-walk: add a mechanism for getting non-canonicalized modes
fsck: actually detect bad file modes in trees
fsck: downgrade tree badFilemode to "info"
is_promisor_object(): fix use-after-free of tree buffer
compat: add function to enable nonblocking pipes
git-compat-util: make MAX_IO_SIZE define globally available
pipe_command(): avoid xwrite() for writing to pipe
pipe_command(): handle ENOSPC when writing to a pipe
pipe_command(): mark stdin descriptor as non-blocking
git-compat-util: add UNUSED macro
refs: mark unused each_ref_fn parameters
refs: mark unused reflog callback parameters
refs: mark unused virtual method parameters
transport: mark bundle transport_options as unused
streaming: mark unused virtual method parameters
config: mark unused callback parameters
hashmap: mark unused callback parameters
mark unused read_tree_recursive() callback parameters
run-command: mark unused async callback parameters
is_path_owned_by_current_uid(): mark "report" parameter as unused
xdiff: drop unused mmfile parameters from xdl_do_histogram_diff()
log-tree: drop unused commit param in remerge_diff()
match_pathname(): drop unused "flags" parameter
verify_one_sparse(): drop unused parameters
reftable: drop unused parameter from reader_seek_linear()
reflog: assert PARSE_OPT_NONEG in parse-options callbacks
xdiff: drop unused mmfile parameters from xdl_do_patience_diff()
pass subcommand "prefix" arguments to parse_options()
maintenance: add parse-options boilerplate for subcommands
remote: run "remote rm" argv through parse_options()
pack-bitmap-write: drop unused pack_idx_entry parameters
tempfile: drop active flag
tempfile: update comment describing state transitions
test-crontab: minor memory and error handling fixes
lookup_commit_in_graph(): use prepare_commit_graph() to check for graph
rev-list: disable commit graph with --verify-objects
parse_object(): allow skipping hash check
upload-pack: skip parse-object re-hashing of "want" objects
parse_object(): check commit-graph when skip_hash set
t1060: check partial clone of misnamed blob
list_objects_filter_copy(): deep-copy sparse_oid_name field
transport: deep-copy object-filter struct for fetch-pack
transport: free filter options in disconnect_git()
list_objects_filter_options: plug leak of filter_spec strings
prepare_repo_settings(): plug leak of config values
fetch: stop checking for NULL transport->remote in do_fetch()
fetch: add branch.*.merge to default ref-prefix extension
list-objects-filter: don't memset after releasing filter struct
list-objects-filter: handle null default filter spec
list-objects-filter: add and use initializers
list-objects-filter: convert filter_spec to a strbuf
Johannes Schindelin (38):
merge-ort: store messages in a list, not in a single strbuf
merge-ort: make `path_messages` a strmap to a string_list
Git 2.30.5
Git 2.31.4
Git 2.32.3
Git 2.33.4
Git 2.34.4
Git 2.35.4
Git 2.36.2
add --interactive: allow `update` to stage deleted files
tests: fix incorrect --write-junit-xml code
mergetool(vimdiff): allow paths to contain spaces again
shortlog: use a stable sort
t5351: avoid relying on `core.fsyncMethod = batch` to be supported
t5351: avoid using `test_cmp` for binary data
windows: include the Python bits when building Git for Windows
mingw: remove unneeded `NO_GETTEXT` directive
mingw: remove unneeded `NO_CURL` directive
lstat(mingw): correctly detect ENOTDIR scenarios
merge-ort: clean up after failed merge
merge-ort: do leave trace2 region even if checkout fails
setup: fix some formatting
setup: prepare for more detailed "dubious ownership" messages
mingw: provide details about unsafe directories' ownership
mingw: be more informative when ownership check fails on FAT32
mingw: handle a file owned by the Administrators group correctly
scalar unregister: stop FSMonitor daemon
range-diff: reorder argument handling
range-diff: consistently validate the arguments
range-diff: optionally accept pathspecs
add -p: avoid ambiguous signed/unsigned comparison
t3701: test the built-in `add -i` regardless of NO_PERL
t6132(NO_PERL): do not run the scripted `add -p`
add -p: detect more mismatches between plain vs colored diffs
add -p: gracefully handle unparseable hunk headers in colored diffs
add -p: ignore dirty submodules
git help: special-case `scalar`
scalar: implement the `help` subcommand
Jonathan Tan (1):
fetch-pack: write effective filter to trace2
Josh Steadmon (1):
fetch-pack: add tracing for negotiation rounds
Julien Rouhaud (1):
gitweb: remove title shortening heuristics
Junio C Hamano (43):
revision: mark blobs needed for resolve-undo as reachable
A regression fix for 2.37
Git 2.37.1
builtin/mv.c: use the MOVE_ARRAY() macro instead of memmove()
The first batch after Git 2.37
fsck: do not dereference NULL while checking resolve-undo data
The second batch
The third batch
The fourth batch
The fifth batch
builtin/remote.c: use the right kind of STRING_LIST_INIT
The sixth batch
The seventh batch
Downmerge a handful of fixes for 2.37.x maintenance track
The eighth batch
The ninth batch
doc: consolidate --rerere-autoupdate description
doc: clarify rerere-autoupdate
Downmerge a bit more for 2.37.x
The tenth batch
The eleventh batch
Git 2.37.2
The twelfth batch
The thirteenth batch
The fourteenth batch
t5329: notice a failure within a loop
The fifteenth batch
A handful more topics from the 'master' front for 2.37.3
pretty: separate out the logic to decide the use of in-body from
format-patch: allow forcing the use of in-body From: header
format-patch: learn format.forceInBodyFrom configuration variable
The sixteenth batch
Git 2.37.3
The seventeenth batch
The eighteenth batch
The nineteenth batch
The twentieth batch
Merge a handful of topics from the 'master' front
Prepare for 2.38-rc0
Git 2.38-rc0
A bit more of remaining topics before -rc1
Final batch before -rc1
Git 2.38-rc1
Justin Donnelly (1):
git-prompt: show presence of unresolved conflicts at command prompt
Kilian Kilger (2):
git-p4: fix bug with encoding of p4 client name
git-p4: refactoring of p4CmdList()
Kyle Zhao (1):
send-pack.c: add config push.useBitmaps
Lessley Dennington (1):
osx-keychain: fix compiler warning
Li Linchao (3):
ls-files: update test style
remote-curl: send Accept-Language header to server
rev-list: support human-readable output for `--disk-usage`
Linus Torvalds (1):
symbolic-ref: refuse to set syntactically invalid target
Manuel Boni (1):
config.txt: document include, includeIf
Martin Ågren (3):
config/core.txt: fix minor issues for `core.sparseCheckoutCone`
t4200: drop irrelevant code
read-cache: make `do_read_index()` always set up `istate->repo`
Matheus Tavares (7):
checkout: document bug where delayed checkout counts entries twice
checkout: show bug about failed entries being included in final report
checkout: fix two bugs on the final count of updated entries
pkt-line.h: move comment closer to the associated code
t0021: avoid grepping for a Perl-specific string at filter output
t0021: implementation the rot13-filter.pl script in C
tests: use the new C rot13-filter helper to avoid PERL prereq
Matthew John Cheetham (1):
scalar: enable built-in FSMonitor on `register`
Miaoqian Lin (1):
commit-graph: Fix missing closedir in expire_commit_graphs
Michael J Gruber (3):
sequencer: do not translate reflog messages
sequencer: do not translate parameters to error_resolve_conflict()
sequencer: do not translate command names
Moritz Baumann (3):
git-p4: fix CR LF handling for utf16 files
git-p4: fix typo in P4Submit.applyCommit()
git-p4: fix error handling in P4Unshelve.renameBranch()
Philip Oakley (1):
doc add: renormalize is not idempotent for CRCRLF
Philippe Blain (3):
diff-format.txt: dst can be 0* SHA-1 when path is deleted, too
diff-format.txt: correct misleading wording
diff-index.txt: update raw output format in examples
Phillip Wood (5):
xdiff: introduce XDL_ALLOC_ARRAY()
xdiff: introduce xdl_calloc
xdiff: introduce XDL_CALLOC_ARRAY()
xdiff: introduce XDL_ALLOC_GROW()
tests: cache glibc version check
René Scharfe (28):
archive: update format documentation
archive: rename archiver data field to filter_command
archive-tar: factor out write_block()
archive-tar: add internal gzip implementation
archive-tar: use OS_CODE 3 (Unix) for internal gzip
archive-tar: use internal gzip by default
combine-diff: abort if --ignore-matching-lines is given
combine-diff: abort if --output is given
cocci: avoid normalization rules for memcpy
mingw: avoid mktemp() in mkstemp() implementation
mergesort: unify ranks loops
mergesort: tighten merge loop
mergesort: add macros for typed sort of linked lists
test-mergesort: use DEFINE_LIST_SORT_DEBUG
test-mergesort: use DEFINE_LIST_SORT
blame: use DEFINE_LIST_SORT
commit: use DEFINE_LIST_SORT
fetch-pack: use DEFINE_LIST_SORT
packfile: use DEFINE_LIST_SORT
mergesort: remove llist_mergesort()
nonblock: support Windows
tempfile: avoid directory cleanup race
test-mergesort: read sort input all at once
test-mergesort: use mem_pool for sort input
diff-no-index: release strbuf on queue error
diff-no-index: release prefixed filenames
diff-no-index: simplify argv index calculation
add -p: fix worktree patch mode prompts
Richard Oliver (1):
mktree: do not check type of remote objects
SZEDER Gábor (30):
Makefile: build 'gitweb' in the default target
multi-pack-index: simplify handling of unknown --options
index-format.txt: remove outdated list of supported extensions
git.c: update NO_PARSEOPT markings
t3301-notes.sh: check that default operation mode doesn't take arguments
t5505-remote.sh: check the behavior without a subcommand
t0040-parse-options: test parse_options() with various 'parse_opt_flags'
api-parse-options.txt: fix description of OPT_CMDMODE
parse-options: PARSE_OPT_KEEP_UNKNOWN only applies to --options
parse-options: clarify the limitations of PARSE_OPT_NODASH
parse-options: drop leading space from '--git-completion-helper' output
parse-options: add support for parsing subcommands
builtin/bundle.c: let parse-options parse subcommands
builtin/commit-graph.c: let parse-options parse subcommands
builtin/gc.c: let parse-options parse 'git maintenance's subcommands
builtin/hook.c: let parse-options parse subcommands
builtin/multi-pack-index.c: let parse-options parse subcommands
builtin/notes.c: let parse-options parse subcommands
builtin/reflog.c: let parse-options parse subcommands
builtin/remote.c: let parse-options parse subcommands
builtin/sparse-checkout.c: let parse-options parse subcommands
builtin/stash.c: let parse-options parse subcommands
builtin/worktree.c: let parse-options parse subcommands
promisor-remote: fix xcalloc() argument order
t0040-parse-options: remove leftover debugging
test-parse-options.c: don't use for loop initial declaration
test-parse-options.c: fix style of comparison with zero
notes: simplify default operation mode arguments check
notes, remote: show unknown subcommands between `'
t/Makefile: remove 'test-results' on 'make clean'
Shaoxuan Yuan (22):
t7002: add tests for moving out-of-cone file/directory
t1092: mv directory from out-of-cone to in-cone
mv: update sparsity after moving from out-of-cone to in-cone
mv: decouple if/else-if checks using goto
mv: check if out-of-cone file exists in index with SKIP_WORKTREE bit
mv: check if <destination> exists in index to handle overwriting
mv: use flags mode for update_mode
mv: add check_dir_in_index() and solve general dir check issue
t1092: add tests for `git-rm`
pathspec.h: move pathspec_needs_expanded_index() from reset.c to here
rm: expand the index only when necessary
rm: integrate with sparse-index
t7002: add tests for moving from in-cone to out-of-cone
mv: rename check_dir_in_index() to empty_dir_has_sparse_contents()
mv: free the with_slash in check_dir_in_index()
mv: check if <destination> is a SKIP_WORKTREE_DIR
mv: remove BOTH from enum update_mode
mv: from in-cone to out-of-cone
mv: cleanup empty WORKING_DIRECTORY
advice.h: add advise_on_moving_dirty_path()
mv: check overwrite for in-to-out move
builtin/mv.c: fix possible segfault in add_slash()
Siddharth Asthana (4):
revision: improve commit_rewrite_person()
ident: move commit_rewrite_person() to ident.c
ident: rename commit_rewrite_person() to apply_mailmap_to_header()
cat-file: add mailmap support
Tao Klerks (1):
rev-parse: documentation adjustment - mention remote tracking with @{u}
Taylor Blau (14):
pack-objects.h: remove outdated pahole results
commit-graph: pass repo_settings instead of repository
t5318: demonstrate commit-graph generation v2 corruption
commit-graph: introduce `repo_find_commit_pos_in_graph()`
commit-graph: fix corrupt upgrade from generation v1 to v2
t1006: extract --batch-command inputs to variables
builtin/cat-file.c: support NUL-delimited input with `-z`
t5326: demonstrate potential bitmap corruption
t/lib-bitmap.sh: avoid silencing stderr
midx.c: extract `struct midx_fanout`
midx.c: extract `midx_fanout_add_midx_fanout()`
midx.c: extract `midx_fanout_add_pack_fanout()`
midx.c: include preferred pack correctly with existing MIDX
midx.c: avoid adding preferred objects twice
Teng Long (8):
pack-bitmap.c: fix formatting of error messages
pack-bitmap.c: mark more strings for translations
pack-bitmap.c: rename "idx_name" to "bitmap_name"
pack-bitmap.c: do not ignore error when opening a bitmap file
pack-bitmap.c: using error() instead of silently returning -1
pack-bitmap.c: continue looping when first MIDX bitmap is found
api-trace2.txt: print config key-value pair
tr2: shows scope unconditionally in addition to key-value pair
Todd Zullinger (2):
docs: fix a few recently broken links
api docs: link to html version of api-trace2
Victoria Dye (37):
scalar: reword command documentation to clarify purpose
scalar: convert README.md into a technical design doc
checkout: fix nested sparse directory diff in sparse index
oneway_diff: handle removed sparse directories
cache.h: create 'index_name_pos_sparse()'
unpack-trees: unpack new trees as sparse directories
scalar-diagnose: use "$GIT_UNZIP" in test
scalar-diagnose: avoid 32-bit overflow of size_t
scalar-diagnose: add directory to archiver more gently
scalar-diagnose: move 'get_disk_info()' to 'compat/'
scalar-diagnose: move functionality to common location
diagnose.c: add option to configure archive contents
builtin/diagnose.c: create 'git diagnose' builtin
builtin/diagnose.c: add '--mode' option
builtin/bugreport.c: create '--diagnose' option
scalar-diagnose: use 'git diagnose --mode=all'
scalar: update technical doc roadmap
scalar: constrain enlistment search
scalar-unregister: handle error codes greater than 0
scalar-[un]register: clearly indicate source of error
scalar-delete: do not 'die()' in 'delete_enlistment()'
scalar: move config setting logic into its own function
scalar: update technical doc roadmap with FSMonitor support
p0004: fix prereq declaration
p0006: fix 'read-tree' argument ordering
unpack-trees: fix sparse directory recursion check
scalar: fix command documentation section header
scalar: include in standard Git build & installation
scalar: add to 'git help -a' command list
scalar-clone: add test coverage
t/perf: add Scalar performance tests
t/perf: add 'GIT_PERF_USE_SCALAR' run option
Documentation/technical: include Scalar technical doc
diagnose.c: refactor to safely use 'd_type'
Documentation: add ReviewingGuidelines
diagnose: add to command-list.txt
version: fix builtin linking & documentation
ZheNing Hu (2):
ls-files: introduce "--format" option
ls-files: fix black space in error message
brian m. carlson (2):
sha256: add support for Nettle
gc: use temporary file for editing crontab
Ævar Arnfjörð Bjarmason (153):
t0008: don't rely on default ".git/info/exclude"
tests: don't depend on template-created .git/branches
tests: don't assume a .git/info for .git/info/grafts
tests: don't assume a .git/info for .git/info/attributes
tests: don't assume a .git/info for .git/info/refs
tests: don't assume a .git/info for .git/info/exclude
tests: don't assume a .git/info for .git/info/sparse-checkout
object-file.c: factor out deflate part of write_loose_object()
core doc: modernize core.bigFileThreshold documentation
git-submodule.sh: remove unused sanitize_submodule_env()
git-submodule.sh: remove unused $prefix variable
git-submodule.sh: make the "$cached" variable a boolean
git-submodule.sh: remove unused top-level "--branch" argument
submodule--helper: have --require-init imply --init
submodule update: remove "-v" option
submodule--helper: rename "absorb-git-dirs" to "absorbgitdirs"
submodule--helper: report "submodule" as our name in some "-h" output
submodule--helper: understand --checkout, --merge and --rebase synonyms
git-submodule.sh: use "$quiet", not "$GIT_QUIET"
git-sh-setup.sh: remove "say" function, change last users
gitweb/Makefile: define all .PHONY prerequisites inline
gitweb/Makefile: add a $(GITWEB_ALL) variable
gitweb/Makefile: clear up and de-duplicate the gitweb.{css,js} vars
gitweb/Makefile: prepare to merge into top-level Makefile
gitweb: remove "test" and "test-installed" targets
gitweb/Makefile: include in top-level Makefile
gitweb/Makefile: add a "NO_GITWEB" parameter
tests: add missing double quotes to included library paths
test-lib.sh: fix prepend_var() quoting issue
config tests: fix harmless but broken "rm -r" cleanup
submodule--helper: remove unused SUPPORT_SUPER_PREFIX flags
check-ref-format: fix trivial memory leak
clone: fix memory leak in wanted_peer_refs()
submodule.c: free() memory from xgetcwd()
revert: free "struct replay_opts" members
cat-file: fix a memory leak in --batch-command mode
merge-file: refactor for subsequent memory leak fix
merge-file: fix memory leaks on error path
checkout: avoid "struct unpack_trees_options" leak
gc: fix a memory leak
cat-file: fix a common "struct object_context" memory leak
pull: fix a "struct oid_array" memory leak
test-tool test-hash: fix a memory leak
test-tool path-utils: fix a memory leak
test-tool {dump,scrap}-cache-tree: fix memory leaks
test-tool urlmatch-normalization: fix a memory leak
test-tool regex: call regfree(), fix memory leaks
test-tool json-writer: fix memory leaks
test-tool bloom: fix memory leaks
test-tool ref-store: fix a memory leak
test-tool delta: fix a memory leak
Makefile: remove mandatory "spatch" arguments from SPATCH_FLAGS
Makefile & .gitignore: ignore & clean "git.res", not "*.res"
cocci: add a "coccicheck-test" target and test *.cocci rules
cocci: have "coccicheck{,-pending}" depend on "coccicheck-test"
cocci: add and apply a rule to find "unused" strbufs
cocci: generalize "unused" rule to cover more than "strbuf"
trace2: only include "fsync" events if we git_fsync()
test-lib: use $1, not $@ in test_known_broken_{ok,failure}_
test-lib: don't set GIT_EXIT_OK before calling test_atexit_handler
test-lib: fix GIT_EXIT_OK logic errors, use BAIL_OUT
test-lib: add a --invert-exit-code switch
t/README: reword the "GIT_TEST_PASSING_SANITIZE_LEAK" description
test-lib: add a SANITIZE=leak logging mode
t/Makefile: don't remove test-results in "clean-except-prove-cache"
tests: move copy/pasted PERL + Test::More checks to a lib-perl.sh
test-lib: simplify by removing test_external
test-lib: add a GIT_TEST_PASSING_SANITIZE_LEAK=check mode
test-lib: have the "check" mode for SANITIZE=leak consider leak logs
leak tests: don't skip some tests under SANITIZE=leak
leak tests: mark passing SANITIZE=leak tests as leak-free
upload-pack: fix a memory leak in create_pack_file()
CI: use "GIT_TEST_SANITIZE_LEAK_LOG=true" in linux-leaks
bisect.c: add missing "goto" for release_revisions()
test-fast-rebase helper: use release_revisions() (again)
log: fix a memory leak in "git show <revision>..."
log: refactor "rev.pending" code in cmd_show()
bisect.c: partially fix bisect_rev_setup() memory leak
revisions API: don't leak memory on argv elements that need free()-ing
help.c: refactor drop_prefix() to use a "switch" statement"
help.c: remove common category behavior from drop_prefix() behavior
git help doc: use "<doc>" instead of "<guide>"
git docs: add a category for user-facing file, repo and command UX
git docs: add a category for file formats, protocols and interfaces
docs: move commit-graph format docs to man section 5
docs: move protocol-related docs to man section 5
docs: move index format docs to man section 5
docs: move signature docs to man section 5
docs: move pack format docs to man section 5
docs: move cruft pack docs to gitformat-pack
docs: move http-protocol docs to man section 5
hook API: don't segfault on strbuf_addf() to NULL "out"
Makefile + hash.h: remove PPC_SHA1 implementation
Makefile: use $(OBJECTS) instead of $(C_OBJ)
git-compat-util.h: use "UNUSED", not "UNUSED(var)"
git-compat-util.h: use "deprecated" for UNUSED variables
submodule tests: test usage behavior
submodule tests: test for "add <repository> <abs-path>"
submodule--helper: remove unused "name" helper
submodule--helper: remove unused "list" helper
test-tool submodule-config: remove unused "--url" handling
submodule--helper: move "is-active" to a test-tool
submodule--helper: move "check-name" to a test-tool
submodule--helper: move "resolve-relative-url-test" to a test-tool
submodule--helper style: don't separate declared variables with \n\n
submodule--helper style: add \n\n after variable declarations
submodule--helper: replace memset() with { 0 }-initialization
submodule--helper: use xstrfmt() in clone_submodule()
submodule--helper: move "sb" in clone_submodule() to its own scope
submodule--helper: add "const" to passed "module_clone_data"
submodule--helper: add "const" to passed "struct update_data"
submodule--helper: don't redundantly check "else if (res)"
submodule--helper: rename "int res" to "int ret"
submodule--helper: return "ret", not "1" from update_submodule()
submodule--helper: add missing braces to "else" arm
submodule--helper: don't call submodule_strategy_to_string() in BUG()
submodule API: don't handle SM_..{UNSPECIFIED,COMMAND} in to_string()
submodule--helper: use "code" in run_update_command()
submodule--helper: don't exit() on failure, return
submodule--helper: libify determine_submodule_update_strategy()
submodule--helper: libify "must_die_on_failure" code paths
submodule--helper update: don't override 'checkout' exit code
submodule--helper: libify "must_die_on_failure" code paths (for die)
submodule--helper: check repo{_submodule,}_init() return values
submodule--helper: libify more "die" paths for module_update()
submodule--helper: libify even more "die" paths for module_update()
submodule--helper: fix bad config API usage
submodule--helper: fix a leak in "clone_submodule"
submodule--helper: fix trivial get_default_remote_submodule() leak
submodule--helper: fix most "struct pathspec" memory leaks
submodule--helper: "struct pathspec" memory leak in module_update()
submodule--helper: don't leak {run,capture}_command() cp.dir argument
submodule--helper: add and use *_release() functions
submodule--helper: fix "errmsg_str" memory leak
submodule--helper: fix "sm_path" and other "module_cb_list" leaks
submodule--helper: fix a leak with repo_clear()
submodule--helper: fix a memory leak in get_default_remote_submodule()
submodule--helper: fix "reference" leak
submodule--helper: fix obscure leak in module_add()
submodule--helper: fix a leak in module_add()
submodule--helper: fix a memory leak in print_status()
submodule--helper: free some "displaypath" in "struct update_data"
submodule--helper: free rest of "displaypath" in "struct update_data"
submodule--helper: fix a configure_added_submodule() leak
docs: add and use include template for config/* includes
grep docs: de-duplicate configuration sections
send-email docs: de-duplicate configuration sections
apply docs: de-duplicate configuration sections
notes docs: de-duplicate and combine configuration sections
difftool docs: de-duplicate configuration sections
log docs: de-duplicate configuration sections
docs: add CONFIGURATION sections that map to a built-in
docs: add CONFIGURATION sections that fuzzy map to built-ins
Øystein Walle (1):
rev-parse --parseopt: detect missing opt-spec
^ permalink raw reply [relevance 3%]
* [ANNOUNCE] Git v2.38.0-rc0
@ 2022-09-16 2:37 3% Junio C Hamano
0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2022-09-16 2:37 UTC (permalink / raw)
To: git
An early preview release Git v2.38.0-rc0 is now available for
testing at the usual places. It is comprised of 607 non-merge
commits since v2.37.0, contributed by 75 people, 21 of which are
new faces [*].
Since many contributors are travelling for Git Merge conference this
week, I do not expect a lot of activities around this one. Just
treat it as one of the normal updates to the tip of the 'master'
branch. The real fun will begin with -rc1, where we enter feature
freeze for the upcoming release, which is expected to happen mid
next week.
The tarballs are found at:
https://www.kernel.org/pub/software/scm/git/testing/
The following public repositories all have a copy of the
'v2.38.0-rc0' tag and the 'master' branch that the tag points at:
url = https://git.kernel.org/pub/scm/git/git
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.37.0 are as follows.
Welcome to the Git development community!
Andrew Olsen, Anthony Delannoy, Carlos López, Celeste Liu,
Cleber Rosa, David Plumpton, Eric DeCosta, Goss Geppert, Ilya
K, Ingy dot Net, Jacob Stopak, Julien Rouhaud, Kilian Kilger,
Lana Deere, Manuel Boni, Matthew Klein, Moritz Baumann, Pavel
Rappo, Pierre Garnier, Richard Oliver, and Xavier Morel.
Returning contributors who helped this release are as follows.
Thanks for your continued support.
Abhradeep Chakraborty, Ævar Arnfjörð Bjarmason, Arthur
Milchior, brian m. carlson, Calvin Wan, Carlo Marcelo Arenas
Belón, Christian Couder, Christoph Reiter, Derrick Stolee,
Dimitriy Ryazantcev, Đoàn Trần Công Danh, Elijah Newren,
Emily Shaffer, Eric Sunshine, Felipe Contreras, Fernando Ramos,
Glen Choo, Han Xin, Hariom Verma, Jacob Keller, Jaydeep Das,
Jeff King, Jiang Xin, Joey Hess, Johannes Schindelin, John Cai,
Jonathan Tan, Josh Steadmon, Junio C Hamano, Justin Donnelly,
Kyle Zhao, Lessley Dennington, Li Linchao, Linus Torvalds,
Martin Ågren, Matheus Tavares, Matthew John Cheetham, Michael
J Gruber, Øystein Walle, Philip Oakley, Philippe Blain, Phillip
Wood, Randall S. Becker, Renato Botelho, René Scharfe, Shaoxuan
Yuan, Siddharth Asthana, SZEDER Gábor, Tao Klerks, Taylor Blau,
Teng Long, Torsten Bögershausen, Victoria Dye, and ZheNing Hu.
[*] We are counting not just the authorship contribution but issue
reporting, mentoring, helping and reviewing that are recorded in
the commit trailers.
----------------------------------------------------------------
Git v2.38 Release Notes (draft)
===============================
UI, Workflows & Features
* "git remote show [-n] frotz" now pays attention to negative
pathspec.
* "git push" sometimes perform poorly when reachability bitmaps are
used, even in a repository where other operations are helped by
bitmaps. The push.useBitmaps configuration variable is introduced
to allow disabling use of reachability bitmaps only for "git push".
* "git grep -m<max-hits>" is a way to limit the hits shown per file.
* "git merge-tree" learned a new mode where it takes two commits and
computes a tree that would result in the merge commit, if the
histories leading to these two commits were to be merged.
* "git mv A B" in a sparsely populated working tree can be asked to
move a path between directories that are "in cone" (i.e. expected
to be materialized in the working tree) and "out of cone"
(i.e. expected to be hidden). The handling of such cases has been
improved.
* Earlier, HTTP transport clients learned to tell the server side
what locale they are in by sending Accept-Language HTTP header, but
this was done only for some requests but not others.
* Introduce a discovery.barerepository configuration variable that
allows users to forbid discovery of bare repositories.
* Various messages that come from the pack-bitmap codepaths have been
tweaked.
* "git rebase -i" learns to update branches whose tip appear in the
rebased range with "--update-refs" option.
* "git ls-files" learns the "--format" option to tweak its output.
* "git cat-file" learned an option to use the mailmap when showing
commit and tag objects.
* When "git merge" finds that it cannot perform a merge, it should
restore the working tree to the state before the command was
initiated, but in some corner cases it didn't.
* Operating modes like "--batch" of "git cat-file" command learned to
take NUL-terminated input, instead of one-item-per-line.
* "git rm" has become more aware of the sparse-index feature.
* "git rev-list --disk-usage" learned to take an optional value
"human" to show the reported value in human-readable format, like
"3.40MiB".
* The "diagnose" feature to create a zip archive for diagnostic
material has been lifted from "scalar" and made into a feature of
"git bugreport".
* The namespaces used by "log --decorate" from "refs/" hierarchy by
default has been tightened.
* "git rev-list --ancestry-path=C A..B" is a natural extension of
"git rev-list A..B"; instead of choosing a subset of A..B to those
that have ancestry relationship with A, it lets a subset with
ancestry relationship with C.
* "scalar" now enables built-in fsmonitor on enlisted repositories,
when able.
* The bash prompt (in contrib/) learned to optionally indicate when
the index is unmerged.
* "git clone" command learned the "--bundle-uri" option to coordinate
with hosting sites the use of pre-prepared bundle files.
* "git range-diff" learned to honor pathspec argument if given.
* "git format-patch --from=<ident>" can be told to add an in-body
"From:" line even for commits that are authored by the given
<ident> with "--force-in-body-from"option.
* The built-in fsmonitor refuses to work on a network mounted
repositories; a configuration knob for users to override this has
been introduced.
Performance, Internal Implementation, Development Support etc.
* Collection of what is referenced by objects in promisor packs have
been optimized to inspect these objects in the in-pack order.
* Introduce a helper to see if a branch is already being worked on
(hence should not be newly checked out in a working tree), which
performs much better than the existing find_shared_symref() to
replace many uses of the latter.
* Teach "git archive" to (optionally and then by default) avoid
spawning an external "gzip" process when creating ".tar.gz" (and
".tgz") archives.
* Allow large objects read from a packstream to be streamed into a
loose object file straight, without having to keep it in-core as a
whole.
* Further preparation to turn git-submodule.sh into a builtin
continues.
* Apply Coccinelle rule to turn raw memmove() into MOVE_ARRAY() cpp
macro, which would improve maintainability and readability.
* Teach "make all" to build gitweb as well.
* Tweak tests so that they still work when the "git init" template
did not create .git/info directory.
* Add Coccinelle rules to detect the pattern of initializing and then
finalizing a structure without using it in between at all, which
happens after code restructuring and the compilers fail to
recognize as an unused variable.
* The code to convert between GPG trust level strings and internal
constants we use to represent them have been cleaned up.
* Support for libnettle as SHA256 implementation has been added.
* The way "git multi-pack" uses parse-options API has been improved.
* A coccinelle rule (in contrib/) to encourage use of COPY_ARRAY
macro has been improved.
* API tweak to make it easier to run fuzz testing on commit-graph parser.
* Omit fsync-related trace2 entries when their values are all zero.
* The codepath to write multi-pack index has been taught to release a
large chunk of memory that holds an array of objects in the packs,
as soon as it is done with the array, to reduce memory consumption.
* Add a level of redirection to array allocation API in xdiff part,
to make it easier to share with the libgit2 project.
* "git fetch" client logs the partial clone filter used in the trace2
output.
* The "bundle URI" design gets documented.
* The common ancestor negotiation exchange during a "git fetch"
session now leaves trace log.
* Test portability improvements.
(merge 4d1d843be7 mt/rot13-in-c later to maint).
* The "subcommand" mode is introduced to parse-options API and update
the command line parser of Git commands with subcommands.
* The pack bitmap file gained a bitmap-lookup table to speed up
locating the necessary bitmap for a given commit.
* The assembly version of SHA-1 implementation for PPC has been
removed.
* The server side that responds to "git fetch" and "git clone"
request has been optimized by allowing it to send objects in its
object store without recomputing and validating the object names.
* Annotate function parameters that are not used (but cannot be
removed for structural reasons), to prepare us to later compile
with -Wunused warning turned on.
* Share the text used to explain configuration variables used by "git
<subcmd>" in "git help <subcmd>" with the text from "git help config".
Fixes since v2.37
-----------------
* Rewrite of "git add -i" in C that appeared in Git 2.25 didn't
correctly record a removed file to the index, which was fixed.
* Certain diff options are currently ignored when combined-diff is
shown; mark them as incompatible with the feature.
* Adjust technical/bitmap-format to be formatted by AsciiDoc, and
add some missing information to the documentation.
* Fixes for tests when the source directory has unusual characters in
its path, e.g. whitespaces, double-quotes, etc.
* "git mktree --missing" lazily fetched objects that are missing from
the local object store, which was totally unnecessary for the purpose
of creating the tree object(s) from its input.
* Give _() markings to fatal/warning/usage: labels that are shown in
front of these messages.
* References to commands-to-be-typed-literally in "git rebase"
documentation mark-up have been corrected.
* In a non-bare repository, the behavior of Git when the
core.worktree configuration variable points at a directory that has
a repository as its subdirectory, regressed in Git 2.27 days.
* Recent update to vimdiff layout code has been made more robust
against different end-user vim settings.
* Plug various memory leaks, both in the main code and in test-tool
commands.
* Fixes a long-standing corner case bug around directory renames in
the merge-ort strategy.
* The resolve-undo information in the index was not protected against
GC, which has been corrected.
* A corner case bug where lazily fetching objects from a promisor
remote resulted in infinite recursion has been corrected.
* "git clone" from a repository with some ref whose HEAD is unborn
did not set the HEAD in the resulting repository correctly, which
has been corrected.
* An earlier attempt to plug leaks placed a clean-up label to jump to
at a bogus place, which as been corrected.
* Variable quoting fix in the vimdiff driver of "git mergetool"
* "git shortlog -n" relied on the underlying qsort() to be stable,
which shouldn't have. Fixed.
* A fix for a regression in test framework.
* mkstemp() emulation on Windows has been improved.
* Add missing documentation for "include" and "includeIf" features in
"git config" file format, which incidentally teaches the command
line completion to include them in its offerings.
* Avoid "white/black-list" in documentation and code comments.
* Workaround for a compiler warning against use of die() in
osx-keychain (in contrib/).
* Workaround for a false positive compiler warning.
* "git p4" working on UTF-16 files on Windows did not implement
CRLF-to-LF conversion correctly, which has been corrected.
* "git p4" did not handle non-ASCII client name well, which has been
corrected.
* "rerere-train" script (in contrib/) used to honor commit.gpgSign
while recreating the throw-away merges.
* "git checkout" miscounted the paths it updated, which has been
corrected.
* Fix for a bug that makes write-tree to fail to write out a
non-existent index as a tree, introduced in 2.37.
* There was a bug in the codepath to upgrade generation information
in commit-graph from v1 to v2 format, which has been corrected.
* Gitweb had legacy URL shortener that is specific to the way
projects hosted on kernel.org used to (but no longer) work, which
has been removed.
* Fix build procedure for Windows that uses CMake so that it can pick
up the shell interpreter from local installation location.
* Conditionally allow building Python interpreter on Windows
* Fix to lstat() emulation on Windows.
* Older gcc with -Wall complains about the universal zero initializer
"struct s = { 0 };" idiom, which makes developers' lives
inconvenient (as -Werror is enabled by DEVELOPER=YesPlease). The
build procedure has been tweaked to help these compilers.
* Plug memory leaks in the failure code path in the "merge-ort" merge
strategy backend.
* "git symbolic-ref symref non..sen..se" is now diagnosed as an error.
* A follow-up fix to a fix for a regression in 2.36 around hooks.
* Avoid repeatedly running getconf to ask libc version in the test
suite, and instead just as it once per script.
* Platform-specific code that determines if a directory is OK to use
as a repository has been taught to report more details, especially
on Windows.
* "vimdiff3" regression fix.
* "git fsck" reads mode from tree objects but canonicalizes the mode
before passing it to the logic to check object sanity, which has
hid broken tree objects from the checking logic. This has been
corrected, but to help exiting projects with broken tree objects
that they cannot fix retroactively, the severity of anomalies this
code detects has been demoted to "info" for now.
* Fixes to sparse index compatibility work for "reset" and "checkout"
commands.
* An earlier optimization discarded a tree-object buffer that is
still in use, which has been corrected.
(merge 1490d7d82d jk/is-promisor-object-keep-tree-in-use later to maint).
* Fix deadlocks between main Git process and subprocess spawned via
the pipe_command() API, that can kill "git add -p" that was
reimplemented in C recently.
(merge 716c1f649e jk/pipe-command-nonblock later to maint).
* The sequencer machinery translated messages left in the reflog by
mistake, which has been corrected.
* xcalloc(), imitating calloc(), takes "number of elements of the
array", and "size of a single element", in this order. A call that
does not follow this ordering has been corrected.
(merge c4bbd9bb8f sg/xcalloc-cocci-fix later to maint).
* The preload-index codepath made copies of pathspec to give to
multiple threads, which were left leaked.
(merge 23578904da ad/preload-plug-memleak later to maint).
* Update the version of Ubuntu used for GitHub Actions CI from 18.04
to 22.04.
(merge ef46584831 ds/github-actions-use-newer-ubuntu later to maint).
* The auto-stashed local changes created by "git merge --autostash"
was mixed into a conflicted state left in the working tree, which
has been corrected.
(merge d3a9295ada en/merge-unstash-only-on-clean-merge later to maint).
* Multi-pack index got corrupted when preferred pack changed from one
pack to another in a certain way, which has been corrected.
(merge 99e4d084ff tb/midx-with-changing-preferred-pack-fix later to maint).
* The clean-up of temporary files created via mks_tempfile_dt() was
racy and attempted to unlink() the leading directory when signals
are involved, which has been corrected.
(merge babe2e0559 rs/tempfile-cleanup-race-fix later to maint).
* FreeBSD portability fix for "git maintenance" that spawns "crontab"
to schedule tasks.
(merge ee69e7884e bc/gc-crontab-fix later to maint).
* Those who use diff-so-fancy as the diff-filter noticed a regression
or two in the code that parses the diff output in the built-in
version of "add -p", which has been corrected.
(merge 0a101676e5 js/add-p-diff-parsing-fix later to maint).
* Segfault fix-up to an earlier fix to the topic to teach "git reset"
and "git checkout" work better in a sparse checkout.
(merge 037f8ea6d9 vd/sparse-reset-checkout-fixes later to maint).
* "git diff --no-index A B" managed its the pathnames of its two
input files rather haphazardly, sometimes leaking them. The
command line argument processing has been straightened out to clean
it up.
(merge 2b43dd0eb5 rs/diff-no-index-cleanup later to maint).
* "git rev-list --verify-objects" ought to inspect the contents of
objects and notice corrupted ones, but it didn't when the commit
graph is in use, which has been corrected.
(merge b27ccae34b jk/rev-list-verify-objects-fix later to maint).
* More fixes to "add -p"
(merge 64ec8efb83 js/builtin-add-p-portability-fix later to maint).
* The parser in the script interface to parse-options in "git
rev-parse" has been updated to diagnose a bogus input correctly.
(merge f20b9c36d0 ow/rev-parse-parseopt-fix later to maint).
* The code that manages list-object-filter structure, used in partial
clones, leaked the instances, which has been plugged.
(merge 66eede4a37 jk/plug-list-object-filter-leaks later to maint).
* Fix another UI regression in the reimplemented "add -p".
(merge f6f0ee247f rs/add-p-worktree-mode-prompt-fix later to maint).
* "git fetch" over protocol v2 sent an incorrect ref prefix request
to the server and made "git pull" with configured fetch refspec
that does not cover the remote branch to merge with fail, which has
been corrected.
(merge 49ca2fba39 jk/proto-v2-ref-prefix-fix later to maint).
* Other code cleanup, docfix, build fix, etc.
(merge 77b9e85c0f vd/fix-perf-tests later to maint).
(merge 0682bc43f5 jk/test-crontab-fixes later to maint).
(merge b46dd1726c cc/doc-trailer-whitespace-rules later to maint).
----------------------------------------------------------------
Changes since v2.37.0 are as follows:
Abhradeep Chakraborty (9):
bitmap-format.txt: feed the file to asciidoc to generate html
bitmap-format.txt: fix some formatting issues
bitmap-format.txt: add information for trailing checksum
Documentation/technical: describe bitmap lookup table extension
bitmap: move `get commit positions` code to `bitmap_writer_finish`
pack-bitmap-write.c: write lookup table extension
pack-bitmap-write: learn pack.writeBitmapLookupTable and add tests
pack-bitmap: prepare to read lookup table extension
bitmap-lookup-table: add performance tests for lookup table
Anthony Delannoy (1):
preload-index: fix memleak
Calvin Wan (1):
submodule merge: update conflict error message
Carlo Marcelo Arenas Belón (2):
setup: tighten ownership checks post CVE-2022-24765
cmake: support local installations of git
Carlos López (1):
grep: add --max-count command line option
Celeste Liu (1):
contrib/rerere-train: avoid useless gpg sign in training
Christian Couder (1):
Documentation: clarify whitespace rules for trailers
Cleber Rosa (1):
setup: fix function name in a BUG() message
Derrick Stolee (50):
branch: add branch_checked_out() helper
branch: check for bisects and rebases
fetch: use new branch_checked_out() and add tests
branch: use branch_checked_out() when deleting refs
branch: fix branch_checked_out() leaks
t5510: replace 'origin' with URL more carefully
vscode: improve tab size and wrapping
git-rebase.txt: use back-ticks consistently
pack-bitmap-write: use const for hashes
midx: extract bitmap write setup
midx: reduce memory pressure while writing bitmaps
daemon: clarify directory arguments
git-cvsserver: clarify directory list
git.txt: remove redundant language
t: avoid "whitelist"
transport.c: avoid "whitelist"
t2407: test bisect and rebase as black-boxes
t2407: test branches currently using apply backend
branch: consider refs under 'update-refs'
rebase-interactive: update 'merge' description
sequencer: define array with enum values
sequencer: add update-ref command
rebase: add --update-refs option
rebase: update refs from 'update-ref' commands
sequencer: rewrite update-refs as user edits todo list
rebase: add rebase.updateRefs config option
sequencer: ignore HEAD ref under --update-refs
sequencer: notify user of --update-refs activity
compat/win32: correct for incorrect compiler warning
refs: allow "HEAD" as decoration filter
t4207: modernize test
t4207: test coloring of grafted decorations
refs: add array of ref namespaces
refs: use ref_namespaces for replace refs base
log-tree: use ref_namespaces instead of if/else-if
log: add default decoration filter
log: add --clear-decorations option
log: create log.initialDecorationSet=all
maintenance: stop writing log.excludeDecoration
fetch: use ref_namespaces during prefetch
docs: document bundle URI standard
bundle-uri: add example bundle organization
remote-curl: add 'get' capability
bundle-uri: create basic file-copy logic
clone: add --bundle-uri option
bundle-uri: add support for http(s):// and file://
clone: --bundle-uri cannot be combined with --depth
t6019: modernize tests with helper
clone: warn on failure to repo_init()
ci: update 'static-analysis' to Ubuntu 22.04
Dimitriy Ryazantcev (1):
i18n: mark message helpers prefix for translation
Elijah Newren (43):
merge-tree: rename merge_trees() to trivial_merge_trees()
merge-tree: move logic for existing merge into new function
merge-tree: add option parsing and initial shell for real merge function
merge-tree: implement real merges
merge-ort: split out a separate display_update_messages() function
merge-tree: support including merge messages in output
merge-ort: provide a merge_get_conflicted_files() helper function
merge-ort: remove command-line-centric submodule message from merge-ort
merge-tree: provide a list of which files have conflicts
merge-tree: provide easy access to `ls-files -u` style info
merge-ort: store more specific conflict information
merge-ort: optionally produce machine-readable output
merge-tree: allow `ls-files -u` style info to be NUL terminated
merge-tree: add a --allow-unrelated-histories flag
git-merge-tree.txt: add a section on potentional usage mistakes
t6429: fix use of non-existent function
t6423: add tests of dual directory rename plus add/add conflict
merge-ort: small cleanups of check_for_directory_rename
merge-ort: make a separate function for freeing struct collisions
merge-ort: shuffle the computation and cleanup of potential collisions
merge-ort: fix issue with dual rename and add/add conflict
merge-ort-wrappers: make printed message match the one from recursive
merge-resolve: abort if index does not match HEAD
merge: abort if index does not match HEAD for trivial merges
merge: do not abort early if one strategy fails to handle the merge
merge: fix save_state() to work when there are stat-dirty files
merge: make restore_state() restore staged state too
merge: ensure we can actually restore pre-merge state
merge: do not exit restore_state() prematurely
merge-ort: remove translator lego in new "submodule conflict suggestion"
merge-ort: avoid surprise with new sub_flag variable
merge-ort: provide helpful submodule update message when possible
merge-ort: remove code obsoleted by other changes
rev-list-options.txt: fix simple typo
revision: allow --ancestry-path to take an argument
merge: only apply autostash when appropriate
merge: cleanup confusing logic for handling successful merges
merge: small code readability improvement
t4301: add more interesting merge-tree testcases
t64xx: convert 'test_create_repo' to 'git init'
diff: have submodule_format logic avoid additional diff headers
diff: fix filtering of additional headers under --remerge-diff
diff: fix filtering of merge commits under --remerge-diff
Eric DeCosta (1):
fsmonitor: option to allow fsmonitor to run against network-mounted repos
Eric Sunshine (6):
t2407: fix broken &&-chains in compound statement
t1092: fix buggy sparse "blame" test
t: detect and signal failure within loop
t4301: account for behavior differences between sed implementations
t4301: fix broken &&-chains and add missing loop termination
t4301: emit blank line in more idiomatic fashion
Felipe Contreras (7):
mergetools: vimdiff: fix comment
mergetools: vimdiff: make vimdiff3 actually work
mergetools: vimdiff: silence annoying messages
mergetools: vimdiff: fix for diffopt
mergetools: vimdiff: rework tab logic
mergetools: vimdiff: fix single window layouts
mergetools: vimdiff: simplify tabfirst
Fernando Ramos (1):
vimdiff: make layout engine more robust against user vim settings
Glen Choo (16):
submodule--helper: eliminate internal "--update" option
submodule--helper tests: add missing "display path" coverage
submodule--helper update: use display path helper
submodule--helper: don't recreate recursive prefix
submodule--helper: use correct display path helper
submodule--helper update: use --super-prefix
submodule--helper: remove display path helper
Documentation/git-config.txt: add SCOPES section
Documentation: define protected configuration
config: learn `git_protected_config()`
safe.directory: use git_protected_config()
setup.c: create `safe.bareRepository`
config.c: NULL check when reading protected config
Documentation/git-reflog: remove unneeded \ from \{
submodule--helper: add "const" to copy of "update_data"
submodule--helper: refactor "errmsg_str" to be a "struct strbuf"
Goss Geppert (2):
dir: traverse into repository
dir: minor refactoring / clean-up
Han Xin (6):
unpack-objects: low memory footprint for get_data() in dry_run mode
object-file.c: refactor write_loose_object() to several steps
object-file.c: add "stream_loose_object()" to handle large object
unpack-objects: use stream_loose_object() to unpack large objects
commit-graph.c: no lazy fetch in lookup_commit_in_graph()
t5330: remove run_with_limited_processses()
Jacob Keller (1):
remote: handle negative refspecs in git remote show
Jacob Stopak (1):
Documentation: fix various repeat word typos
Jaydeep Das (1):
gpg-interface: add function for converting trust level to string
Jeff King (59):
is_promisor_object(): walk promisor packs in pack-order
fetch: stop passing around unused worktrees variable
branch: drop unused worktrees variable
revisions.txt: escape "..." to avoid asciidoc horizontal ellipsis
clone: drop extra newline from warning message
clone: propagate empty remote HEAD even with other branches
clone: use remote branch if it matches default HEAD
clone: move unborn head creation to update_head()
ref-filter: disable save_commit_buffer while traversing
diff-files: move misplaced cleanup label
write_midx_bitmap(): drop unused refs_snapshot parameter
config.mak.dev: squelch -Wno-missing-braces for older gcc
tree-walk: add a mechanism for getting non-canonicalized modes
fsck: actually detect bad file modes in trees
fsck: downgrade tree badFilemode to "info"
is_promisor_object(): fix use-after-free of tree buffer
compat: add function to enable nonblocking pipes
git-compat-util: make MAX_IO_SIZE define globally available
pipe_command(): avoid xwrite() for writing to pipe
pipe_command(): handle ENOSPC when writing to a pipe
pipe_command(): mark stdin descriptor as non-blocking
git-compat-util: add UNUSED macro
refs: mark unused each_ref_fn parameters
refs: mark unused reflog callback parameters
refs: mark unused virtual method parameters
transport: mark bundle transport_options as unused
streaming: mark unused virtual method parameters
config: mark unused callback parameters
hashmap: mark unused callback parameters
mark unused read_tree_recursive() callback parameters
run-command: mark unused async callback parameters
is_path_owned_by_current_uid(): mark "report" parameter as unused
xdiff: drop unused mmfile parameters from xdl_do_histogram_diff()
log-tree: drop unused commit param in remerge_diff()
match_pathname(): drop unused "flags" parameter
verify_one_sparse(): drop unused parameters
reftable: drop unused parameter from reader_seek_linear()
reflog: assert PARSE_OPT_NONEG in parse-options callbacks
xdiff: drop unused mmfile parameters from xdl_do_patience_diff()
pass subcommand "prefix" arguments to parse_options()
maintenance: add parse-options boilerplate for subcommands
remote: run "remote rm" argv through parse_options()
pack-bitmap-write: drop unused pack_idx_entry parameters
tempfile: drop active flag
tempfile: update comment describing state transitions
test-crontab: minor memory and error handling fixes
lookup_commit_in_graph(): use prepare_commit_graph() to check for graph
rev-list: disable commit graph with --verify-objects
parse_object(): allow skipping hash check
upload-pack: skip parse-object re-hashing of "want" objects
parse_object(): check commit-graph when skip_hash set
t1060: check partial clone of misnamed blob
list_objects_filter_copy(): deep-copy sparse_oid_name field
transport: deep-copy object-filter struct for fetch-pack
transport: free filter options in disconnect_git()
list_objects_filter_options: plug leak of filter_spec strings
prepare_repo_settings(): plug leak of config values
fetch: stop checking for NULL transport->remote in do_fetch()
fetch: add branch.*.merge to default ref-prefix extension
Johannes Schindelin (36):
merge-ort: store messages in a list, not in a single strbuf
merge-ort: make `path_messages` a strmap to a string_list
Git 2.30.5
Git 2.31.4
Git 2.32.3
Git 2.33.4
Git 2.34.4
Git 2.35.4
Git 2.36.2
add --interactive: allow `update` to stage deleted files
tests: fix incorrect --write-junit-xml code
mergetool(vimdiff): allow paths to contain spaces again
shortlog: use a stable sort
t5351: avoid relying on `core.fsyncMethod = batch` to be supported
t5351: avoid using `test_cmp` for binary data
windows: include the Python bits when building Git for Windows
mingw: remove unneeded `NO_GETTEXT` directive
mingw: remove unneeded `NO_CURL` directive
lstat(mingw): correctly detect ENOTDIR scenarios
merge-ort: clean up after failed merge
merge-ort: do leave trace2 region even if checkout fails
setup: fix some formatting
setup: prepare for more detailed "dubious ownership" messages
mingw: provide details about unsafe directories' ownership
mingw: be more informative when ownership check fails on FAT32
mingw: handle a file owned by the Administrators group correctly
scalar unregister: stop FSMonitor daemon
range-diff: reorder argument handling
range-diff: consistently validate the arguments
range-diff: optionally accept pathspecs
add -p: avoid ambiguous signed/unsigned comparison
t3701: test the built-in `add -i` regardless of NO_PERL
t6132(NO_PERL): do not run the scripted `add -p`
add -p: detect more mismatches between plain vs colored diffs
add -p: gracefully handle unparseable hunk headers in colored diffs
add -p: ignore dirty submodules
Jonathan Tan (1):
fetch-pack: write effective filter to trace2
Josh Steadmon (1):
fetch-pack: add tracing for negotiation rounds
Julien Rouhaud (1):
gitweb: remove title shortening heuristics
Junio C Hamano (40):
revision: mark blobs needed for resolve-undo as reachable
A regression fix for 2.37
Git 2.37.1
builtin/mv.c: use the MOVE_ARRAY() macro instead of memmove()
The first batch after Git 2.37
fsck: do not dereference NULL while checking resolve-undo data
The second batch
The third batch
The fourth batch
The fifth batch
builtin/remote.c: use the right kind of STRING_LIST_INIT
The sixth batch
The seventh batch
Downmerge a handful of fixes for 2.37.x maintenance track
The eighth batch
The ninth batch
doc: consolidate --rerere-autoupdate description
doc: clarify rerere-autoupdate
Downmerge a bit more for 2.37.x
The tenth batch
The eleventh batch
Git 2.37.2
The twelfth batch
The thirteenth batch
The fourteenth batch
t5329: notice a failure within a loop
The fifteenth batch
A handful more topics from the 'master' front for 2.37.3
pretty: separate out the logic to decide the use of in-body from
format-patch: allow forcing the use of in-body From: header
format-patch: learn format.forceInBodyFrom configuration variable
The sixteenth batch
Git 2.37.3
The seventeenth batch
The eighteenth batch
The nineteenth batch
The twentieth batch
Merge a handful of topics from the 'master' front
Prepare for 2.38-rc0
Git 2.38-rc0
Justin Donnelly (1):
git-prompt: show presence of unresolved conflicts at command prompt
Kilian Kilger (2):
git-p4: fix bug with encoding of p4 client name
git-p4: refactoring of p4CmdList()
Kyle Zhao (1):
send-pack.c: add config push.useBitmaps
Lessley Dennington (1):
osx-keychain: fix compiler warning
Li Linchao (3):
ls-files: update test style
remote-curl: send Accept-Language header to server
rev-list: support human-readable output for `--disk-usage`
Linus Torvalds (1):
symbolic-ref: refuse to set syntactically invalid target
Manuel Boni (1):
config.txt: document include, includeIf
Martin Ågren (3):
config/core.txt: fix minor issues for `core.sparseCheckoutCone`
t4200: drop irrelevant code
read-cache: make `do_read_index()` always set up `istate->repo`
Matheus Tavares (7):
checkout: document bug where delayed checkout counts entries twice
checkout: show bug about failed entries being included in final report
checkout: fix two bugs on the final count of updated entries
pkt-line.h: move comment closer to the associated code
t0021: avoid grepping for a Perl-specific string at filter output
t0021: implementation the rot13-filter.pl script in C
tests: use the new C rot13-filter helper to avoid PERL prereq
Matthew John Cheetham (1):
scalar: enable built-in FSMonitor on `register`
Michael J Gruber (3):
sequencer: do not translate reflog messages
sequencer: do not translate parameters to error_resolve_conflict()
sequencer: do not translate command names
Moritz Baumann (3):
git-p4: fix CR LF handling for utf16 files
git-p4: fix typo in P4Submit.applyCommit()
git-p4: fix error handling in P4Unshelve.renameBranch()
Philip Oakley (1):
doc add: renormalize is not idempotent for CRCRLF
Philippe Blain (3):
diff-format.txt: dst can be 0* SHA-1 when path is deleted, too
diff-format.txt: correct misleading wording
diff-index.txt: update raw output format in examples
Phillip Wood (5):
xdiff: introduce XDL_ALLOC_ARRAY()
xdiff: introduce xdl_calloc
xdiff: introduce XDL_CALLOC_ARRAY()
xdiff: introduce XDL_ALLOC_GROW()
tests: cache glibc version check
René Scharfe (28):
archive: update format documentation
archive: rename archiver data field to filter_command
archive-tar: factor out write_block()
archive-tar: add internal gzip implementation
archive-tar: use OS_CODE 3 (Unix) for internal gzip
archive-tar: use internal gzip by default
combine-diff: abort if --ignore-matching-lines is given
combine-diff: abort if --output is given
cocci: avoid normalization rules for memcpy
mingw: avoid mktemp() in mkstemp() implementation
mergesort: unify ranks loops
mergesort: tighten merge loop
mergesort: add macros for typed sort of linked lists
test-mergesort: use DEFINE_LIST_SORT_DEBUG
test-mergesort: use DEFINE_LIST_SORT
blame: use DEFINE_LIST_SORT
commit: use DEFINE_LIST_SORT
fetch-pack: use DEFINE_LIST_SORT
packfile: use DEFINE_LIST_SORT
mergesort: remove llist_mergesort()
nonblock: support Windows
tempfile: avoid directory cleanup race
test-mergesort: read sort input all at once
test-mergesort: use mem_pool for sort input
diff-no-index: release strbuf on queue error
diff-no-index: release prefixed filenames
diff-no-index: simplify argv index calculation
add -p: fix worktree patch mode prompts
Richard Oliver (1):
mktree: do not check type of remote objects
SZEDER Gábor (29):
Makefile: build 'gitweb' in the default target
multi-pack-index: simplify handling of unknown --options
index-format.txt: remove outdated list of supported extensions
git.c: update NO_PARSEOPT markings
t3301-notes.sh: check that default operation mode doesn't take arguments
t5505-remote.sh: check the behavior without a subcommand
t0040-parse-options: test parse_options() with various 'parse_opt_flags'
api-parse-options.txt: fix description of OPT_CMDMODE
parse-options: PARSE_OPT_KEEP_UNKNOWN only applies to --options
parse-options: clarify the limitations of PARSE_OPT_NODASH
parse-options: drop leading space from '--git-completion-helper' output
parse-options: add support for parsing subcommands
builtin/bundle.c: let parse-options parse subcommands
builtin/commit-graph.c: let parse-options parse subcommands
builtin/gc.c: let parse-options parse 'git maintenance's subcommands
builtin/hook.c: let parse-options parse subcommands
builtin/multi-pack-index.c: let parse-options parse subcommands
builtin/notes.c: let parse-options parse subcommands
builtin/reflog.c: let parse-options parse subcommands
builtin/remote.c: let parse-options parse subcommands
builtin/sparse-checkout.c: let parse-options parse subcommands
builtin/stash.c: let parse-options parse subcommands
builtin/worktree.c: let parse-options parse subcommands
promisor-remote: fix xcalloc() argument order
t0040-parse-options: remove leftover debugging
test-parse-options.c: don't use for loop initial declaration
test-parse-options.c: fix style of comparison with zero
notes: simplify default operation mode arguments check
notes, remote: show unknown subcommands between `'
Shaoxuan Yuan (12):
t7002: add tests for moving out-of-cone file/directory
t1092: mv directory from out-of-cone to in-cone
mv: update sparsity after moving from out-of-cone to in-cone
mv: decouple if/else-if checks using goto
mv: check if out-of-cone file exists in index with SKIP_WORKTREE bit
mv: check if <destination> exists in index to handle overwriting
mv: use flags mode for update_mode
mv: add check_dir_in_index() and solve general dir check issue
t1092: add tests for `git-rm`
pathspec.h: move pathspec_needs_expanded_index() from reset.c to here
rm: expand the index only when necessary
rm: integrate with sparse-index
Siddharth Asthana (4):
revision: improve commit_rewrite_person()
ident: move commit_rewrite_person() to ident.c
ident: rename commit_rewrite_person() to apply_mailmap_to_header()
cat-file: add mailmap support
Tao Klerks (1):
rev-parse: documentation adjustment - mention remote tracking with @{u}
Taylor Blau (14):
pack-objects.h: remove outdated pahole results
commit-graph: pass repo_settings instead of repository
t5318: demonstrate commit-graph generation v2 corruption
commit-graph: introduce `repo_find_commit_pos_in_graph()`
commit-graph: fix corrupt upgrade from generation v1 to v2
t1006: extract --batch-command inputs to variables
builtin/cat-file.c: support NUL-delimited input with `-z`
t5326: demonstrate potential bitmap corruption
t/lib-bitmap.sh: avoid silencing stderr
midx.c: extract `struct midx_fanout`
midx.c: extract `midx_fanout_add_midx_fanout()`
midx.c: extract `midx_fanout_add_pack_fanout()`
midx.c: include preferred pack correctly with existing MIDX
midx.c: avoid adding preferred objects twice
Teng Long (8):
pack-bitmap.c: fix formatting of error messages
pack-bitmap.c: mark more strings for translations
pack-bitmap.c: rename "idx_name" to "bitmap_name"
pack-bitmap.c: do not ignore error when opening a bitmap file
pack-bitmap.c: using error() instead of silently returning -1
pack-bitmap.c: continue looping when first MIDX bitmap is found
api-trace2.txt: print config key-value pair
tr2: shows scope unconditionally in addition to key-value pair
Victoria Dye (26):
scalar: reword command documentation to clarify purpose
scalar: convert README.md into a technical design doc
checkout: fix nested sparse directory diff in sparse index
oneway_diff: handle removed sparse directories
cache.h: create 'index_name_pos_sparse()'
unpack-trees: unpack new trees as sparse directories
scalar-diagnose: use "$GIT_UNZIP" in test
scalar-diagnose: avoid 32-bit overflow of size_t
scalar-diagnose: add directory to archiver more gently
scalar-diagnose: move 'get_disk_info()' to 'compat/'
scalar-diagnose: move functionality to common location
diagnose.c: add option to configure archive contents
builtin/diagnose.c: create 'git diagnose' builtin
builtin/diagnose.c: add '--mode' option
builtin/bugreport.c: create '--diagnose' option
scalar-diagnose: use 'git diagnose --mode=all'
scalar: update technical doc roadmap
scalar: constrain enlistment search
scalar-unregister: handle error codes greater than 0
scalar-[un]register: clearly indicate source of error
scalar-delete: do not 'die()' in 'delete_enlistment()'
scalar: move config setting logic into its own function
scalar: update technical doc roadmap with FSMonitor support
p0004: fix prereq declaration
p0006: fix 'read-tree' argument ordering
unpack-trees: fix sparse directory recursion check
ZheNing Hu (1):
ls-files: introduce "--format" option
brian m. carlson (2):
sha256: add support for Nettle
gc: use temporary file for editing crontab
Ævar Arnfjörð Bjarmason (153):
t0008: don't rely on default ".git/info/exclude"
tests: don't depend on template-created .git/branches
tests: don't assume a .git/info for .git/info/grafts
tests: don't assume a .git/info for .git/info/attributes
tests: don't assume a .git/info for .git/info/refs
tests: don't assume a .git/info for .git/info/exclude
tests: don't assume a .git/info for .git/info/sparse-checkout
object-file.c: factor out deflate part of write_loose_object()
core doc: modernize core.bigFileThreshold documentation
git-submodule.sh: remove unused sanitize_submodule_env()
git-submodule.sh: remove unused $prefix variable
git-submodule.sh: make the "$cached" variable a boolean
git-submodule.sh: remove unused top-level "--branch" argument
submodule--helper: have --require-init imply --init
submodule update: remove "-v" option
submodule--helper: rename "absorb-git-dirs" to "absorbgitdirs"
submodule--helper: report "submodule" as our name in some "-h" output
submodule--helper: understand --checkout, --merge and --rebase synonyms
git-submodule.sh: use "$quiet", not "$GIT_QUIET"
git-sh-setup.sh: remove "say" function, change last users
gitweb/Makefile: define all .PHONY prerequisites inline
gitweb/Makefile: add a $(GITWEB_ALL) variable
gitweb/Makefile: clear up and de-duplicate the gitweb.{css,js} vars
gitweb/Makefile: prepare to merge into top-level Makefile
gitweb: remove "test" and "test-installed" targets
gitweb/Makefile: include in top-level Makefile
gitweb/Makefile: add a "NO_GITWEB" parameter
tests: add missing double quotes to included library paths
test-lib.sh: fix prepend_var() quoting issue
config tests: fix harmless but broken "rm -r" cleanup
submodule--helper: remove unused SUPPORT_SUPER_PREFIX flags
check-ref-format: fix trivial memory leak
clone: fix memory leak in wanted_peer_refs()
submodule.c: free() memory from xgetcwd()
revert: free "struct replay_opts" members
cat-file: fix a memory leak in --batch-command mode
merge-file: refactor for subsequent memory leak fix
merge-file: fix memory leaks on error path
checkout: avoid "struct unpack_trees_options" leak
gc: fix a memory leak
cat-file: fix a common "struct object_context" memory leak
pull: fix a "struct oid_array" memory leak
test-tool test-hash: fix a memory leak
test-tool path-utils: fix a memory leak
test-tool {dump,scrap}-cache-tree: fix memory leaks
test-tool urlmatch-normalization: fix a memory leak
test-tool regex: call regfree(), fix memory leaks
test-tool json-writer: fix memory leaks
test-tool bloom: fix memory leaks
test-tool ref-store: fix a memory leak
test-tool delta: fix a memory leak
Makefile: remove mandatory "spatch" arguments from SPATCH_FLAGS
Makefile & .gitignore: ignore & clean "git.res", not "*.res"
cocci: add a "coccicheck-test" target and test *.cocci rules
cocci: have "coccicheck{,-pending}" depend on "coccicheck-test"
cocci: add and apply a rule to find "unused" strbufs
cocci: generalize "unused" rule to cover more than "strbuf"
trace2: only include "fsync" events if we git_fsync()
test-lib: use $1, not $@ in test_known_broken_{ok,failure}_
test-lib: don't set GIT_EXIT_OK before calling test_atexit_handler
test-lib: fix GIT_EXIT_OK logic errors, use BAIL_OUT
test-lib: add a --invert-exit-code switch
t/README: reword the "GIT_TEST_PASSING_SANITIZE_LEAK" description
test-lib: add a SANITIZE=leak logging mode
t/Makefile: don't remove test-results in "clean-except-prove-cache"
tests: move copy/pasted PERL + Test::More checks to a lib-perl.sh
test-lib: simplify by removing test_external
test-lib: add a GIT_TEST_PASSING_SANITIZE_LEAK=check mode
test-lib: have the "check" mode for SANITIZE=leak consider leak logs
leak tests: don't skip some tests under SANITIZE=leak
leak tests: mark passing SANITIZE=leak tests as leak-free
upload-pack: fix a memory leak in create_pack_file()
CI: use "GIT_TEST_SANITIZE_LEAK_LOG=true" in linux-leaks
bisect.c: add missing "goto" for release_revisions()
test-fast-rebase helper: use release_revisions() (again)
log: fix a memory leak in "git show <revision>..."
log: refactor "rev.pending" code in cmd_show()
bisect.c: partially fix bisect_rev_setup() memory leak
revisions API: don't leak memory on argv elements that need free()-ing
help.c: refactor drop_prefix() to use a "switch" statement"
help.c: remove common category behavior from drop_prefix() behavior
git help doc: use "<doc>" instead of "<guide>"
git docs: add a category for user-facing file, repo and command UX
git docs: add a category for file formats, protocols and interfaces
docs: move commit-graph format docs to man section 5
docs: move protocol-related docs to man section 5
docs: move index format docs to man section 5
docs: move signature docs to man section 5
docs: move pack format docs to man section 5
docs: move cruft pack docs to gitformat-pack
docs: move http-protocol docs to man section 5
hook API: don't segfault on strbuf_addf() to NULL "out"
Makefile + hash.h: remove PPC_SHA1 implementation
Makefile: use $(OBJECTS) instead of $(C_OBJ)
git-compat-util.h: use "UNUSED", not "UNUSED(var)"
git-compat-util.h: use "deprecated" for UNUSED variables
submodule tests: test usage behavior
submodule tests: test for "add <repository> <abs-path>"
submodule--helper: remove unused "name" helper
submodule--helper: remove unused "list" helper
test-tool submodule-config: remove unused "--url" handling
submodule--helper: move "is-active" to a test-tool
submodule--helper: move "check-name" to a test-tool
submodule--helper: move "resolve-relative-url-test" to a test-tool
submodule--helper style: don't separate declared variables with \n\n
submodule--helper style: add \n\n after variable declarations
submodule--helper: replace memset() with { 0 }-initialization
submodule--helper: use xstrfmt() in clone_submodule()
submodule--helper: move "sb" in clone_submodule() to its own scope
submodule--helper: add "const" to passed "module_clone_data"
submodule--helper: add "const" to passed "struct update_data"
submodule--helper: don't redundantly check "else if (res)"
submodule--helper: rename "int res" to "int ret"
submodule--helper: return "ret", not "1" from update_submodule()
submodule--helper: add missing braces to "else" arm
submodule--helper: don't call submodule_strategy_to_string() in BUG()
submodule API: don't handle SM_..{UNSPECIFIED,COMMAND} in to_string()
submodule--helper: use "code" in run_update_command()
submodule--helper: don't exit() on failure, return
submodule--helper: libify determine_submodule_update_strategy()
submodule--helper: libify "must_die_on_failure" code paths
submodule--helper update: don't override 'checkout' exit code
submodule--helper: libify "must_die_on_failure" code paths (for die)
submodule--helper: check repo{_submodule,}_init() return values
submodule--helper: libify more "die" paths for module_update()
submodule--helper: libify even more "die" paths for module_update()
submodule--helper: fix bad config API usage
submodule--helper: fix a leak in "clone_submodule"
submodule--helper: fix trivial get_default_remote_submodule() leak
submodule--helper: fix most "struct pathspec" memory leaks
submodule--helper: "struct pathspec" memory leak in module_update()
submodule--helper: don't leak {run,capture}_command() cp.dir argument
submodule--helper: add and use *_release() functions
submodule--helper: fix "errmsg_str" memory leak
submodule--helper: fix "sm_path" and other "module_cb_list" leaks
submodule--helper: fix a leak with repo_clear()
submodule--helper: fix a memory leak in get_default_remote_submodule()
submodule--helper: fix "reference" leak
submodule--helper: fix obscure leak in module_add()
submodule--helper: fix a leak in module_add()
submodule--helper: fix a memory leak in print_status()
submodule--helper: free some "displaypath" in "struct update_data"
submodule--helper: free rest of "displaypath" in "struct update_data"
submodule--helper: fix a configure_added_submodule() leak
docs: add and use include template for config/* includes
grep docs: de-duplicate configuration sections
send-email docs: de-duplicate configuration sections
apply docs: de-duplicate configuration sections
notes docs: de-duplicate and combine configuration sections
difftool docs: de-duplicate configuration sections
log docs: de-duplicate configuration sections
docs: add CONFIGURATION sections that map to a built-in
docs: add CONFIGURATION sections that fuzzy map to built-ins
Øystein Walle (1):
rev-parse --parseopt: detect missing opt-spec
^ permalink raw reply [relevance 3%]
* What's cooking in git.git (Aug 2022, #02; Fri, 5)
@ 2022-08-06 3:38 3% Junio C Hamano
0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2022-08-06 3:38 UTC (permalink / raw)
To: git
Here are the topics that have been cooking in my tree. Commits
prefixed with '+' are in 'next' (being in 'next' is a sign that a
topic is stable enough to be used and are candidate to be in a
future release). Commits prefixed with '-' are only in 'seen',
and aren't considered "accepted" at all.
A handful of topics have graduated to the 'master' track, and half a
dozen topics are now in 'next' to cook. We are at the end of Week
#4 of a 12-week cycle (cf. https://tinyurl.com/gitCal).
Copies of the source code to Git live in many repositories, and the
following is a list of the ones I push into or their mirrors. Some
repositories have only a subset of branches.
With maint, master, next, seen, todo:
git://git.kernel.org/pub/scm/git/git.git/
git://repo.or.cz/alt-git.git/
https://kernel.googlesource.com/pub/scm/git/git/
https://github.com/git/git/
https://gitlab.com/git-vcs/git/
With all the integration branches and topics broken out:
https://github.com/gitster/git/
Even though the preformatted documentation in HTML and man format
are not sources, they are published in these repositories for
convenience (replace "htmldocs" with "manpages" for the manual
pages):
git://git.kernel.org/pub/scm/git/git-htmldocs.git/
https://github.com/gitster/git-htmldocs.git/
Release tarballs are available at:
https://www.kernel.org/pub/software/scm/git/
--------------------------------------------------
[Graduated to 'master']
* ds/midx-with-less-memory (2022-07-27) 4 commits
(merged to 'next' on 2022-07-27 at 9ac7aed9f6)
+ write_midx_bitmap(): drop unused refs_snapshot parameter
(merged to 'next' on 2022-07-20 at 250d257c3e)
+ midx: reduce memory pressure while writing bitmaps
+ midx: extract bitmap write setup
+ pack-bitmap-write: use const for hashes
The codepath to write multi-pack index has been taught to release a
large chunk of memory that holds an array of objects in the packs,
as soon as it is done with the array, to reduce memory consumption.
source: <pull.1292.v2.git.1658244366.gitgitgadget@gmail.com>
* en/merge-restore-to-pristine (2022-07-22) 8 commits
(merged to 'next' on 2022-07-27 at daafc50c15)
+ merge: do not exit restore_state() prematurely
+ merge: ensure we can actually restore pre-merge state
+ merge: make restore_state() restore staged state too
+ merge: fix save_state() to work when there are stat-dirty files
+ merge: do not abort early if one strategy fails to handle the merge
+ merge: abort if index does not match HEAD for trivial merges
+ merge-resolve: abort if index does not match HEAD
+ merge-ort-wrappers: make printed message match the one from recursive
When "git merge" finds that it cannot perform a merge, it should
restore the working tree to the state before the command was
initiated, but in some corner cases it didn't.
source: <pull.1231.v5.git.1658541198.gitgitgadget@gmail.com>
* gc/bare-repo-discovery (2022-07-26) 1 commit
(merged to 'next' on 2022-07-28 at 1d2bef98f6)
+ config.c: NULL check when reading protected config
Fix-up for what has been merged to 'master' recently.
source: <pull.1299.v2.git.git.1658874067077.gitgitgadget@gmail.com>
* jc/string-list-cleanup (2022-07-20) 1 commit
(merged to 'next' on 2022-07-27 at 858a0b2a28)
+ builtin/remote.c: use the right kind of STRING_LIST_INIT
Code clean-up.
source: <xmqq7d471dns.fsf@gitster.g>
* jr/gitweb-title-shortening (2022-07-26) 1 commit
(merged to 'next' on 2022-07-28 at 7528e87220)
+ gitweb: remove title shortening heuristics
Gitweb had legacy URL shortener that is specific to the way
projects hosted on kernel.org used to (but no longer) work, which
has been removed.
source: <20220726135911.ycvgwbkixb3ei6w3@jrouhaud>
* jt/fetch-pack-trace2-filter-spec (2022-07-26) 1 commit
(merged to 'next' on 2022-07-28 at 8e6237d6b0)
+ fetch-pack: write effective filter to trace2
"git fetch" client logs the partial clone filter used in the trace2
output.
source: <20220726162712.1774355-1-jonathantanmy@google.com>
* pw/xdiff-alloc (2022-07-08) 4 commits
(merged to 'next' on 2022-07-25 at 92a39a5ff2)
+ xdiff: introduce XDL_ALLOC_GROW()
+ xdiff: introduce XDL_CALLOC_ARRAY()
+ xdiff: introduce xdl_calloc
+ xdiff: introduce XDL_ALLOC_ARRAY()
Add a level of redirection to array allocation API in xdiff part,
to make it easier to share with the libgit2 project.
source: <pull.1272.v2.git.1657297519.gitgitgadget@gmail.com>
* rs/mergesort (2022-07-17) 10 commits
(merged to 'next' on 2022-07-27 at 42607a44bb)
+ mergesort: remove llist_mergesort()
+ packfile: use DEFINE_LIST_SORT
+ fetch-pack: use DEFINE_LIST_SORT
+ commit: use DEFINE_LIST_SORT
+ blame: use DEFINE_LIST_SORT
+ test-mergesort: use DEFINE_LIST_SORT
+ test-mergesort: use DEFINE_LIST_SORT_DEBUG
+ mergesort: add macros for typed sort of linked lists
+ mergesort: tighten merge loop
+ mergesort: unify ranks loops
Make our mergesort implementation type-safe.
source: <4d7cd286-398e-215c-f2bd-aa7e8207be4f@web.de>
* sa/cat-file-mailmap (2022-07-18) 4 commits
(merged to 'next' on 2022-07-27 at 59c4eb32b3)
+ cat-file: add mailmap support
+ ident: rename commit_rewrite_person() to apply_mailmap_to_header()
+ ident: move commit_rewrite_person() to ident.c
+ revision: improve commit_rewrite_person()
"git cat-file" learned an option to use the mailmap when showing
commit and tag objects.
source: <20220718195102.66321-1-siddharthasthana31@gmail.com>
* tb/cat-file-z (2022-07-22) 2 commits
(merged to 'next' on 2022-07-28 at 78731f0fdb)
+ builtin/cat-file.c: support NUL-delimited input with `-z`
+ t1006: extract --batch-command inputs to variables
Operating modes like "--batch" of "git cat-file" command learned to
take NUL-terminated input, instead of one-item-per-line.
source: <cover.1658532524.git.me@ttaylorr.com>
* tb/commit-graph-genv2-upgrade-fix (2022-07-15) 3 commits
(merged to 'next' on 2022-07-25 at e3464c2c1d)
+ commit-graph: fix corrupt upgrade from generation v1 to v2
+ commit-graph: introduce `repo_find_commit_pos_in_graph()`
+ t5318: demonstrate commit-graph generation v2 corruption
There was a bug in the codepath to upgrade generation information
in commit-graph from v1 to v2 format, which has been corrected.
source: <cover.1657667404.git.me@ttaylorr.com>
* tk/untracked-cache-with-uall (2022-07-22) 1 commit
(merged to 'next' on 2022-07-25 at b792dd5012)
+ read-cache: make `do_read_index()` always set up `istate->repo`
Fix for a bug that makes write-tree to fail to write out a
non-existent index as a tree, introduced in 2.37.
source: <20220722212232.833188-1-martin.agren@gmail.com>
* zh/ls-files-format (2022-07-23) 1 commit
(merged to 'next' on 2022-07-27 at b7301f16ce)
+ ls-files: introduce "--format" option
"git ls-files" learns the "--format" option to tweak its output.
source: <pull.1262.v9.git.1658558685407.gitgitgadget@gmail.com>
--------------------------------------------------
[New Topics]
* lt/symbolic-ref-sanity (2022-08-01) 1 commit
(merged to 'next' on 2022-08-03 at 443647b94a)
+ symbolic-ref: refuse to set syntactically invalid target
"git symbolic-ref symref non..sen..se" is now diagnosed as an error.
Will merge to 'master'.
source: <YugYNzQYWqDCmOqN@coredump.intra.peff.net>
* vd/scalar-generalize-diagnose (2022-08-03) 10 commits
- scalar: update technical doc roadmap
- scalar-diagnose: use 'git diagnose --all'
- builtin/bugreport.c: create '--diagnose' option
- builtin/diagnose.c: gate certain data behind '--all'
- builtin/diagnose.c: create 'git diagnose' builtin
- scalar-diagnose: move functionality to common location
- scalar-diagnose: move 'get_disk_info()' to 'compat/'
- scalar-diagnose: add directory to archiver more gently
- scalar-diagnose: avoid 32-bit overflow of size_t
- scalar-diagnose: use "$GIT_UNZIP" in test
The "diagnose" feature to create a zip archive for diagnostic
material has been lifted from "scalar" and made into a feature of
"git bugreport".
source: <pull.1310.v2.git.1659577543.gitgitgadget@gmail.com>
* gc/git-reflog-doc-markup (2022-08-01) 1 commit
(merged to 'next' on 2022-08-05 at f2d8721ab2)
+ Documentation/git-reflog: remove unneeded \ from \{
Doc mark-up fix.
Will merge to 'master'.
source: <pull.1304.git.git.1659387885711.gitgitgadget@gmail.com>
* jk/pipe-command-nonblock (2022-08-03) 1 commit
- pipe_command(): mark stdin descriptor as non-blocking
Fix deadlocks between main Git process and subprocess spawned via
the pipe_command() API, that can kill "git add -p" that was
reimplemented in C recently.
Needs waiting for corresponding change to Windows to put the pipe
into nonblock mode.
cf. <YulFTSTbVaTwuQtt@coredump.intra.peff.net>
source: <YunxHOa2sJeEpJxd@coredump.intra.peff.net>
* ab/plug-revisions-leak (2022-08-03) 6 commits
(merged to 'next' on 2022-08-05 at d1ca88976f)
+ revisions API: don't leak memory on argv elements that need free()-ing
+ bisect.c: partially fix bisect_rev_setup() memory leak
+ log: refactor "rev.pending" code in cmd_show()
+ log: fix a memory leak in "git show <revision>..."
+ test-fast-rebase helper: use release_revisions() (again)
+ bisect.c: add missing "goto" for release_revisions()
Plug a bit more leaks in the revisions API.
Will merge to 'master'.
source: <cover-v3-0.6-00000000000-20220802T152925Z-avarab@gmail.com>
* jc/rerere-autoupdate-doc (2022-08-03) 2 commits
- doc: clarify rerere-autoupdate
- doc: consolidate --rerere-autoupdate description
Update documentation on the "--[no-]rerere-autoupdate" option.
Will merge to 'next'.
source: <xmqq35f2ysd9.fsf@gitster.g>
* es/mark-gc-cruft-as-experimental (2022-08-03) 2 commits
- config: let feature.experimental imply gc.cruftPacks=true
- gc: add tests for --cruft and friends
Enable gc.cruftpacks by default for those who opt into
feature.experimental setting.
Expecting a reroll.
cf. <220804.86a68ke9d5.gmgdl@evledraar.gmail.com>
cf. <6803b725-526e-a1c8-f15c-a9ed4a144d4c@github.com>
source: <20220803205721.3686361-1-emilyshaffer@google.com>
* pw/use-glibc-tunable-for-malloc-optim (2022-08-04) 1 commit
- tests: cache glibc version check
Avoid repeatedly running getconf to ask libc version in the test
suite, and instead just as it once per script.
Will merge to 'next'?
source: <pull.1311.git.1659620305757.gitgitgadget@gmail.com>
* vd/sparse-reset-checkout-fixes (2022-08-04) 4 commits
- unpack-trees: handle missing sparse directories
- cache.h: replace 'index_entry_exists()' with 'index_name_pos_sparse()'
- oneway_diff: handle removed sparse directories
- checkout: fix nested sparse directory diff in sparse index
Fixes to sparse index compatibility work for "reset" and "checkout"
commands.
Expecting a reroll to further clarify [4/4].
cf. <3825ef9a-4c71-21ed-6452-bbd322ca839c@github.com>
source: <pull.1312.git.1659645967.gitgitgadget@gmail.com>
* ab/hooks-regression-fix (2022-08-05) 1 commit
- hook API: don't segfault on strbuf_addf() to NULL "out"
A follow-up fix to a fix for a regression in 2.36.
Will merge to 'next' and then to 'master'.
source: <patch-1.1-2450e3e65cf-20220805T141402Z-avarab@gmail.com>
--------------------------------------------------
[Stalled]
* tk/apply-case-insensitive (2022-06-21) 3 commits
- apply: support case-only renames in case-insensitive filesystems
- reset: new failing test for reset of case-insensitive duplicate in index
- t4141: test "git apply" with core.ignorecase
"git apply" barfed on a patch that makes a case-only rename on a
case-insensitive filesystem.
Needs review.
source: <pull.1257.v2.git.1655655027.gitgitgadget@gmail.com>
* bc/stash-export (2022-04-08) 4 commits
- builtin/stash: provide a way to import stashes from a ref
- builtin/stash: provide a way to export stashes to a ref
- builtin/stash: factor out revision parsing into a function
- object-name: make get_oid quietly return an error
A mechanism to export and import stash entries to and from a normal
commit to transfer it across repositories has been introduced.
Expecting a reroll.
cf. <YnL2d4Vr9Vr7W4Hj@camp.crustytoothpaste.net>
source: <20220407215352.3491567-1-sandals@crustytoothpaste.net>
--------------------------------------------------
[Cooking]
* ab/tech-docs-to-help (2022-08-04) 12 commits
- docs: move http-protocol docs to man section 5
- docs: move cruft pack docs to gitformat-pack
- docs: move pack format docs to man section 5
- docs: move signature docs to man section 5
- docs: move index format docs to man section 5
- docs: move protocol-related docs to man section 5
- docs: move commit-graph format docs to man section 5
- git docs: add a category for file formats, protocols and interfaces
- git docs: add a category for user-facing file, repo and command UX
- git help doc: use "<doc>" instead of "<guide>"
- help.c: remove common category behavior from drop_prefix() behavior
- help.c: refactor drop_prefix() to use a "switch" statement"
Expose a lot of "tech docs" via "git help" interface.
Will merge to 'next'?
source: <cover-v8-00.12-00000000000-20220804T162138Z-avarab@gmail.com>
* sg/parse-options-subcommand (2022-07-25) 20 commits
- builtin/worktree.c: let parse-options parse subcommands
- builtin/stash.c: let parse-options parse subcommands
- builtin/sparse-checkout.c: let parse-options parse subcommands
- builtin/remote.c: let parse-options parse subcommands
- builtin/reflog.c: let parse-options parse subcommands
- builtin/notes.c: let parse-options parse subcommands
- builtin/multi-pack-index.c: let parse-options parse subcommands
- builtin/hook.c: let parse-option parse subcommands
- builtin/gc.c: let parse-options parse 'git maintenance's subcommands
- builtin/commit-graph.c: let parse-options parse subcommands
- builtin/bundle.c: let parse-options parse subcommands
- parse-options: add support for parsing subcommands
- parse-options: drop leading space from '--git-completion-helper' output
- parse-options: clarify the limitations of PARSE_OPT_NODASH
- parse-options: PARSE_OPT_KEEP_UNKNOWN only applies to --options
- api-parse-options.txt: fix description of OPT_CMDMODE
- t0040-parse-options: test parse_options() with various 'parse_opt_flags'
- t5505-remote.sh: check the behavior without a subcommand
- t3301-notes.sh: check that default operation mode doesn't take arguments
- git.c: update NO_PARSEOPT markings
Introduce the "subcommand" mode to parse-options API and update the
command line parser of Git commands with subcommands.
source: <20220725123857.2773963-1-szeder.dev@gmail.com>
* ds/bundle-uri-clone (2022-08-02) 5 commits
- clone: --bundle-uri cannot be combined with --depth
- bundle-uri: add support for http(s):// and file://
- clone: add --bundle-uri option
- bundle-uri: create basic file-copy logic
- remote-curl: add 'get' capability
Implement "git clone --bundle-uri".
source: <pull.1300.v2.git.1659443384.gitgitgadget@gmail.com>
* ca/unignore-local-installation-on-windows (2022-07-27) 1 commit
(merged to 'next' on 2022-08-01 at 1d4f4c32a6)
+ cmake: support local installations of git
Fix build procedure for Windows that uses CMake so that it can pick
up the shell interpreter from local installation location.
Will merge to 'master'.
source: <pull.1304.git.1658912756815.gitgitgadget@gmail.com>
* ds/decorate-filter-tweak (2022-08-05) 11 commits
- fetch: use ref_namespaces during prefetch
- maintenance: stop writing log.excludeDecoration
- log: create log.initialDecorationSet=all
- log: add --clear-decorations option
- log: add default decoration filter
- log-tree: use ref_namespaces instead of if/else-if
- refs: use ref_namespaces for replace refs base
- refs: add array of ref namespaces
- t4207: test coloring of grafted decorations
- t4207: modernize test
- refs: allow "HEAD" as decoration filter
The namespaces used by "log --decorate" from "refs/" hierarchy by
default has been tightened.
source: <pull.1301.v3.git.1659722323.gitgitgadget@gmail.com>
* es/doc-creation-factor-fix (2022-07-28) 2 commits
- range-diff: clarify --creation-factor=<factor>
- format-patch: clarify --creation-factor=<factor>
Expecting a reroll.
source: <7229p500-p2r4-on87-6802-8o90s36rr3s4@tzk.qr>
* js/lstat-mingw-enotdir-fix (2022-07-29) 1 commit
(merged to 'next' on 2022-08-01 at 10499943b7)
+ lstat(mingw): correctly detect ENOTDIR scenarios
Fix to lstat() emulation on Windows.
Will merge to 'master'.
source: <pull.1291.v3.git.1659089152877.gitgitgadget@gmail.com>
* js/mingw-with-python (2022-07-29) 3 commits
(merged to 'next' on 2022-08-01 at 73b8f06182)
+ mingw: remove unneeded `NO_CURL` directive
+ mingw: remove unneeded `NO_GETTEXT` directive
+ windows: include the Python bits when building Git for Windows
Conditionally allow building Python interpreter on Windows
Will merge to 'master'.
source: <pull.1306.v2.git.1659109272.gitgitgadget@gmail.com>
* ab/submodule-helper-prep (2022-08-03) 28 commits
- submodule--helper: fix bad config API usage
- submodule--helper: libify "must_die_on_failure" code paths (for die)
- submodule--helper: libify "must_die_on_failure" code paths
- submodule--helper: libify determine_submodule_update_strategy()
- submodule--helper: don't exit() on failure, return
- submodule--helper: use "code" in run_update_command()
- submodule--helper: move submodule_strategy_to_string() to only user
- submodule--helper: don't call submodule_strategy_to_string() in BUG()
- submodule--helper: add missing braces to "else" arm
- submodule--helper: return "ret", not "1" from update_submodule()
- submodule--helper: rename "int res" to "int ret"
- submodule--helper: don't redundantly check "else if (res)"
- submodule--helper: refactor "errmsg_str" to be a "struct strbuf"
- submodule--helper: add "const" to copy of "update_data"
- submodule--helper: pass a "const struct module_clone_data" to clone_submodule()
- submodule--helper: move "sb" in clone_submodule() to its own scope
- submodule--helper: use xstrfmt() in clone_submodule()
- submodule--helper: replace memset() with { 0 }-initialization
- submodule--helper style: add \n\n after variable declarations
- submodule--helper style: don't separate declared variables with \n\n
- submodule--helper: move "resolve-relative-url-test" to a test-tool
- submodule--helper: move "check-name" to a test-tool
- submodule--helper: move "is-active" to a test-tool
- test-tool submodule-config: remove unused "--url" handling
- submodule--helper: remove unused "list" helper
- submodule--helper: remove unused "name" helper
- submodule tests: test for "add <repository> <abs-path>"
- submodule tests: test usage behavior
(this branch is used by ab/submodule-helper-leakfix.)
source: <cover-v2-00.28-00000000000-20220802T154036Z-avarab@gmail.com>
* ab/dedup-config-and-command-docs (2022-07-29) 9 commits
- docs: add CONFIGURATION sections that fuzzy map to built-ins
- docs: add CONFIGURATION sections that map to a built-in
- log docs: de-duplicate configuration sections
- difftool docs: de-duplicate configuration sections
- notes docs: de-duplicate configuration sections
- apply docs: de-duplicate configuration sections
- send-email docs: de-duplicate configuration sections
- grep docs: de-duplicate configuration sections
- docs: add and use include template for config/* includes
Share the text used to explain configuration variables used by "git
<subcmd>" in "git help <subcmd>" with the text from "git help config".
Expecting a reroll.
cf. <CAHd-oW5mD-H1kvuF9VEVb8KjaSkUSUpBH-WAkpCn6_Ci8o888w@mail.gmail.com>
cf. <CAHd-oW7s6Hu24uTjCW9ROBbJkA5+7TCu32a4L_BXVLhcvw5kSw@mail.gmail.com>
cf. <xmqqlesb4lwh.fsf@gitster.g>
source: <cover-v2-0.9-00000000000-20220729T081959Z-avarab@gmail.com>
* jk/struct-zero-init-with-older-gcc (2022-07-31) 1 commit
(merged to 'next' on 2022-08-01 at cde4f95964)
+ config.mak.dev: squelch -Wno-missing-braces for older gcc
Older gcc with -Wall complains about the universal zero initializer
"struct s = { 0 };" idiom, which makes developers' lives
inconvenient (as -Werror is enabled by DEVELOPER=YesPlease). The
build procedure has been tweaked to help these compilers.
Will merge to 'master'.
source: <YuQ60ZUPBHAVETD7@coredump.intra.peff.net>
* js/ort-clean-up-after-failed-merge (2022-07-31) 2 commits
(merged to 'next' on 2022-08-01 at 0c9f02f3ec)
+ merge-ort: do leave trace2 region even if checkout fails
+ merge-ort: clean up after failed merge
Plug memory leaks in the failure code path in the "merge-ort" merge
strategy backend.
Will merge to 'master'.
source: <pull.1307.v2.git.1659114727.gitgitgadget@gmail.com>
* js/t5351-freebsd-fix (2022-07-29) 2 commits
(merged to 'next' on 2022-08-01 at b47609e891)
+ t5351: avoid using `test_cmp` for binary data
+ t5351: avoid relying on `core.fsyncMethod = batch` to be supported
Some tests assumed that core.fsyncMethod=batch is supported
everywhere, which broke FreeBSD.
Will merge to 'master'.
source: <pull.1308.git.1659097724.gitgitgadget@gmail.com>
* cw/remote-object-info (2022-07-28) 6 commits
- cat-file: add remote-object-info to batch-command
- transport: add client support for object-info
- serve: advertise object-info feature
- protocol-caps: initialization bug fix
- fetch-pack: move fetch initialization
- fetch-pack: refactor packet writing
A client component to talk with the object-info endpoint.
source: <20220728230210.2952731-1-calvinwan@google.com>
* ab/leak-check (2022-07-27) 15 commits
(merged to 'next' on 2022-08-05 at 2a6b9c8432)
+ CI: use "GIT_TEST_SANITIZE_LEAK_LOG=true" in linux-leaks
+ upload-pack: fix a memory leak in create_pack_file()
+ leak tests: mark passing SANITIZE=leak tests as leak-free
+ leak tests: don't skip some tests under SANITIZE=leak
+ test-lib: have the "check" mode for SANITIZE=leak consider leak logs
+ test-lib: add a GIT_TEST_PASSING_SANITIZE_LEAK=check mode
+ test-lib: simplify by removing test_external
+ tests: move copy/pasted PERL + Test::More checks to a lib-perl.sh
+ t/Makefile: don't remove test-results in "clean-except-prove-cache"
+ test-lib: add a SANITIZE=leak logging mode
+ t/README: reword the "GIT_TEST_PASSING_SANITIZE_LEAK" description
+ test-lib: add a --invert-exit-code switch
+ test-lib: fix GIT_EXIT_OK logic errors, use BAIL_OUT
+ test-lib: don't set GIT_EXIT_OK before calling test_atexit_handler
+ test-lib: use $1, not $@ in test_known_broken_{ok,failure}_
Extend SANITIZE=leak checking and declare more tests "currently leak-free".
Will merge to 'master'.
source: <cover-v3-00.15-00000000000-20220727T230800Z-avarab@gmail.com>
* mt/rot13-in-c (2022-07-31) 4 commits
- tests: use the new C rot13-filter helper to avoid PERL prereq
- t0021: implementation the rot13-filter.pl script in C
- t0021: avoid grepping for a Perl-specific string at filter output
- Merge branch 'mt/checkout-count-fix' into mt/rot13-in-c
Test portability improvements.
source: <cover.1659291025.git.matheus.bernardino@usp.br>
* tl/trace2-config-scope (2022-07-22) 2 commits
- tr2: shows scope unconditionally in addition to key-value pair
- api-trace2.txt: print config key-value pair
Tweak trace2 output about configuration variables.
Needs reviewer response
cf. <20220801122515.23146-1-tenglong.tl@alibaba-inc.com>
source: <cover.1658472474.git.dyroneteng@gmail.com>
* ab/submodule-helper-leakfix (2022-08-03) 18 commits
- submodule--helper: fix a configure_added_submodule() leak
- submodule--helper: free rest of "displaypath" in "struct update_data"
- submodule--helper: free some "displaypath" in "struct update_data"
- submodule--helper: fix a memory leak in print_status()
- submodule--helper: fix a leak in module_add()
- submodule--helper: fix obscure leak in module_add()
- submodule--helper: fix "reference" leak
- submodule--helper: fix a memory leak in get_default_remote_submodule()
- submodule--helper: fix a leak with repo_clear()
- submodule--helper: fix "sm_path" and other "module_cb_list" leaks
- submodule--helper: fix "errmsg_str" memory leak
- submodule--helper: add and use *_release() functions
- submodule--helper: don't leak {run,capture}_command() cp.dir argument
- submodule--helper: "struct pathspec" memory leak in module_update()
- submodule--helper: fix most "struct pathspec" memory leaks
- submodule--helper: fix trivial get_default_remote_submodule() leak
- submodule--helper: fix a leak in "clone_submodule"
- Merge branch 'ab/submodule-helper-prep' into ab/submodule-helper-leakfix
(this branch uses ab/submodule-helper-prep.)
Plugging leaks in submodule--helper.
Getting there.
source: <cover-v5-00.17-00000000000-20220802T155002Z-avarab@gmail.com>
* cw/submodule-merge-messages (2022-08-04) 1 commit
- submodule merge: update conflict error message
Update the message given when "git merge" sees conflicts at a path
with a submodule while merging a superproject.
Getting closer?
source: <20220804195105.1303455-1-calvinwan@google.com>
* js/safe-directory-plus (2022-07-13) 3 commits
- mingw: be more informative when ownership check fails on FAT32
- mingw: handle a file owned by the Administrators group correctly
- Allow debugging unsafe directories' ownership
Expecting a reroll.
cf. <8rqqnqp1-q613-ron6-6q8s-n7sq57o980q9@tzk.qr>
source: <pull.1286.git.1657700238.gitgitgadget@gmail.com>
* po/doc-add-renormalize (2022-07-09) 1 commit
- doc add: renormalize is not idempotent for CRCRLF
Documentation for "git add --renormalize" has been improved.
Expecting a reroll.
cf. <dfe0c1ab-33f8-f13e-71ce-1829bb0d2d7f@iee.email>
source: <d3b8ed97a105ea1d7e656c964b7eee378e11ede6.1657385781.git.gitgitgadget@gmail.com>
* po/glossary-around-traversal (2022-07-09) 3 commits
- glossary: add reachability bitmap description
- glossary: add commit graph description
- glossary: add Object DataBase (ODB) abbreviation
The glossary entries for "commit-graph file" and "reachability
bitmap" have been added.
Expecting a reroll.
cf. <dfe0c1ab-33f8-f13e-71ce-1829bb0d2d7f@iee.email>
source: <pull.1282.git.1657385781.gitgitgadget@gmail.com>
* ac/bitmap-lookup-table (2022-07-20) 6 commits
- bitmap-lookup-table: add performance tests for lookup table
- p5310-pack-bitmaps.sh: enable `pack.writeReverseIndex`
- pack-bitmap: prepare to read lookup table extension
- pack-bitmap-write: learn pack.writeBitmapLookupTable and add tests
- pack-bitmap-write.c: write lookup table extension
- Documentation/technical: describe bitmap lookup table extension
The pack bitmap file gained a bitmap-lookup table to speed up
locating the necessary bitmap for a given commit.
Seems to be flaky-broken under SHA-256.
cf. <p3r70610-8n52-s8q0-n641-onp4ps01330n@tzk.qr>
source: <pull.1266.v5.git.1658342304.gitgitgadget@gmail.com>
* jt/connected-show-missing-from-which-side (2022-06-10) 1 commit
- fetch,fetch-pack: clarify connectivity check error
We may find an object missing after a "git fetch" stores the
objects it obtained from the other side, but it is not necessarily
because the remote failed to send necessary objects. Reword the
messages in an attempt to help users explore other possibilities
when they hit this error.
Expecting a reroll.
source: <20220610195247.1177549-1-jonathantanmy@google.com>
* tb/show-ref-count (2022-06-06) 2 commits
- builtin/show-ref.c: limit output with `--count`
- builtin/show-ref.c: rename `found_match` to `matches_nr`
"git show-ref" learned to stop after emitting N refs with the new
"--count=N" option.
Expecting a reroll.
cf. <xmqqczfl4ce1.fsf@gitster.g>
source: <cover.1654552560.git.me@ttaylorr.com>
* ds/bundle-uri-more (2022-07-25) 2 commits
- bundle-uri: add example bundle organization
- docs: document bundle URI standard
The "bundle URI" topic.
Needs review.
source: <pull.1248.v3.git.1658757188.gitgitgadget@gmail.com>
* js/bisect-in-c (2022-06-27) 16 commits
- bisect: no longer try to clean up left-over `.git/head-name` files
- bisect: remove Cogito-related code
- Turn `git bisect` into a full built-in
- bisect: move even the command-line parsing to `bisect--helper`
- bisect: teach the `bisect--helper` command to show the correct usage strings
- bisect--helper: return only correct exit codes in `cmd_*()`
- bisect--helper: move the `BISECT_STATE` case to the end
- bisect--helper: make `--bisect-state` optional
- bisect--helper: align the sub-command order with git-bisect.sh
- bisect--helper: using `--bisect-state` without an argument is a bug
- bisect--helper: really retire `--bisect-autostart`
- bisect--helper: really retire --bisect-next-check
- bisect--helper: retire the --no-log option
- bisect: avoid double-quoting when printing the failed command
- bisect run: fix the error message
- bisect: verify that a bogus option won't try to start a bisection
Final bits of "git bisect.sh" have been rewritten in C.
Expecting a (hopefully final) reroll.
cf. <20627.86ilolhnnn.gmgdl@evledraar.gmail.com>
source: <pull.1132.v4.git.1656354677.gitgitgadget@gmail.com>
--------------------------------------------------
[Discarded]
* ar/send-email-confirm-by-default (2022-04-22) 1 commit
. send-email: always confirm by default
"git send-email" is changed so that by default it asks for
confirmation before sending each message out.
Discarded.
I wanted to like this, and had it in the version of Git I use
myself for daily work, but the prompting turned out to be somewhat
distracting.
source: <20220422083629.1404989-1-hi@alyssa.is>
* mt/doc-config (2022-07-14) 3 commits
. doc: notes: unify configuration variables definitions
. doc: apply: unify configuration variables definitions
. doc: grep: unify configuration variables definitions
Unify description of configuration variables used by individual
commands in the documentation of the commands and the documentation
of the "git config".
Retracted.
cf. <20220723134834.9693-1-matheus.bernardino@usp.br>
source: <cover.1657819649.git.matheus.bernardino@usp.br>
* mb/doc-rerere-autoupdate (2022-07-15) 1 commit
. cherry-pick doc: clarify no-rerere-autoupdate still allows rerere
Clarifies that the "--no-rerere-autoupdate" option does not disable
the "rerere" mechanism (nor does "--rerere-autoupdate" enable it).
source: <20220715092527.1567837-1-mail@beyermatthias.de>
^ permalink raw reply [relevance 3%]
* What's cooking in git.git (Aug 2022, #01; Mon, 1)
@ 2022-08-01 22:59 3% Junio C Hamano
0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2022-08-01 22:59 UTC (permalink / raw)
To: git
Here are the topics that have been cooking in my tree. Commits
prefixed with '+' are in 'next' (being in 'next' is a sign that a
topic is stable enough to be used and are candidate to be in a
future release). Commits prefixed with '-' are only in 'seen',
and aren't considered "accepted" at all.
A handful of topics have graduated to the 'master' track, and half a
dozen topics are now in 'next' to cook. We are starting Week #4 of
a 12-week cycle.
Copies of the source code to Git live in many repositories, and the
following is a list of the ones I push into or their mirrors. Some
repositories have only a subset of branches.
With maint, master, next, seen, todo:
git://git.kernel.org/pub/scm/git/git.git/
git://repo.or.cz/alt-git.git/
https://kernel.googlesource.com/pub/scm/git/git/
https://github.com/git/git/
https://gitlab.com/git-vcs/git/
With all the integration branches and topics broken out:
https://github.com/gitster/git/
Even though the preformatted documentation in HTML and man format
are not sources, they are published in these repositories for
convenience (replace "htmldocs" with "manpages" for the manual
pages):
git://git.kernel.org/pub/scm/git/git-htmldocs.git/
https://github.com/gitster/git-htmldocs.git/
Release tarballs are available at:
https://www.kernel.org/pub/software/scm/git/
--------------------------------------------------
[Graduated to 'master']
* cl/rerere-train-with-no-sign (2022-07-19) 1 commit
(merged to 'next' on 2022-07-20 at fbb9414d09)
+ contrib/rerere-train: avoid useless gpg sign in training
"rerere-train" script (in contrib/) used to honor commit.gpgSign
while recreating the throw-away merges.
source: <PH7PR14MB5594A27B9295E95ACA4D6A69CE8F9@PH7PR14MB5594.namprd14.prod.outlook.com>
* ds/rebase-update-ref (2022-07-19) 13 commits
(merged to 'next' on 2022-07-20 at 9f4bf9ef6c)
+ sequencer: notify user of --update-refs activity
+ sequencer: ignore HEAD ref under --update-refs
+ rebase: add rebase.updateRefs config option
+ sequencer: rewrite update-refs as user edits todo list
+ rebase: update refs from 'update-ref' commands
+ rebase: add --update-refs option
+ sequencer: add update-ref command
+ sequencer: define array with enum values
+ rebase-interactive: update 'merge' description
+ branch: consider refs under 'update-refs'
+ t2407: test branches currently using apply backend
+ t2407: test bisect and rebase as black-boxes
+ Merge branch 'ds/branch-checked-out' into ds/rebase-update-ref
"git rebase -i" learns to update branches whose tip appear in the
rebased range with "--update-refs" option.
source: <pull.1247.v5.git.1658255624.gitgitgadget@gmail.com>
* kk/p4-client-name-encoding-fix (2022-07-21) 2 commits
(merged to 'next' on 2022-07-21 at 008518b4e5)
+ git-p4: refactoring of p4CmdList()
(merged to 'next' on 2022-07-11 at 9c18616f76)
+ git-p4: fix bug with encoding of p4 client name
"git p4" did not handle non-ASCII client name well, which has been
corrected.
source: <pull.1285.v3.git.git.1658394440.gitgitgadget@gmail.com>
* mt/checkout-count-fix (2022-07-14) 3 commits
(merged to 'next' on 2022-07-22 at 60c73a6b0b)
+ checkout: fix two bugs on the final count of updated entries
+ checkout: show bug about failed entries being included in final report
+ checkout: document bug where delayed checkout counts entries twice
(this branch is used by mt/rot13-in-c.)
"git checkout" miscounted the paths it updated, which has been
corrected.
source: <cover.1657799213.git.matheus.bernardino@usp.br>
* mt/pkt-line-comment-tweak (2022-07-22) 1 commit
(merged to 'next' on 2022-07-22 at 4004fa75eb)
+ pkt-line.h: move comment closer to the associated code
In-code comment clarification.
source: <6a14443c101fa132498297af6d7a483520688d75.1658488203.git.matheus.bernardino@usp.br>
--------------------------------------------------
[Stalled]
* tk/apply-case-insensitive (2022-06-21) 3 commits
- apply: support case-only renames in case-insensitive filesystems
- reset: new failing test for reset of case-insensitive duplicate in index
- t4141: test "git apply" with core.ignorecase
"git apply" barfed on a patch that makes a case-only rename on a
case-insensitive filesystem.
Needs review.
source: <pull.1257.v2.git.1655655027.gitgitgadget@gmail.com>
* bc/stash-export (2022-04-08) 4 commits
- builtin/stash: provide a way to import stashes from a ref
- builtin/stash: provide a way to export stashes to a ref
- builtin/stash: factor out revision parsing into a function
- object-name: make get_oid quietly return an error
A mechanism to export and import stash entries to and from a normal
commit to transfer it across repositories has been introduced.
Expecting a reroll.
cf. <YnL2d4Vr9Vr7W4Hj@camp.crustytoothpaste.net>
source: <20220407215352.3491567-1-sandals@crustytoothpaste.net>
--------------------------------------------------
[Cooking]
* tb/cat-file-z (2022-07-22) 2 commits
(merged to 'next' on 2022-07-28 at 78731f0fdb)
+ builtin/cat-file.c: support NUL-delimited input with `-z`
+ t1006: extract --batch-command inputs to variables
Operating modes like "--batch" of "git cat-file" command learned to
take NUL-terminated input, instead of one-item-per-line.
Will merge to 'master'.
source: <cover.1658532524.git.me@ttaylorr.com>
* ab/tech-docs-to-help (2022-07-23) 9 commits
- docs: move multi-pack-index docs to man section 5
- docs: move http-protocol docs to man section 5
- docs: move pack format docs to man section 5
- docs: move protocol-related docs to man section 5
- docs: move commit-graph format docs to man section 5
- git docs: add a category for file formats, protocols and interfaces
- git docs: add a category for user-facing file, repo and command UX
- git help doc: use "<doc>" instead of "<guide>"
- help.c: BUG() out if "help --guides" can't remove "git" prefixes
Expose a lot of "tech docs" via "git help" interface.
source: <cover-v5-0.9-00000000000-20220721T160721Z-avarab@gmail.com>
* sg/parse-options-subcommand (2022-07-25) 20 commits
- builtin/worktree.c: let parse-options parse subcommands
- builtin/stash.c: let parse-options parse subcommands
- builtin/sparse-checkout.c: let parse-options parse subcommands
- builtin/remote.c: let parse-options parse subcommands
- builtin/reflog.c: let parse-options parse subcommands
- builtin/notes.c: let parse-options parse subcommands
- builtin/multi-pack-index.c: let parse-options parse subcommands
- builtin/hook.c: let parse-option parse subcommands
- builtin/gc.c: let parse-options parse 'git maintenance's subcommands
- builtin/commit-graph.c: let parse-options parse subcommands
- builtin/bundle.c: let parse-options parse subcommands
- parse-options: add support for parsing subcommands
- parse-options: drop leading space from '--git-completion-helper' output
- parse-options: clarify the limitations of PARSE_OPT_NODASH
- parse-options: PARSE_OPT_KEEP_UNKNOWN only applies to --options
- api-parse-options.txt: fix description of OPT_CMDMODE
- t0040-parse-options: test parse_options() with various 'parse_opt_flags'
- t5505-remote.sh: check the behavior without a subcommand
- t3301-notes.sh: check that default operation mode doesn't take arguments
- git.c: update NO_PARSEOPT markings
Introduce the "subcommand" mode to parse-options API and update the
command line parser of Git commands with subcommands.
source: <20220725123857.2773963-1-szeder.dev@gmail.com>
* ds/bundle-uri-clone (2022-07-25) 5 commits
- clone: --bundle-uri cannot be combined with --depth
- bundle-uri: add support for http(s):// and file://
- clone: add --bundle-uri option
- bundle-uri: create basic file-copy logic
- remote-curl: add 'get' capability
Implement "git clone --bundle-uri".
source: <pull.1300.git.1658781277.gitgitgadget@gmail.com>
* ca/unignore-local-installation-on-windows (2022-07-27) 1 commit
(merged to 'next' on 2022-08-01 at 1d4f4c32a6)
+ cmake: support local installations of git
Fix build procedure for Windows that uses CMake so that it can pick
up the shell interpreter from local installation location.
Will merge to 'master'.
source: <pull.1304.git.1658912756815.gitgitgadget@gmail.com>
* ds/decorate-filter-tweak (2022-07-29) 10 commits
- fetch: use ref_namespaces during prefetch
- maintenance: stop writing log.excludeDecoration
- log: create log.decorateFilter=all
- log: add --decorate-all option
- log: add default decoration filter
- log-tree: use ref_namespaces instead of if/else-if
- refs: use ref_namespaces for replace refs base
- refs: add array of ref namespaces
- t4207: test coloring of grafted decorations
- refs: allow "HEAD" as decoration filter
The namespaces used by "log --decorate" from "refs/" hierarchy by
default has been tightened.
source: <pull.1301.v2.git.1659122979.gitgitgadget@gmail.com>
* gc/bare-repo-discovery (2022-07-26) 1 commit
(merged to 'next' on 2022-07-28 at 1d2bef98f6)
+ config.c: NULL check when reading protected config
Fix-up for what has been merged to 'master' recently.
Will merge to 'master'.
source: <pull.1299.v2.git.git.1658874067077.gitgitgadget@gmail.com>
* jr/gitweb-title-shortening (2022-07-26) 1 commit
(merged to 'next' on 2022-07-28 at 7528e87220)
+ gitweb: remove title shortening heuristics
Gitweb had legacy URL shortener that is specific to the way
projects hosted on kernel.org used to (but no longer) work, which
has been removed.
Will merge to 'master'.
source: <20220726135911.ycvgwbkixb3ei6w3@jrouhaud>
* es/doc-creation-factor-fix (2022-07-28) 2 commits
- range-diff: clarify --creation-factor=<factor>
- format-patch: clarify --creation-factor=<factor>
Expecting a reroll.
source: <7229p500-p2r4-on87-6802-8o90s36rr3s4@tzk.qr>
* js/lstat-mingw-enotdir-fix (2022-07-29) 1 commit
(merged to 'next' on 2022-08-01 at 10499943b7)
+ lstat(mingw): correctly detect ENOTDIR scenarios
Fix to lstat() emulation on Windows.
Will merge to 'master'.
source: <pull.1291.v3.git.1659089152877.gitgitgadget@gmail.com>
* js/mingw-with-python (2022-07-29) 3 commits
(merged to 'next' on 2022-08-01 at 73b8f06182)
+ mingw: remove unneeded `NO_CURL` directive
+ mingw: remove unneeded `NO_GETTEXT` directive
+ windows: include the Python bits when building Git for Windows
Conditionally allow building Python interpreter on Windows
Will merge to 'master'.
source: <pull.1306.v2.git.1659109272.gitgitgadget@gmail.com>
* ab/submodule-helper-prep (2022-07-28) 20 commits
- submodule--helper: fix bad config API usage
- submodule--helper: don't exit() on failure, return
- submodule--helper: add skeleton "goto cleanup" to update_submodule()
- submodule--helper: rename "int res" to "int ret"
- submodule--helper: refactor "errmsg_str" to be a "struct strbuf"
- submodule--helper: add "const" to copy of "update_data"
- submodule--helper: pass a "const struct module_clone_data" to clone_submodule()
- submodule--helper: stop conflating "sb" in clone_submodule()
- submodule--helper: convert a strbuf_detach() to xstrfmt()
- submodule--helper: replace memset() with { 0 }-initialization
- submodule--helper style: add \n\n after variable declarations
- submodule--helper style: don't separate declared variables with \n\n
- submodule--helper: move "resolve-relative-url-test" to a test-tool
- submodule--helper: move "check-name" to a test-tool
- submodule--helper: move "is-active" to a test-tool
- test-tool submodule-config: remove unused "--url" handling
- submodule--helper: remove unused "list" helper
- submodule--helper: remove unused "name" helper
- submodule tests: test for "add <repository> <abs-path>"
- submodule tests: test usage behavior
(this branch is used by ab/submodule-helper-leakfix.)
source: <cover-00.20-00000000000-20220728T161116Z-avarab@gmail.com>
* ab/dedup-config-and-command-docs (2022-07-29) 9 commits
- docs: add CONFIGURATION sections that fuzzy map to built-ins
- docs: add CONFIGURATION sections that map to a built-in
- log docs: de-duplicate configuration sections
- difftool docs: de-duplicate configuration sections
- notes docs: de-duplicate configuration sections
- apply docs: de-duplicate configuration sections
- send-email docs: de-duplicate configuration sections
- grep docs: de-duplicate configuration sections
- docs: add and use include template for config/* includes
Share the text used to explain configuration variables used by "git
<subcmd>" in "git help <subcmd>" with the text from "git help config".
Will merge to 'next'?
source: <cover-v2-0.9-00000000000-20220729T081959Z-avarab@gmail.com>
* jk/struct-zero-init-with-older-gcc (2022-07-31) 1 commit
(merged to 'next' on 2022-08-01 at cde4f95964)
+ config.mak.dev: squelch -Wno-missing-braces for older gcc
Older gcc with -Wall complains about the universal zero initializer
"struct s = { 0 };" idiom, which makes developers' lives
inconvenient (as -Werror is enabled by DEVELOPER=YesPlease). The
build procedure has been tweaked to help these compilers.
Will merge to 'master'.
source: <YuQ60ZUPBHAVETD7@coredump.intra.peff.net>
* js/ort-clean-up-after-failed-merge (2022-07-31) 2 commits
(merged to 'next' on 2022-08-01 at 0c9f02f3ec)
+ merge-ort: do leave trace2 region even if checkout fails
+ merge-ort: clean up after failed merge
Plug memory leaks in the failure code path in the "merge-ort" merge
strategy backend.
Will merge to 'master'.
source: <pull.1307.v2.git.1659114727.gitgitgadget@gmail.com>
* js/t5351-freebsd-fix (2022-07-29) 2 commits
(merged to 'next' on 2022-08-01 at b47609e891)
+ t5351: avoid using `test_cmp` for binary data
+ t5351: avoid relying on `core.fsyncMethod = batch` to be supported
Some tests assumed that core.fsyncMethod=batch is supported
everywhere, which broke FreeBSD.
Will merge to 'master'.
source: <pull.1308.git.1659097724.gitgitgadget@gmail.com>
* cw/remote-object-info (2022-07-28) 6 commits
- cat-file: add remote-object-info to batch-command
- transport: add client support for object-info
- serve: advertise object-info feature
- protocol-caps: initialization bug fix
- fetch-pack: move fetch initialization
- fetch-pack: refactor packet writing
A client component to talk with the object-info endpoint.
source: <20220728230210.2952731-1-calvinwan@google.com>
* ab/leak-check (2022-07-27) 15 commits
- CI: use "GIT_TEST_SANITIZE_LEAK_LOG=true" in linux-leaks
- upload-pack: fix a memory leak in create_pack_file()
- leak tests: mark passing SANITIZE=leak tests as leak-free
- leak tests: don't skip some tests under SANITIZE=leak
- test-lib: have the "check" mode for SANITIZE=leak consider leak logs
- test-lib: add a GIT_TEST_PASSING_SANITIZE_LEAK=check mode
- test-lib: simplify by removing test_external
- tests: move copy/pasted PERL + Test::More checks to a lib-perl.sh
- t/Makefile: don't remove test-results in "clean-except-prove-cache"
- test-lib: add a SANITIZE=leak logging mode
- t/README: reword the "GIT_TEST_PASSING_SANITIZE_LEAK" description
- test-lib: add a --invert-exit-code switch
- test-lib: fix GIT_EXIT_OK logic errors, use BAIL_OUT
- test-lib: don't set GIT_EXIT_OK before calling test_atexit_handler
- test-lib: use $1, not $@ in test_known_broken_{ok,failure}_
Extend SANITIZE=leak checking and declare more tests "currently leak-free".
Will merge to 'next'?
source: <cover-v3-00.15-00000000000-20220727T230800Z-avarab@gmail.com>
* jc/string-list-cleanup (2022-07-20) 1 commit
(merged to 'next' on 2022-07-27 at 858a0b2a28)
+ builtin/remote.c: use the right kind of STRING_LIST_INIT
Code clean-up.
Will merge to 'master'.
source: <xmqq7d471dns.fsf@gitster.g>
* mt/rot13-in-c (2022-07-31) 4 commits
- tests: use the new C rot13-filter helper to avoid PERL prereq
- t0021: implementation the rot13-filter.pl script in C
- t0021: avoid grepping for a Perl-specific string at filter output
- Merge branch 'mt/checkout-count-fix' into mt/rot13-in-c
Test portability improvements.
source: <cover.1659291025.git.matheus.bernardino@usp.br>
* tk/untracked-cache-with-uall (2022-07-22) 1 commit
(merged to 'next' on 2022-07-25 at b792dd5012)
+ read-cache: make `do_read_index()` always set up `istate->repo`
Fix for a bug that makes write-tree to fail to write out a
non-existent index as a tree, introduced in 2.37.
Will merge to 'master'.
source: <20220722212232.833188-1-martin.agren@gmail.com>
* ds/midx-with-less-memory (2022-07-27) 4 commits
(merged to 'next' on 2022-07-27 at 9ac7aed9f6)
+ write_midx_bitmap(): drop unused refs_snapshot parameter
(merged to 'next' on 2022-07-20 at 250d257c3e)
+ midx: reduce memory pressure while writing bitmaps
+ midx: extract bitmap write setup
+ pack-bitmap-write: use const for hashes
The codepath to write multi-pack index has been taught to release a
large chunk of memory that holds an array of objects in the packs,
as soon as it is done with the array, to reduce memory consumption.
Will merge to 'master'.
source: <pull.1292.v2.git.1658244366.gitgitgadget@gmail.com>
* tl/trace2-config-scope (2022-07-22) 2 commits
- tr2: shows scope unconditionally in addition to key-value pair
- api-trace2.txt: print config key-value pair
Tweak trace2 output about configuration variables.
Expecting a reroll.
cf. <220722.86fsits91m.gmgdl@evledraar.gmail.com>
source: <cover.1658472474.git.dyroneteng@gmail.com>
* ab/submodule-helper-leakfix (2022-07-28) 18 commits
- submodule--helper: fix a configure_added_submodule() leak
- submodule--helper: free rest of "displaypath" in "struct update_data"
- submodule--helper: free some "displaypath" in "struct update_data"
- submodule--helper: fix a memory leak in print_status()
- submodule--helper: fix a leak in module_add()
- submodule--helper: fix obscure leak in module_add()
- submodule--helper: fix "reference" leak
- submodule--helper: fix a memory leak in get_default_remote_submodule()
- submodule--helper: fix a leak with repo_clear()
- submodule--helper: fix "sm_path" and other "module_cb_list" leaks
- submodule--helper: fix "errmsg_str" memory leak
- submodule--helper: add and use *_release() functions
- submodule--helper: don't leak {run,capture}_command() cp.dir argument
- submodule--helper: "struct pathspec" memory leak in module_update()
- submodule--helper: fix most "struct pathspec" memory leaks
- submodule--helper: fix trivial get_default_remote_submodule() leak
- submodule--helper: fix a leak in "clone_submodule"
- Merge branch 'ab/submodule-helper-prep' into ab/submodule-helper-leakfix
(this branch uses ab/submodule-helper-prep.)
Plugging leaks in submodule--helper.
Getting there.
source: <cover-v4-00.17-00000000000-20220728T162442Z-avarab@gmail.com>
* jt/fetch-pack-trace2-filter-spec (2022-07-26) 1 commit
(merged to 'next' on 2022-07-28 at 8e6237d6b0)
+ fetch-pack: write effective filter to trace2
"git fetch" client logs the partial clone filter used in the trace2
output.
Will merge to 'master'.
source: <20220726162712.1774355-1-jonathantanmy@google.com>
* mb/doc-rerere-autoupdate (2022-07-15) 1 commit
- cherry-pick doc: clarify no-rerere-autoupdate still allows rerere
Clarifies that the "--no-rerere-autoupdate" option does not disable
the "rerere" mechanism (nor does "--rerere-autoupdate" enable it).
Needs updating, at least for other commands with the same option.
cf. <xmqq35f2ysd9.fsf@gitster.g>
source: <20220715092527.1567837-1-mail@beyermatthias.de>
* rs/mergesort (2022-07-17) 10 commits
(merged to 'next' on 2022-07-27 at 42607a44bb)
+ mergesort: remove llist_mergesort()
+ packfile: use DEFINE_LIST_SORT
+ fetch-pack: use DEFINE_LIST_SORT
+ commit: use DEFINE_LIST_SORT
+ blame: use DEFINE_LIST_SORT
+ test-mergesort: use DEFINE_LIST_SORT
+ test-mergesort: use DEFINE_LIST_SORT_DEBUG
+ mergesort: add macros for typed sort of linked lists
+ mergesort: tighten merge loop
+ mergesort: unify ranks loops
Make our mergesort implementation type-safe.
Will merge to 'master'.
source: <4d7cd286-398e-215c-f2bd-aa7e8207be4f@web.de>
* cw/submodule-merge-messages (2022-07-28) 1 commit
- submodule merge: update conflict error message
Update the message given when "git merge" sees conflicts at a path
with a submodule while merging a superproject.
source: <20220728211221.2913928-1-calvinwan@google.com>
* tb/commit-graph-genv2-upgrade-fix (2022-07-15) 3 commits
(merged to 'next' on 2022-07-25 at e3464c2c1d)
+ commit-graph: fix corrupt upgrade from generation v1 to v2
+ commit-graph: introduce `repo_find_commit_pos_in_graph()`
+ t5318: demonstrate commit-graph generation v2 corruption
There was a bug in the codepath to upgrade generation information
in commit-graph from v1 to v2 format, which has been corrected.
Will merge to 'master'.
source: <cover.1657667404.git.me@ttaylorr.com>
* js/safe-directory-plus (2022-07-13) 3 commits
- mingw: be more informative when ownership check fails on FAT32
- mingw: handle a file owned by the Administrators group correctly
- Allow debugging unsafe directories' ownership
Expecting a reroll.
cf. <8rqqnqp1-q613-ron6-6q8s-n7sq57o980q9@tzk.qr>
source: <pull.1286.git.1657700238.gitgitgadget@gmail.com>
* po/doc-add-renormalize (2022-07-09) 1 commit
- doc add: renormalize is not idempotent for CRCRLF
Documentation for "git add --renormalize" has been improved.
Expecting a reroll.
cf. <dfe0c1ab-33f8-f13e-71ce-1829bb0d2d7f@iee.email>
source: <d3b8ed97a105ea1d7e656c964b7eee378e11ede6.1657385781.git.gitgitgadget@gmail.com>
* po/glossary-around-traversal (2022-07-09) 3 commits
- glossary: add reachability bitmap description
- glossary: add commit graph description
- glossary: add Object DataBase (ODB) abbreviation
The glossary entries for "commit-graph file" and "reachability
bitmap" have been added.
Expecting a reroll.
cf. <dfe0c1ab-33f8-f13e-71ce-1829bb0d2d7f@iee.email>
source: <pull.1282.git.1657385781.gitgitgadget@gmail.com>
* ac/bitmap-lookup-table (2022-07-20) 6 commits
- bitmap-lookup-table: add performance tests for lookup table
- p5310-pack-bitmaps.sh: enable `pack.writeReverseIndex`
- pack-bitmap: prepare to read lookup table extension
- pack-bitmap-write: learn pack.writeBitmapLookupTable and add tests
- pack-bitmap-write.c: write lookup table extension
- Documentation/technical: describe bitmap lookup table extension
The pack bitmap file gained a bitmap-lookup table to speed up
locating the necessary bitmap for a given commit.
Seems to be flaky-broken under SHA-256.
cf. <p3r70610-8n52-s8q0-n641-onp4ps01330n@tzk.qr>
source: <pull.1266.v5.git.1658342304.gitgitgadget@gmail.com>
* sa/cat-file-mailmap (2022-07-18) 4 commits
(merged to 'next' on 2022-07-27 at 59c4eb32b3)
+ cat-file: add mailmap support
+ ident: rename commit_rewrite_person() to apply_mailmap_to_header()
+ ident: move commit_rewrite_person() to ident.c
+ revision: improve commit_rewrite_person()
"git cat-file" learned an option to use the mailmap when showing
commit and tag objects.
Will merge to 'master'.
source: <20220718195102.66321-1-siddharthasthana31@gmail.com>
* pw/xdiff-alloc (2022-07-08) 4 commits
(merged to 'next' on 2022-07-25 at 92a39a5ff2)
+ xdiff: introduce XDL_ALLOC_GROW()
+ xdiff: introduce XDL_CALLOC_ARRAY()
+ xdiff: introduce xdl_calloc
+ xdiff: introduce XDL_ALLOC_ARRAY()
Add a level of redirection to array allocation API in xdiff part,
to make it easier to share with the libgit2 project.
Will merge to 'master'.
source: <pull.1272.v2.git.1657297519.gitgitgadget@gmail.com>
* en/merge-restore-to-pristine (2022-07-22) 8 commits
(merged to 'next' on 2022-07-27 at daafc50c15)
+ merge: do not exit restore_state() prematurely
+ merge: ensure we can actually restore pre-merge state
+ merge: make restore_state() restore staged state too
+ merge: fix save_state() to work when there are stat-dirty files
+ merge: do not abort early if one strategy fails to handle the merge
+ merge: abort if index does not match HEAD for trivial merges
+ merge-resolve: abort if index does not match HEAD
+ merge-ort-wrappers: make printed message match the one from recursive
When "git merge" finds that it cannot perform a merge, it should
restore the working tree to the state before the command was
initiated, but in some corner cases it didn't.
Will merge to 'master'.
source: <pull.1231.v5.git.1658541198.gitgitgadget@gmail.com>
* zh/ls-files-format (2022-07-23) 1 commit
(merged to 'next' on 2022-07-27 at b7301f16ce)
+ ls-files: introduce "--format" option
"git ls-files" learns the "--format" option to tweak its output.
Will merge to 'master'.
source: <pull.1262.v9.git.1658558685407.gitgitgadget@gmail.com>
* jt/connected-show-missing-from-which-side (2022-06-10) 1 commit
- fetch,fetch-pack: clarify connectivity check error
We may find an object missing after a "git fetch" stores the
objects it obtained from the other side, but it is not necessarily
because the remote failed to send necessary objects. Reword the
messages in an attempt to help users explore other possibilities
when they hit this error.
Expecting a reroll.
source: <20220610195247.1177549-1-jonathantanmy@google.com>
* tb/show-ref-count (2022-06-06) 2 commits
- builtin/show-ref.c: limit output with `--count`
- builtin/show-ref.c: rename `found_match` to `matches_nr`
"git show-ref" learned to stop after emitting N refs with the new
"--count=N" option.
Expecting a reroll.
cf. <xmqqczfl4ce1.fsf@gitster.g>
source: <cover.1654552560.git.me@ttaylorr.com>
* ds/bundle-uri-more (2022-07-25) 2 commits
- bundle-uri: add example bundle organization
- docs: document bundle URI standard
The "bundle URI" topic.
Needs review.
source: <pull.1248.v3.git.1658757188.gitgitgadget@gmail.com>
* js/bisect-in-c (2022-06-27) 16 commits
- bisect: no longer try to clean up left-over `.git/head-name` files
- bisect: remove Cogito-related code
- Turn `git bisect` into a full built-in
- bisect: move even the command-line parsing to `bisect--helper`
- bisect: teach the `bisect--helper` command to show the correct usage strings
- bisect--helper: return only correct exit codes in `cmd_*()`
- bisect--helper: move the `BISECT_STATE` case to the end
- bisect--helper: make `--bisect-state` optional
- bisect--helper: align the sub-command order with git-bisect.sh
- bisect--helper: using `--bisect-state` without an argument is a bug
- bisect--helper: really retire `--bisect-autostart`
- bisect--helper: really retire --bisect-next-check
- bisect--helper: retire the --no-log option
- bisect: avoid double-quoting when printing the failed command
- bisect run: fix the error message
- bisect: verify that a bogus option won't try to start a bisection
Final bits of "git bisect.sh" have been rewritten in C.
Expecting a (hopefully final) reroll.
cf. <20627.86ilolhnnn.gmgdl@evledraar.gmail.com>
source: <pull.1132.v4.git.1656354677.gitgitgadget@gmail.com>
--------------------------------------------------
[Discarded]
* ar/send-email-confirm-by-default (2022-04-22) 1 commit
. send-email: always confirm by default
"git send-email" is changed so that by default it asks for
confirmation before sending each message out.
Discarded.
I wanted to like this, and had it in the version of Git I use
myself for daily work, but the prompting turned out to be somewhat
distracting.
source: <20220422083629.1404989-1-hi@alyssa.is>
* mt/doc-config (2022-07-14) 3 commits
. doc: notes: unify configuration variables definitions
. doc: apply: unify configuration variables definitions
. doc: grep: unify configuration variables definitions
Unify description of configuration variables used by individual
commands in the documentation of the commands and the documentation
of the "git config".
Retracted.
cf. <20220723134834.9693-1-matheus.bernardino@usp.br>
source: <cover.1657819649.git.matheus.bernardino@usp.br>
^ permalink raw reply [relevance 3%]
* What's cooking in git.git (Jul 2022, #08; Fri, 29)
@ 2022-07-29 23:18 3% Junio C Hamano
0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2022-07-29 23:18 UTC (permalink / raw)
To: git
Here are the topics that have been cooking in my tree. Commits
prefixed with '+' are in 'next' (being in 'next' is a sign that a
topic is stable enough to be used and are candidate to be in a
future release). Commits prefixed with '-' are only in 'seen',
and aren't considered "accepted" at all.
Copies of the source code to Git live in many repositories, and the
following is a list of the ones I push into or their mirrors. Some
repositories have only a subset of branches.
With maint, master, next, seen, todo:
git://git.kernel.org/pub/scm/git/git.git/
git://repo.or.cz/alt-git.git/
https://kernel.googlesource.com/pub/scm/git/git/
https://github.com/git/git/
https://gitlab.com/git-vcs/git/
With all the integration branches and topics broken out:
https://github.com/gitster/git/
Even though the preformatted documentation in HTML and man format
are not sources, they are published in these repositories for
convenience (replace "htmldocs" with "manpages" for the manual
pages):
git://git.kernel.org/pub/scm/git/git-htmldocs.git/
https://github.com/gitster/git-htmldocs.git/
Release tarballs are available at:
https://www.kernel.org/pub/software/scm/git/
--------------------------------------------------
[Graduated to 'master']
* ab/squelch-empty-fsync-traces (2022-07-18) 1 commit
(merged to 'next' on 2022-07-19 at f77cd40c29)
+ trace2: only include "fsync" events if we git_fsync()
Omit fsync-related trace2 entries when their values are all zero.
source: <patch-v3-1.1-979dea5956a-20220718T102747Z-avarab@gmail.com>
* ds/doc-wo-whitelist (2022-07-19) 5 commits
(merged to 'next' on 2022-07-20 at ec51c6269a)
+ transport.c: avoid "whitelist"
+ t: avoid "whitelist"
+ git.txt: remove redundant language
+ git-cvsserver: clarify directory list
+ daemon: clarify directory arguments
Avoid "white/black-list" in documentation and code comments.
source: <pull.1274.v3.git.1658255537.gitgitgadget@gmail.com>
* ds/win-syslog-compiler-fix (2022-07-19) 1 commit
(merged to 'next' on 2022-07-20 at d38b649b18)
+ compat/win32: correct for incorrect compiler warning
Workaround for a false positive compiler warning.
source: <pull.1294.git.1658256354725.gitgitgadget@gmail.com>
* js/commit-graph-parsing-without-repo-settings (2022-07-14) 1 commit
(merged to 'next' on 2022-07-19 at bcc29d823d)
+ commit-graph: pass repo_settings instead of repository
API tweak to make it easier to run fuzz testing on commit-graph parser.
source: <fd70b6119153b165a62ee4f693dbe47031cfb2be.1657834657.git.steadmon@google.com>
* ld/osx-keychain-usage-fix (2022-07-19) 1 commit
(merged to 'next' on 2022-07-20 at eebd316ef6)
+ osx-keychain: fix compiler warning
Workaround for a compiler warning against use of die() in
osx-keychain (in contrib/).
source: <pull.1293.git.1658251503775.gitgitgadget@gmail.com>
* ma/sparse-checkout-cone-doc-fix (2022-07-18) 1 commit
(merged to 'next' on 2022-07-19 at c259b61b0e)
+ config/core.txt: fix minor issues for `core.sparseCheckoutCone`
Docfix.
source: <20220718100530.2068354-1-martin.agren@gmail.com>
* ma/t4200-update (2022-07-18) 1 commit
(merged to 'next' on 2022-07-19 at 710d0cafd9)
+ t4200: drop irrelevant code
Test fix.
source: <20220718154322.2177166-1-martin.agren@gmail.com>
* mb/config-document-include (2022-07-17) 1 commit
(merged to 'next' on 2022-07-19 at 8267b80aa2)
+ config.txt: document include, includeIf
Add missing documentation for "include" and "includeIf" features in
"git config" file format, which incidentally teaches the command
line completion to include them in its offerings.
source: <pull.1285.v2.git.1658002423864.gitgitgadget@gmail.com>
* mb/p4-fixes (2022-07-20) 2 commits
(merged to 'next' on 2022-07-20 at 7942d72b1c)
+ git-p4: fix error handling in P4Unshelve.renameBranch()
+ git-p4: fix typo in P4Submit.applyCommit()
Fix a few issues in "git p4".
source: <pull.1297.v2.git.git.1658343330.gitgitgadget@gmail.com>
* mb/p4-utf16-crlf (2022-07-20) 1 commit
(merged to 'next' on 2022-07-20 at c2fedd2fc2)
+ git-p4: fix CR LF handling for utf16 files
"git p4" working on UTF-16 files on Windows did not implement
CRLF-to-LF conversion correctly, which has been corrected.
source: <pull.1294.v2.git.git.1658341065221.gitgitgadget@gmail.com>
* sg/index-format-doc-update (2022-07-18) 1 commit
(merged to 'next' on 2022-07-19 at ccc384be5e)
+ index-format.txt: remove outdated list of supported extensions
Docfix.
source: <20220718085640.7395-1-szeder.dev@gmail.com>
* tl/pack-bitmap-error-messages (2022-07-18) 6 commits
(merged to 'next' on 2022-07-19 at 3f9565653a)
+ pack-bitmap.c: continue looping when first MIDX bitmap is found
+ pack-bitmap.c: using error() instead of silently returning -1
+ pack-bitmap.c: do not ignore error when opening a bitmap file
+ pack-bitmap.c: rename "idx_name" to "bitmap_name"
+ pack-bitmap.c: mark more strings for translations
+ pack-bitmap.c: fix formatting of error messages
Tweak various messages that come from the pack-bitmap codepaths.
source: <cover.1658159745.git.dyroneteng@gmail.com>
* vd/scalar-doc (2022-07-18) 2 commits
(merged to 'next' on 2022-07-20 at fab0234da4)
+ scalar: convert README.md into a technical design doc
+ scalar: reword command documentation to clarify purpose
Doc update.
source: <pull.1275.v2.git.1657584367.gitgitgadget@gmail.com>
--------------------------------------------------
[New Topics]
* tb/cat-file-z (2022-07-22) 2 commits
(merged to 'next' on 2022-07-28 at 78731f0fdb)
+ builtin/cat-file.c: support NUL-delimited input with `-z`
+ t1006: extract --batch-command inputs to variables
Operating modes like "--batch" of "git cat-file" command learned to
take NUL-terminated input, instead of one-item-per-line.
Will merge to 'master'.
source: <cover.1658532524.git.me@ttaylorr.com>
* ab/tech-docs-to-help (2022-07-23) 9 commits
- docs: move multi-pack-index docs to man section 5
- docs: move http-protocol docs to man section 5
- docs: move pack format docs to man section 5
- docs: move protocol-related docs to man section 5
- docs: move commit-graph format docs to man section 5
- git docs: add a category for file formats, protocols and interfaces
- git docs: add a category for user-facing file, repo and command UX
- git help doc: use "<doc>" instead of "<guide>"
- help.c: BUG() out if "help --guides" can't remove "git" prefixes
Expose a lot of "tech docs" via "git help" interface.
source: <cover-v5-0.9-00000000000-20220721T160721Z-avarab@gmail.com>
* sg/parse-options-subcommand (2022-07-25) 20 commits
- builtin/worktree.c: let parse-options parse subcommands
- builtin/stash.c: let parse-options parse subcommands
- builtin/sparse-checkout.c: let parse-options parse subcommands
- builtin/remote.c: let parse-options parse subcommands
- builtin/reflog.c: let parse-options parse subcommands
- builtin/notes.c: let parse-options parse subcommands
- builtin/multi-pack-index.c: let parse-options parse subcommands
- builtin/hook.c: let parse-option parse subcommands
- builtin/gc.c: let parse-options parse 'git maintenance's subcommands
- builtin/commit-graph.c: let parse-options parse subcommands
- builtin/bundle.c: let parse-options parse subcommands
- parse-options: add support for parsing subcommands
- parse-options: drop leading space from '--git-completion-helper' output
- parse-options: clarify the limitations of PARSE_OPT_NODASH
- parse-options: PARSE_OPT_KEEP_UNKNOWN only applies to --options
- api-parse-options.txt: fix description of OPT_CMDMODE
- t0040-parse-options: test parse_options() with various 'parse_opt_flags'
- t5505-remote.sh: check the behavior without a subcommand
- t3301-notes.sh: check that default operation mode doesn't take arguments
- git.c: update NO_PARSEOPT markings
Introduce the "subcommand" mode to parse-options API and update the
command line parser of Git commands with subcommands.
source: <20220725123857.2773963-1-szeder.dev@gmail.com>
* ds/bundle-uri-clone (2022-07-25) 5 commits
- clone: --bundle-uri cannot be combined with --depth
- bundle-uri: add support for http(s):// and file://
- clone: add --bundle-uri option
- bundle-uri: create basic file-copy logic
- remote-curl: add 'get' capability
Implement "git clone --bundle-uri".
source: <pull.1300.git.1658781277.gitgitgadget@gmail.com>
* ca/unignore-local-installation-on-windows (2022-07-27) 1 commit
- cmake: support local installations of git
Fix build procedure for Windows that uses CMake so that it can pick
up the shell interpreter from local installation location.
Will merge to 'next'.
source: <pull.1304.git.1658912756815.gitgitgadget@gmail.com>
* ds/decorate-filter-tweak (2022-07-29) 10 commits
- fetch: use ref_namespaces during prefetch
- maintenance: stop writing log.excludeDecoration
- log: create log.decorateFilter=all
- log: add --decorate-all option
- log: add default decoration filter
- log-tree: use ref_namespaces instead of if/else-if
- refs: use ref_namespaces for replace refs base
- refs: add array of ref namespaces
- t4207: test coloring of grafted decorations
- refs: allow "HEAD" as decoration filter
The namespaces used by "log --decorate" from "refs/" hierarchy by
default has been tightened.
source: <pull.1301.v2.git.1659122979.gitgitgadget@gmail.com>
* gc/bare-repo-discovery (2022-07-26) 1 commit
(merged to 'next' on 2022-07-28 at 1d2bef98f6)
+ config.c: NULL check when reading protected config
Fix-up for what has been merged to 'master' recently.
Will merge to 'master'.
source: <pull.1299.v2.git.git.1658874067077.gitgitgadget@gmail.com>
* jr/gitweb-title-shortening (2022-07-26) 1 commit
(merged to 'next' on 2022-07-28 at 7528e87220)
+ gitweb: remove title shortening heuristics
Gitweb had legacy URL shortener that is specific to the way
projects hosted on kernel.org used to (but no longer) work, which
has been removed.
Will merge to 'master'.
source: <20220726135911.ycvgwbkixb3ei6w3@jrouhaud>
* es/doc-creation-factor-fix (2022-07-28) 2 commits
- range-diff: clarify --creation-factor=<factor>
- format-patch: clarify --creation-factor=<factor>
Expecting a reroll.
source: <7229p500-p2r4-on87-6802-8o90s36rr3s4@tzk.qr>
* js/lstat-mingw-enotdir-fix (2022-07-29) 1 commit
- lstat(mingw): correctly detect ENOTDIR scenarios
Fix to lstat() emulation on Windows.
Will merge to 'next'.
source: <pull.1291.v3.git.1659089152877.gitgitgadget@gmail.com>
* js/mingw-with-python (2022-07-29) 3 commits
- mingw: remove unneeded `NO_CURL` directive
- mingw: remove unneeded `NO_GETTEXT` directive
- windows: include the Python bits when building Git for Windows
Conditionally allow building Python interpreter on Windows
Will merge to 'next'.
source: <pull.1306.v2.git.1659109272.gitgitgadget@gmail.com>
* ab/submodule-helper-prep (2022-07-28) 20 commits
- submodule--helper: fix bad config API usage
- submodule--helper: don't exit() on failure, return
- submodule--helper: add skeleton "goto cleanup" to update_submodule()
- submodule--helper: rename "int res" to "int ret"
- submodule--helper: refactor "errmsg_str" to be a "struct strbuf"
- submodule--helper: add "const" to copy of "update_data"
- submodule--helper: pass a "const struct module_clone_data" to clone_submodule()
- submodule--helper: stop conflating "sb" in clone_submodule()
- submodule--helper: convert a strbuf_detach() to xstrfmt()
- submodule--helper: replace memset() with { 0 }-initialization
- submodule--helper style: add \n\n after variable declarations
- submodule--helper style: don't separate declared variables with \n\n
- submodule--helper: move "resolve-relative-url-test" to a test-tool
- submodule--helper: move "check-name" to a test-tool
- submodule--helper: move "is-active" to a test-tool
- test-tool submodule-config: remove unused "--url" handling
- submodule--helper: remove unused "list" helper
- submodule--helper: remove unused "name" helper
- submodule tests: test for "add <repository> <abs-path>"
- submodule tests: test usage behavior
(this branch is used by ab/submodule-helper-leakfix.)
source: <cover-00.20-00000000000-20220728T161116Z-avarab@gmail.com>
* ab/dedup-config-and-command-docs (2022-07-29) 9 commits
- docs: add CONFIGURATION sections that fuzzy map to built-ins
- docs: add CONFIGURATION sections that map to a built-in
- log docs: de-duplicate configuration sections
- difftool docs: de-duplicate configuration sections
- notes docs: de-duplicate configuration sections
- apply docs: de-duplicate configuration sections
- send-email docs: de-duplicate configuration sections
- grep docs: de-duplicate configuration sections
- docs: add and use include template for config/* includes
Share the text used to explain configuration variables used by "git
<subcmd>" in "git help <subcmd>" with the text from "git help config".
Will merge to 'next'?
source: <cover-v2-0.9-00000000000-20220729T081959Z-avarab@gmail.com>
* jk/struct-zero-init-with-older-gcc (2022-07-29) 1 commit
- config.mak.dev: squelch -Wno-missing-braces for older gcc
Older gcc with -Wall complains about the universal zero initializer
"struct s = { 0 };" idiom, which makes developers' lives
inconvenient (as -Werror is enabled by DEVELOPER=YesPlease). The
build procedure has been tweaked to help them with thes compilers.
Will merge to 'next'.
source: <YuQ60ZUPBHAVETD7@coredump.intra.peff.net>
* js/ort-clean-up-after-failed-merge (2022-07-29) 2 commits
- merge-ort: do leave trace2 region even if checkout fails
- merge-ort: clean up after failed merge
Plug memory leaks in the failure code path in the "merge-ort" merge
strategy backend.
Will merge to 'next'?
source: <pull.1307.v2.git.1659114727.gitgitgadget@gmail.com>
* js/t5351-freebsd-fix (2022-07-29) 2 commits
- t5351: avoid using `test_cmp` for binary data
- t5351: avoid relying on `core.fsyncMethod = batch` to be supported
Some tests assumed that core.fsyncMethod=batch is supported
everywhere, which broke FreeBSD.
Will merge to 'next'.
source: <pull.1308.git.1659097724.gitgitgadget@gmail.com>
--------------------------------------------------
[Stalled]
* tk/apply-case-insensitive (2022-06-21) 3 commits
- apply: support case-only renames in case-insensitive filesystems
- reset: new failing test for reset of case-insensitive duplicate in index
- t4141: test "git apply" with core.ignorecase
"git apply" barfed on a patch that makes a case-only rename on a
case-insensitive filesystem.
Needs review.
source: <pull.1257.v2.git.1655655027.gitgitgadget@gmail.com>
* bc/stash-export (2022-04-08) 4 commits
- builtin/stash: provide a way to import stashes from a ref
- builtin/stash: provide a way to export stashes to a ref
- builtin/stash: factor out revision parsing into a function
- object-name: make get_oid quietly return an error
A mechanism to export and import stash entries to and from a normal
commit to transfer it across repositories has been introduced.
Expecting a reroll.
cf. <YnL2d4Vr9Vr7W4Hj@camp.crustytoothpaste.net>
source: <20220407215352.3491567-1-sandals@crustytoothpaste.net>
--------------------------------------------------
[Cooking]
* cw/remote-object-info (2022-07-28) 6 commits
- cat-file: add remote-object-info to batch-command
- transport: add client support for object-info
- serve: advertise object-info feature
- protocol-caps: initialization bug fix
- fetch-pack: move fetch initialization
- fetch-pack: refactor packet writing
A client component to talk with the object-info endpoint.
source: <20220728230210.2952731-1-calvinwan@google.com>
* ab/leak-check (2022-07-27) 15 commits
- CI: use "GIT_TEST_SANITIZE_LEAK_LOG=true" in linux-leaks
- upload-pack: fix a memory leak in create_pack_file()
- leak tests: mark passing SANITIZE=leak tests as leak-free
- leak tests: don't skip some tests under SANITIZE=leak
- test-lib: have the "check" mode for SANITIZE=leak consider leak logs
- test-lib: add a GIT_TEST_PASSING_SANITIZE_LEAK=check mode
- test-lib: simplify by removing test_external
- tests: move copy/pasted PERL + Test::More checks to a lib-perl.sh
- t/Makefile: don't remove test-results in "clean-except-prove-cache"
- test-lib: add a SANITIZE=leak logging mode
- t/README: reword the "GIT_TEST_PASSING_SANITIZE_LEAK" description
- test-lib: add a --invert-exit-code switch
- test-lib: fix GIT_EXIT_OK logic errors, use BAIL_OUT
- test-lib: don't set GIT_EXIT_OK before calling test_atexit_handler
- test-lib: use $1, not $@ in test_known_broken_{ok,failure}_
Plugging more leaks.
source: <cover-v3-00.15-00000000000-20220727T230800Z-avarab@gmail.com>
* jc/string-list-cleanup (2022-07-20) 1 commit
(merged to 'next' on 2022-07-27 at 858a0b2a28)
+ builtin/remote.c: use the right kind of STRING_LIST_INIT
Code clean-up.
Will merge to 'master'.
source: <xmqq7d471dns.fsf@gitster.g>
* mt/pkt-line-comment-tweak (2022-07-22) 1 commit
(merged to 'next' on 2022-07-22 at 4004fa75eb)
+ pkt-line.h: move comment closer to the associated code
In-code comment clarification.
Will merge to 'master'.
source: <6a14443c101fa132498297af6d7a483520688d75.1658488203.git.matheus.bernardino@usp.br>
* mt/rot13-in-c (2022-07-24) 2 commits
- t/t0021: convert the rot13-filter.pl script to C
- Merge branch 'mt/checkout-count-fix' into mt/rot13-in-c
(this branch uses mt/checkout-count-fix.)
Test portability improvements.
Needs review.
source: <f38f722de7c3323207eda5ea632b5acd3765c285.1658675222.git.matheus.bernardino@usp.br>
* tk/untracked-cache-with-uall (2022-07-22) 1 commit
(merged to 'next' on 2022-07-25 at b792dd5012)
+ read-cache: make `do_read_index()` always set up `istate->repo`
Fix for a bug that makes write-tree to fail to write out a
non-existent index as a tree, introduced in 2.37.
Will merge to 'master'.
source: <20220722212232.833188-1-martin.agren@gmail.com>
* ds/midx-with-less-memory (2022-07-27) 4 commits
(merged to 'next' on 2022-07-27 at 9ac7aed9f6)
+ write_midx_bitmap(): drop unused refs_snapshot parameter
(merged to 'next' on 2022-07-20 at 250d257c3e)
+ midx: reduce memory pressure while writing bitmaps
+ midx: extract bitmap write setup
+ pack-bitmap-write: use const for hashes
The codepath to write multi-pack index has been taught to release a
large chunk of memory that holds an array of objects in the packs,
as soon as it is done with the array, to reduce memory consumption.
Will merge to 'master'.
source: <pull.1292.v2.git.1658244366.gitgitgadget@gmail.com>
* tl/trace2-config-scope (2022-07-22) 2 commits
- tr2: shows scope unconditionally in addition to key-value pair
- api-trace2.txt: print config key-value pair
Tweak trace2 output about configuration variables.
Expecting a reroll.
cf. <220722.86fsits91m.gmgdl@evledraar.gmail.com>
source: <cover.1658472474.git.dyroneteng@gmail.com>
* cl/rerere-train-with-no-sign (2022-07-19) 1 commit
(merged to 'next' on 2022-07-20 at fbb9414d09)
+ contrib/rerere-train: avoid useless gpg sign in training
"rerere-train" script (in contrib/) used to honor commit.gpgSign
while recreating the throw-away merges.
Will merge to 'master'.
source: <PH7PR14MB5594A27B9295E95ACA4D6A69CE8F9@PH7PR14MB5594.namprd14.prod.outlook.com>
* ab/submodule-helper-leakfix (2022-07-28) 18 commits
- submodule--helper: fix a configure_added_submodule() leak
- submodule--helper: free rest of "displaypath" in "struct update_data"
- submodule--helper: free some "displaypath" in "struct update_data"
- submodule--helper: fix a memory leak in print_status()
- submodule--helper: fix a leak in module_add()
- submodule--helper: fix obscure leak in module_add()
- submodule--helper: fix "reference" leak
- submodule--helper: fix a memory leak in get_default_remote_submodule()
- submodule--helper: fix a leak with repo_clear()
- submodule--helper: fix "sm_path" and other "module_cb_list" leaks
- submodule--helper: fix "errmsg_str" memory leak
- submodule--helper: add and use *_release() functions
- submodule--helper: don't leak {run,capture}_command() cp.dir argument
- submodule--helper: "struct pathspec" memory leak in module_update()
- submodule--helper: fix most "struct pathspec" memory leaks
- submodule--helper: fix trivial get_default_remote_submodule() leak
- submodule--helper: fix a leak in "clone_submodule"
- Merge branch 'ab/submodule-helper-prep' into ab/submodule-helper-leakfix
(this branch uses ab/submodule-helper-prep.)
Plugging leaks in submodule--helper.
Getting there.
source: <cover-v4-00.17-00000000000-20220728T162442Z-avarab@gmail.com>
* jt/fetch-pack-trace2-filter-spec (2022-07-26) 1 commit
(merged to 'next' on 2022-07-28 at 8e6237d6b0)
+ fetch-pack: write effective filter to trace2
"git fetch" client logs the partial clone filter used in the trace2
output.
Will merge to 'master'.
source: <20220726162712.1774355-1-jonathantanmy@google.com>
* mb/doc-rerere-autoupdate (2022-07-15) 1 commit
- cherry-pick doc: clarify no-rerere-autoupdate still allows rerere
Clarifies that the "--no-rerere-autoupdate" option does not disable
the "rerere" mechanism (nor does "--rerere-autoupdate" enable it).
Needs updating, at least for other commands with the same option.
cf. <xmqq35f2ysd9.fsf@gitster.g>
source: <20220715092527.1567837-1-mail@beyermatthias.de>
* rs/mergesort (2022-07-17) 10 commits
(merged to 'next' on 2022-07-27 at 42607a44bb)
+ mergesort: remove llist_mergesort()
+ packfile: use DEFINE_LIST_SORT
+ fetch-pack: use DEFINE_LIST_SORT
+ commit: use DEFINE_LIST_SORT
+ blame: use DEFINE_LIST_SORT
+ test-mergesort: use DEFINE_LIST_SORT
+ test-mergesort: use DEFINE_LIST_SORT_DEBUG
+ mergesort: add macros for typed sort of linked lists
+ mergesort: tighten merge loop
+ mergesort: unify ranks loops
Make our mergesort implementation type-safe.
Will merge to 'master'.
source: <4d7cd286-398e-215c-f2bd-aa7e8207be4f@web.de>
* cw/submodule-merge-messages (2022-07-28) 1 commit
- submodule merge: update conflict error message
Update the message given when "git merge" sees conflicts at a path
with a submodule while merging a superproject.
source: <20220728211221.2913928-1-calvinwan@google.com>
* mt/checkout-count-fix (2022-07-14) 3 commits
(merged to 'next' on 2022-07-22 at 60c73a6b0b)
+ checkout: fix two bugs on the final count of updated entries
+ checkout: show bug about failed entries being included in final report
+ checkout: document bug where delayed checkout counts entries twice
(this branch is used by mt/rot13-in-c.)
"git checkout" miscounted the paths it updated, which has been
corrected.
Will merge to 'master'.
source: <cover.1657799213.git.matheus.bernardino@usp.br>
* tb/commit-graph-genv2-upgrade-fix (2022-07-15) 3 commits
(merged to 'next' on 2022-07-25 at e3464c2c1d)
+ commit-graph: fix corrupt upgrade from generation v1 to v2
+ commit-graph: introduce `repo_find_commit_pos_in_graph()`
+ t5318: demonstrate commit-graph generation v2 corruption
There was a bug in the codepath to upgrade generation information
in commit-graph from v1 to v2 format, which has been corrected.
Will merge to 'master'.
source: <cover.1657667404.git.me@ttaylorr.com>
* js/safe-directory-plus (2022-07-13) 3 commits
- mingw: be more informative when ownership check fails on FAT32
- mingw: handle a file owned by the Administrators group correctly
- Allow debugging unsafe directories' ownership
Expecting a reroll.
cf. <8rqqnqp1-q613-ron6-6q8s-n7sq57o980q9@tzk.qr>
source: <pull.1286.git.1657700238.gitgitgadget@gmail.com>
* po/doc-add-renormalize (2022-07-09) 1 commit
- doc add: renormalize is not idempotent for CRCRLF
Documentation for "git add --renormalize" has been improved.
Expecting a reroll.
cf. <dfe0c1ab-33f8-f13e-71ce-1829bb0d2d7f@iee.email>
source: <d3b8ed97a105ea1d7e656c964b7eee378e11ede6.1657385781.git.gitgitgadget@gmail.com>
* po/glossary-around-traversal (2022-07-09) 3 commits
- glossary: add reachability bitmap description
- glossary: add commit graph description
- glossary: add Object DataBase (ODB) abbreviation
The glossary entries for "commit-graph file" and "reachability
bitmap" have been added.
Expecting a reroll.
cf. <dfe0c1ab-33f8-f13e-71ce-1829bb0d2d7f@iee.email>
source: <pull.1282.git.1657385781.gitgitgadget@gmail.com>
* ac/bitmap-lookup-table (2022-07-20) 6 commits
- bitmap-lookup-table: add performance tests for lookup table
- p5310-pack-bitmaps.sh: enable `pack.writeReverseIndex`
- pack-bitmap: prepare to read lookup table extension
- pack-bitmap-write: learn pack.writeBitmapLookupTable and add tests
- pack-bitmap-write.c: write lookup table extension
- Documentation/technical: describe bitmap lookup table extension
The pack bitmap file gained a bitmap-lookup table to speed up
locating the necessary bitmap for a given commit.
Seems to be flaky-broken under SHA-256.
cf. <p3r70610-8n52-s8q0-n641-onp4ps01330n@tzk.qr>
source: <pull.1266.v5.git.1658342304.gitgitgadget@gmail.com>
* kk/p4-client-name-encoding-fix (2022-07-21) 2 commits
(merged to 'next' on 2022-07-21 at 008518b4e5)
+ git-p4: refactoring of p4CmdList()
(merged to 'next' on 2022-07-11 at 9c18616f76)
+ git-p4: fix bug with encoding of p4 client name
"git p4" did not handle non-ASCII client name well, which has been
corrected.
Will merge to 'master'.
source: <pull.1285.v3.git.git.1658394440.gitgitgadget@gmail.com>
* sa/cat-file-mailmap (2022-07-18) 4 commits
(merged to 'next' on 2022-07-27 at 59c4eb32b3)
+ cat-file: add mailmap support
+ ident: rename commit_rewrite_person() to apply_mailmap_to_header()
+ ident: move commit_rewrite_person() to ident.c
+ revision: improve commit_rewrite_person()
"git cat-file" learned an option to use the mailmap when showing
commit and tag objects.
Will merge to 'master'.
source: <20220718195102.66321-1-siddharthasthana31@gmail.com>
* ds/rebase-update-ref (2022-07-19) 13 commits
(merged to 'next' on 2022-07-20 at 9f4bf9ef6c)
+ sequencer: notify user of --update-refs activity
+ sequencer: ignore HEAD ref under --update-refs
+ rebase: add rebase.updateRefs config option
+ sequencer: rewrite update-refs as user edits todo list
+ rebase: update refs from 'update-ref' commands
+ rebase: add --update-refs option
+ sequencer: add update-ref command
+ sequencer: define array with enum values
+ rebase-interactive: update 'merge' description
+ branch: consider refs under 'update-refs'
+ t2407: test branches currently using apply backend
+ t2407: test bisect and rebase as black-boxes
+ Merge branch 'ds/branch-checked-out' into ds/rebase-update-ref
"git rebase -i" learns to update branches whose tip appear in the
rebased range.
Will merge to 'master'.
source: <pull.1247.v5.git.1658255624.gitgitgadget@gmail.com>
* pw/xdiff-alloc (2022-07-08) 4 commits
(merged to 'next' on 2022-07-25 at 92a39a5ff2)
+ xdiff: introduce XDL_ALLOC_GROW()
+ xdiff: introduce XDL_CALLOC_ARRAY()
+ xdiff: introduce xdl_calloc
+ xdiff: introduce XDL_ALLOC_ARRAY()
Add a level of redirection to array allocation API in xdiff part,
to make it easier to share with the libgit2 project.
Will merge to 'master'.
source: <pull.1272.v2.git.1657297519.gitgitgadget@gmail.com>
* en/merge-restore-to-pristine (2022-07-22) 8 commits
(merged to 'next' on 2022-07-27 at daafc50c15)
+ merge: do not exit restore_state() prematurely
+ merge: ensure we can actually restore pre-merge state
+ merge: make restore_state() restore staged state too
+ merge: fix save_state() to work when there are stat-dirty files
+ merge: do not abort early if one strategy fails to handle the merge
+ merge: abort if index does not match HEAD for trivial merges
+ merge-resolve: abort if index does not match HEAD
+ merge-ort-wrappers: make printed message match the one from recursive
When "git merge" finds that it cannot perform a merge, it should
restore the working tree to the state before the command was
initiated, but in some corner cases it didn't.
Will merge to 'master'.
source: <pull.1231.v5.git.1658541198.gitgitgadget@gmail.com>
* zh/ls-files-format (2022-07-23) 1 commit
(merged to 'next' on 2022-07-27 at b7301f16ce)
+ ls-files: introduce "--format" option
"git ls-files" learns the "--format" option to tweak its output.
Will merge to 'master'.
source: <pull.1262.v9.git.1658558685407.gitgitgadget@gmail.com>
* jt/connected-show-missing-from-which-side (2022-06-10) 1 commit
- fetch,fetch-pack: clarify connectivity check error
We may find an object missing after a "git fetch" stores the
objects it obtained from the other side, but it is not necessarily
because the remote failed to send necessary objects. Reword the
messages in an attempt to help users explore other possibilities
when they hit this error.
Expecting a reroll.
source: <20220610195247.1177549-1-jonathantanmy@google.com>
* tb/show-ref-count (2022-06-06) 2 commits
- builtin/show-ref.c: limit output with `--count`
- builtin/show-ref.c: rename `found_match` to `matches_nr`
"git show-ref" learned to stop after emitting N refs with the new
"--count=N" option.
Expecting a reroll.
cf. <xmqqczfl4ce1.fsf@gitster.g>
source: <cover.1654552560.git.me@ttaylorr.com>
* ds/bundle-uri-more (2022-07-25) 2 commits
- bundle-uri: add example bundle organization
- docs: document bundle URI standard
The "bundle URI" topic.
Needs review.
source: <pull.1248.v3.git.1658757188.gitgitgadget@gmail.com>
* js/bisect-in-c (2022-06-27) 16 commits
- bisect: no longer try to clean up left-over `.git/head-name` files
- bisect: remove Cogito-related code
- Turn `git bisect` into a full built-in
- bisect: move even the command-line parsing to `bisect--helper`
- bisect: teach the `bisect--helper` command to show the correct usage strings
- bisect--helper: return only correct exit codes in `cmd_*()`
- bisect--helper: move the `BISECT_STATE` case to the end
- bisect--helper: make `--bisect-state` optional
- bisect--helper: align the sub-command order with git-bisect.sh
- bisect--helper: using `--bisect-state` without an argument is a bug
- bisect--helper: really retire `--bisect-autostart`
- bisect--helper: really retire --bisect-next-check
- bisect--helper: retire the --no-log option
- bisect: avoid double-quoting when printing the failed command
- bisect run: fix the error message
- bisect: verify that a bogus option won't try to start a bisection
Final bits of "git bisect.sh" have been rewritten in C.
Expecting a (hopefully final) reroll.
cf. <20627.86ilolhnnn.gmgdl@evledraar.gmail.com>
source: <pull.1132.v4.git.1656354677.gitgitgadget@gmail.com>
--------------------------------------------------
[Discarded]
* ar/send-email-confirm-by-default (2022-04-22) 1 commit
. send-email: always confirm by default
"git send-email" is changed so that by default it asks for
confirmation before sending each message out.
Discarded.
I wanted to like this, and had it in the version of Git I use
myself for daily work, but the prompting turned out to be somewhat
distracting.
source: <20220422083629.1404989-1-hi@alyssa.is>
* mt/doc-config (2022-07-14) 3 commits
. doc: notes: unify configuration variables definitions
. doc: apply: unify configuration variables definitions
. doc: grep: unify configuration variables definitions
Unify description of configuration variables used by individual
commands in the documentation of the commands and the documentation
of the "git config".
Retracted.
cf. <20220723134834.9693-1-matheus.bernardino@usp.br>
source: <cover.1657819649.git.matheus.bernardino@usp.br>
^ permalink raw reply [relevance 3%]
* Re: [PATCH v3 3/7] merge: do not abort early if one strategy fails to handle the merge
2022-07-21 8:16 2% ` [PATCH v3 3/7] merge: do not abort early if one strategy fails to handle the merge Elijah Newren via GitGitGadget
@ 2022-07-25 10:38 0% ` Ævar Arnfjörð Bjarmason
0 siblings, 0 replies; 200+ results
From: Ævar Arnfjörð Bjarmason @ 2022-07-25 10:38 UTC (permalink / raw)
To: Elijah Newren via GitGitGadget
Cc: git, ZheNing Hu, Eric Sunshine, Junio C Hamano, Elijah Newren
On Thu, Jul 21 2022, Elijah Newren via GitGitGadget wrote:
> From: Elijah Newren <newren@gmail.com>
>
> builtin/merge is setup to allow multiple strategies to be specified,
> and it will find the "best" result and use it. This is defeated if
> some of the merge strategies abort early when they cannot handle the
> merge. Fix the logic that calls recursive and ort to not do such an
> early abort, but instead return "2" or "unhandled" so that the next
> strategy can try to handle the merge.
>
> Coming up with a testcase for this is somewhat difficult, since
> recursive and ort both handle nearly any two-headed merge (there is
> a separate code path that checks for non-two-headed merges and
> already returns "2" for them). So use a somewhat synthetic testcase
> of having the index not match HEAD before the merge starts, since all
> merge strategies will abort for that.
>
> Signed-off-by: Elijah Newren <newren@gmail.com>
> ---
> builtin/merge.c | 6 ++++--
> t/t6402-merge-rename.sh | 2 +-
> t/t6424-merge-unrelated-index-changes.sh | 16 ++++++++++++++++
> t/t6439-merge-co-error-msgs.sh | 1 +
> 4 files changed, 22 insertions(+), 3 deletions(-)
>
> diff --git a/builtin/merge.c b/builtin/merge.c
> index 13884b8e836..dec7375bf2a 100644
> --- a/builtin/merge.c
> +++ b/builtin/merge.c
> @@ -754,8 +754,10 @@ static int try_merge_strategy(const char *strategy, struct commit_list *common,
> else
> clean = merge_recursive(&o, head, remoteheads->item,
> reversed, &result);
> - if (clean < 0)
> - exit(128);
> + if (clean < 0) {
> + rollback_lock_file(&lock);
> + return 2;
> + }
> if (write_locked_index(&the_index, &lock,
> COMMIT_LOCK | SKIP_IF_UNCHANGED))
> die(_("unable to write %s"), get_index_file());
> diff --git a/t/t6402-merge-rename.sh b/t/t6402-merge-rename.sh
> index 3a32b1a45cf..772238e582c 100755
> --- a/t/t6402-merge-rename.sh
> +++ b/t/t6402-merge-rename.sh
> @@ -210,7 +210,7 @@ test_expect_success 'updated working tree file should prevent the merge' '
> echo >>M one line addition &&
> cat M >M.saved &&
> git update-index M &&
> - test_expect_code 128 git pull --no-rebase . yellow &&
> + test_expect_code 2 git pull --no-rebase . yellow &&
> test_cmp M M.saved &&
> rm -f M.saved
> '
> diff --git a/t/t6424-merge-unrelated-index-changes.sh b/t/t6424-merge-unrelated-index-changes.sh
> index f35d3182b86..8b749e19083 100755
> --- a/t/t6424-merge-unrelated-index-changes.sh
> +++ b/t/t6424-merge-unrelated-index-changes.sh
> @@ -268,4 +268,20 @@ test_expect_success 'subtree' '
> test_path_is_missing .git/MERGE_HEAD
> '
>
> +test_expect_success 'resolve && recursive && ort' '
> + git reset --hard &&
> + git checkout B^0 &&
> +
> + test_seq 0 10 >a &&
> + git add a &&
> +
> + sane_unset GIT_TEST_MERGE_ALGORITHM &&
> + test_must_fail git merge -s resolve -s recursive -s ort C^0 >output 2>&1 &&
> +
> + grep "Trying merge strategy resolve..." output &&
> + grep "Trying merge strategy recursive..." output &&
> + grep "Trying merge strategy ort..." output &&
> + grep "No merge strategy handled the merge." output
> +'
> +
> test_done
> diff --git a/t/t6439-merge-co-error-msgs.sh b/t/t6439-merge-co-error-msgs.sh
> index 5bfb027099a..52cf0c87690 100755
> --- a/t/t6439-merge-co-error-msgs.sh
> +++ b/t/t6439-merge-co-error-msgs.sh
> @@ -47,6 +47,7 @@ test_expect_success 'untracked files overwritten by merge (fast and non-fast for
> export GIT_MERGE_VERBOSITY &&
> test_must_fail git merge branch 2>out2
> ) &&
> + echo "Merge with strategy ${GIT_TEST_MERGE_ALGORITHM:-ort} failed." >>expect &&
> test_cmp out2 expect &&
> git reset --hard HEAD^
> '
I'm re-rolling ab/leak-check, and came up with the below (at the very
end) to "fix" a report in builtin/merge.c, reading your commit message
your fix seems obviously better.
Mine's early WIP, and I e.g. didn't notice that I forgot to unlock the
&lock file, which is correct.
I *could* say "that's not my problem", i.e. we didn't unlock it before
(we rely on atexit). The truth is I just missed it, but having said that
it *is* true that we could do without it, or do it as a separate chaneg.
I'm just posting my version below to help move yours forward, i.e. to
show that someone else has carefully at least this part.
But it is worth noting from staring at the two that your version is
mixing several different behavior changes into one, which *could* be
split up (but whether you think that's worth it I leave to you).
Maybe I'm the only one initially confused by it, and that's probably
just from being mentally biased towards my own "solution". Those are (at
least):
1. Before we didn't explicitly unlock() before exit(), but had atexit()
do it, that could be a one-line first commit. This change is
obviously good.
2. A commit like mine could come next, i.e. we bug-for-bug do what we
do do now, but just run the "post-builtin" logic when we return from
cmd_merge().
Doing it as an in-between would be some churn, as we'll need to get
rid of "early_exit" again, but would allow us to incrementally move
forward to...
3. ...then we'd say "but it actually makes sense not to early abort",
i.e. you want to change this so that we'll run the logic between
try_merge_strategy() exiting with 128 now and the return from
cmd_merge().
This bit is my main sticking point in reviewing your change,
i.e. your "a testcase for this is somewhat difficult" somewhat
addresses this, but (and maybe I'm wrong) it seems to me that
Editing that code the post-image looks like this, with my
commentary & most of the code removed, i.e. just focusing on the
branches we do and don't potentially have tests for:
/* Before this we fall through from ret == 128 (or ret == 2...) */
if (automerge_was_ok) { // not tested?
if (!best_strategy) {
// we test this...
if (use_strategies_nr > 1)
// And this: _("No merge strategy handled the merge.\n"));
else
// And this: _("Merge with strategy %s failed.\n"),
} else if (best_strategy == wt_strategy)
// but not this?
else
// Or this, where we e.g. say "Rewinding the tree to pristene..."?
if (squash) {
// this?
} else
// this? (probably, yes)
write_merge_state(remoteheads);
if (merge_was_ok)
// this? (probably, yes, we just don't grep it?)
else
// this? maybe yes because it's covered by the
// "failed" above too?
ret = suggest_conflicts();
done:
if (!automerge_was_ok) {
// this? ditto the first "not tested?"
}
I.e. are you confident that we want to continue now in these various
cases, where we have squash, !automerge_was_ok etc. I think it would
be really useful to comment on (perhaps by amending the above
pseudocode) what test cases we're not testing / test already etc.
4. Having done all that (or maybe this can't be split up / needs to
come earlier) you say that we'd like to not generically call this
exit state 128, but have it under the "exit(2)" umbrella.
Again, all just food for thought, and a way to step-by-step go through
how I came about reviewing this in detail, I hope it and the below
version I came up with before seeing yours helps.
P.s.: The last paragraph in my commit message does not point to some
hidden edge case in the code behavior here, it's just that clang/gcc are
funny about exit() and die() control flow when combined with
-fsanitize=address and higher optimization levels.
-- >8 --
Subject: [PATCH] merge: return, don't use exit()
Change some of the builtin/merge.c code added in f241ff0d0a9 (prepare
the builtins for a libified merge_recursive(), 2016-07-26) to ferry up
an "early return" state, rather than having try_merge_strategy() call
exit() itself.
This is a follow-up to dda31145d79 (Merge branch
'ab/usage-die-message' into gc/branch-recurse-submodules-fix,
2022-03-31).
The only behavior change here is that we'll now properly catch other
issues on our way out, see e.g. [1] and the interaction with /dev/full
for an example.
The immediate reason to do this change is because it's one of the
cases where clang and gcc's SANITIZE=leak behavior differs. Under
clang we don't detect that "t/t6415-merge-dir-to-symlink.sh" triggers
a leak, but gcc spots it.
1. https://lore.kernel.org/git/87im2n3gje.fsf@evledraar.gmail.com/
Signed-off-by: Ævar Arnfjörð Bjarmason <avarab@gmail.com>
---
builtin/merge.c | 27 +++++++++++++++++++++------
1 file changed, 21 insertions(+), 6 deletions(-)
diff --git a/builtin/merge.c b/builtin/merge.c
index 23170f2d2a6..a8d5d04f622 100644
--- a/builtin/merge.c
+++ b/builtin/merge.c
@@ -709,10 +709,12 @@ static void write_tree_trivial(struct object_id *oid)
static int try_merge_strategy(const char *strategy, struct commit_list *common,
struct commit_list *remoteheads,
- struct commit *head)
+ struct commit *head, int *early_exit)
{
const char *head_arg = "HEAD";
+ *early_exit = 0;
+
if (refresh_and_write_cache(REFRESH_QUIET, SKIP_IF_UNCHANGED, 0) < 0)
return error(_("Unable to write index."));
@@ -754,8 +756,10 @@ static int try_merge_strategy(const char *strategy, struct commit_list *common,
else
clean = merge_recursive(&o, head, remoteheads->item,
reversed, &result);
- if (clean < 0)
- exit(128);
+ if (clean < 0) {
+ *early_exit = 1;
+ return 128;
+ }
if (write_locked_index(&the_index, &lock,
COMMIT_LOCK | SKIP_IF_UNCHANGED))
die(_("unable to write %s"), get_index_file());
@@ -1665,6 +1669,8 @@ int cmd_merge(int argc, const char **argv, const char *prefix)
for (i = 0; !merge_was_ok && i < use_strategies_nr; i++) {
int ret, cnt;
+ int early_exit;
+
if (i) {
printf(_("Rewinding the tree to pristine...\n"));
restore_state(&head_commit->object.oid, &stash);
@@ -1680,7 +1686,10 @@ int cmd_merge(int argc, const char **argv, const char *prefix)
ret = try_merge_strategy(use_strategies[i]->name,
common, remoteheads,
- head_commit);
+ head_commit, &early_exit);
+ if (early_exit)
+ goto done;
+
/*
* The backend exits with 1 when conflicts are
* left to be resolved, with 2 when it does not
@@ -1732,12 +1741,18 @@ int cmd_merge(int argc, const char **argv, const char *prefix)
} else if (best_strategy == wt_strategy)
; /* We already have its result in the working tree. */
else {
+ int new_ret, early_exit;
+
printf(_("Rewinding the tree to pristine...\n"));
restore_state(&head_commit->object.oid, &stash);
printf(_("Using the %s strategy to prepare resolving by hand.\n"),
best_strategy);
- try_merge_strategy(best_strategy, common, remoteheads,
- head_commit);
+ new_ret = try_merge_strategy(best_strategy, common, remoteheads,
+ head_commit, &early_exit);
+ if (early_exit) {
+ ret = new_ret;
+ goto done;
+ }
}
if (squash) {
--
2.36.1
^ permalink raw reply related [relevance 0%]
* en/merge-restore-to-pristine (Was: Re: What's cooking in git.git (Jul 2022, #07; Fri, 22))
2022-07-23 1:01 3% What's cooking in git.git (Jul 2022, #07; Fri, 22) Junio C Hamano
@ 2022-07-23 2:28 0% ` Elijah Newren
0 siblings, 0 replies; 200+ results
From: Elijah Newren @ 2022-07-23 2:28 UTC (permalink / raw)
To: Junio C Hamano; +Cc: Git Mailing List
On Fri, Jul 22, 2022 at 6:55 PM Junio C Hamano <junio@pobox.com> wrote:
>
> * en/merge-restore-to-pristine (2022-07-21) 7 commits
> - merge: do not exit restore_state() prematurely
> - merge: ensure we can actually restore pre-merge state
> - merge: make restore_state() restore staged state too
> - merge: fix save_state() to work when there are stat-dirty files
> - merge: do not abort early if one strategy fails to handle the merge
> - merge-resolve: abort if index does not match HEAD
> - merge-ort-wrappers: make printed message match the one from recursive
>
> When "git merge" finds that it cannot perform a merge, it should
> restore the working tree to the state before the command was
> initiated, but in some corner cases it didn't.
>
> Will merge to 'next'?
> source: <pull.1231.v3.git.1658391391.gitgitgadget@gmail.com>
I just submitted a v5 based on some feedback from Ævar.
(Also, did you forget to update the source link by chance? Your
referenced source link is v3, but the version in your tree is v4.)
^ permalink raw reply [relevance 0%]
* [PATCH v5 0/8] Fix merge restore state
2022-07-22 5:15 3% ` [PATCH v4 0/7] Fix merge restore state Elijah Newren via GitGitGadget
` (2 preceding siblings ...)
2022-07-22 5:15 2% ` [PATCH v4 4/7] merge: fix save_state() to work when there are stat-dirty files Elijah Newren via GitGitGadget
@ 2022-07-23 1:53 3% ` Elijah Newren via GitGitGadget
2022-07-23 1:53 2% ` [PATCH v5 2/8] merge-resolve: abort if index does not match HEAD Elijah Newren via GitGitGadget
` (2 more replies)
3 siblings, 3 replies; 200+ results
From: Elijah Newren via GitGitGadget @ 2022-07-23 1:53 UTC (permalink / raw)
To: git
Cc: ZheNing Hu, Eric Sunshine, Junio C Hamano, Elijah Newren,
Ævar Arnfjörð Bjarmason, Elijah Newren
This started as a simple series to fix restore_state() in builtin/merge.c,
fixing an issue reported by ZheNing Hu[3]. It now fixes several bugs and has
grown so much it's hard to call it simple. Anyway...
Changes since v4:
* Made use of the error() function in another place to simplify code
(should have caught this in v3)
* Split the fixes for 'resolve' and the trivial merge into separate
patches, and make sure one doesn't mask the other but both codepaths are
exercises in the testsuite
* better test descriptions
* use strvec to simplify some code
[1]
https://lore.kernel.org/git/CAOLTT8R7QmpvaFPTRs3xTpxr7eiuxF-ZWtvUUSC0-JOo9Y+SqA@mail.gmail.com/
Elijah Newren (8):
merge-ort-wrappers: make printed message match the one from recursive
merge-resolve: abort if index does not match HEAD
merge: abort if index does not match HEAD for trivial merges
merge: do not abort early if one strategy fails to handle the merge
merge: fix save_state() to work when there are stat-dirty files
merge: make restore_state() restore staged state too
merge: ensure we can actually restore pre-merge state
merge: do not exit restore_state() prematurely
builtin/merge.c | 57 ++++++++++++++++-----
git-merge-resolve.sh | 10 ++++
merge-ort-wrappers.c | 4 +-
t/t6402-merge-rename.sh | 2 +-
t/t6424-merge-unrelated-index-changes.sh | 65 ++++++++++++++++++++++++
t/t6439-merge-co-error-msgs.sh | 1 +
t/t7607-merge-state.sh | 32 ++++++++++++
7 files changed, 154 insertions(+), 17 deletions(-)
create mode 100755 t/t7607-merge-state.sh
base-commit: e72d93e88cb20b06e88e6e7d81bd1dc4effe453f
Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-1231%2Fnewren%2Ffix-merge-restore-state-v5
Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-1231/newren/fix-merge-restore-state-v5
Pull-Request: https://github.com/gitgitgadget/git/pull/1231
Range-diff vs v4:
1: bd36d16c8d9 = 1: bd36d16c8d9 merge-ort-wrappers: make printed message match the one from recursive
2: b79f44e54b9 ! 2: b656756fd37 merge-resolve: abort if index does not match HEAD
@@ Commit message
Signed-off-by: Elijah Newren <newren@gmail.com>
- ## builtin/merge.c ##
-@@ builtin/merge.c: int cmd_merge(int argc, const char **argv, const char *prefix)
- */
- refresh_cache(REFRESH_QUIET);
- if (allow_trivial && fast_forward != FF_ONLY) {
-+ /*
-+ * Must first ensure that index matches HEAD before
-+ * attempting a trivial merge.
-+ */
-+ struct tree *head_tree = get_commit_tree(head_commit);
-+ struct strbuf sb = STRBUF_INIT;
-+
-+ if (repo_index_has_changes(the_repository, head_tree,
-+ &sb)) {
-+ struct strbuf err = STRBUF_INIT;
-+ strbuf_addstr(&err, "error: ");
-+ strbuf_addf(&err, _("Your local changes to the following files would be overwritten by merge:\n %s"),
-+ sb.buf);
-+ strbuf_addch(&err, '\n');
-+ fputs(err.buf, stderr);
-+ strbuf_release(&err);
-+ strbuf_release(&sb);
-+ return -1;
-+ }
-+
- /* See if it is really trivial. */
- git_committer_info(IDENT_STRICT);
- printf(_("Trying really trivial in-index merge...\n"));
-
## git-merge-resolve.sh ##
@@
#
@@ t/t6424-merge-unrelated-index-changes.sh: test_expect_success 'resolve, non-triv
test_path_is_missing .git/MERGE_HEAD
'
-+test_expect_success 'resolve, trivial, related file removed' '
-+ git reset --hard &&
-+ git checkout B^0 &&
-+
-+ git rm a &&
-+ test_path_is_missing a &&
-+
-+ test_must_fail git merge -s resolve C^0 &&
-+
-+ test_path_is_missing a &&
-+ test_path_is_missing .git/MERGE_HEAD
-+'
-+
+test_expect_success 'resolve, non-trivial, related file removed' '
+ git reset --hard &&
+ git checkout B^0 &&
-: ----------- > 3: 3adfd921995 merge: abort if index does not match HEAD for trivial merges
3: 02930448ea1 ! 4: c5755271cf1 merge: do not abort early if one strategy fails to handle the merge
@@ t/t6424-merge-unrelated-index-changes.sh: test_expect_success 'subtree' '
test_path_is_missing .git/MERGE_HEAD
'
-+test_expect_success 'resolve && recursive && ort' '
++test_expect_success 'with multiple strategies, recursive or ort failure do not early abort' '
+ git reset --hard &&
+ git checkout B^0 &&
+
@@ t/t6424-merge-unrelated-index-changes.sh: test_expect_success 'subtree' '
+ git add a &&
+
+ sane_unset GIT_TEST_MERGE_ALGORITHM &&
-+ test_must_fail git merge -s resolve -s recursive -s ort C^0 >output 2>&1 &&
++ test_must_fail git merge -s recursive -s ort -s octopus C^0 >output 2>&1 &&
+
-+ grep "Trying merge strategy resolve..." output &&
+ grep "Trying merge strategy recursive..." output &&
+ grep "Trying merge strategy ort..." output &&
++ grep "Trying merge strategy octopus..." output &&
+ grep "No merge strategy handled the merge." output
+'
+
4: daf8d224160 ! 5: e7c6de9e0c1 merge: fix save_state() to work when there are stat-dirty files
@@ t/t6424-merge-unrelated-index-changes.sh: test_expect_success 'subtree' '
+ git merge -s resolve -s recursive D^0
+'
+
- test_expect_success 'resolve && recursive && ort' '
+ test_expect_success 'with multiple strategies, recursive or ort failure do not early abort' '
git reset --hard &&
git checkout B^0 &&
5: f401bd5ad0d ! 6: d39d6472455 merge: make restore_state() restore staged state too
@@ Commit message
changes. Fix this by adding the "--index" option to "git stash apply".
While at it, also squelch the stash apply output; we already report
"Rewinding the tree to pristine..." and don't need a detailed `git
- status` report afterwards.
+ status` report afterwards. Also while at it, switch to using strvec
+ so folks don't have to count the arguments to ensure we avoided an
+ off-by-one error, and so it's easier to add additional arguments to
+ the command.
Signed-off-by: Elijah Newren <newren@gmail.com>
@@ builtin/merge.c: static void reset_hard(const struct object_id *oid, int verbose
const struct object_id *stash)
{
- const char *args[] = { "stash", "apply", NULL, NULL };
-+ const char *args[] = { "stash", "apply", "--index", "--quiet",
-+ NULL, NULL };
++ struct strvec args = STRVEC_INIT;
if (is_null_oid(stash))
return;
@@ builtin/merge.c: static void reset_hard(const struct object_id *oid, int verbose
reset_hard(head, 1);
- args[2] = oid_to_hex(stash);
-+ args[4] = oid_to_hex(stash);
++ strvec_pushl(&args, "stash", "apply", "--index", "--quiet", NULL);
++ strvec_push(&args, oid_to_hex(stash));
/*
* It is OK to ignore error here, for example when there was
+ * nothing to restore.
+ */
+- run_command_v_opt(args, RUN_GIT_CMD);
++ run_command_v_opt(args.v, RUN_GIT_CMD);
++ strvec_clear(&args);
+
+ refresh_cache(REFRESH_QUIET);
+ }
## t/t6424-merge-unrelated-index-changes.sh ##
-@@ t/t6424-merge-unrelated-index-changes.sh: test_expect_success 'resolve && recursive && ort' '
+@@ t/t6424-merge-unrelated-index-changes.sh: test_expect_success 'with multiple strategies, recursive or ort failure do not e
test_seq 0 10 >a &&
git add a &&
+ git rev-parse :a >expect &&
sane_unset GIT_TEST_MERGE_ALGORITHM &&
- test_must_fail git merge -s resolve -s recursive -s ort C^0 >output 2>&1 &&
-@@ t/t6424-merge-unrelated-index-changes.sh: test_expect_success 'resolve && recursive && ort' '
- grep "Trying merge strategy resolve..." output &&
+ test_must_fail git merge -s recursive -s ort -s octopus C^0 >output 2>&1 &&
+@@ t/t6424-merge-unrelated-index-changes.sh: test_expect_success 'with multiple strategies, recursive or ort failure do not e
grep "Trying merge strategy recursive..." output &&
grep "Trying merge strategy ort..." output &&
+ grep "Trying merge strategy octopus..." output &&
- grep "No merge strategy handled the merge." output
+ grep "No merge strategy handled the merge." output &&
+
6: ad5354c219c = 7: 7f5c6884d68 merge: ensure we can actually restore pre-merge state
7: 6212d572604 ! 8: 954dec526a2 merge: do not exit restore_state() prematurely
@@ Commit message
## builtin/merge.c ##
@@ builtin/merge.c: static void restore_state(const struct object_id *head,
- const char *args[] = { "stash", "apply", "--index", "--quiet",
- NULL, NULL };
+ {
+ struct strvec args = STRVEC_INIT;
- if (is_null_oid(stash))
- return;
@@ builtin/merge.c: static void restore_state(const struct object_id *head,
+ if (is_null_oid(stash))
+ goto refresh_cache;
+
- args[4] = oid_to_hex(stash);
+ strvec_pushl(&args, "stash", "apply", "--index", "--quiet", NULL);
+ strvec_push(&args, oid_to_hex(stash));
- /*
@@ builtin/merge.c: static void restore_state(const struct object_id *head,
- */
- run_command_v_opt(args, RUN_GIT_CMD);
+ run_command_v_opt(args.v, RUN_GIT_CMD);
+ strvec_clear(&args);
- refresh_cache(REFRESH_QUIET);
+refresh_cache:
@@ t/t7607-merge-state.sh (new)
+export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME
+. ./test-lib.sh
+
-+test_expect_success 'set up custom strategy' '
++test_expect_success 'Ensure we restore original state if no merge strategy handles it' '
+ test_commit --no-tag "Initial" base base &&
+
+ for b in branch1 branch2 branch3
--
gitgitgadget
^ permalink raw reply [relevance 3%]
* [PATCH v5 4/8] merge: do not abort early if one strategy fails to handle the merge
2022-07-23 1:53 3% ` [PATCH v5 0/8] Fix merge restore state Elijah Newren via GitGitGadget
2022-07-23 1:53 2% ` [PATCH v5 2/8] merge-resolve: abort if index does not match HEAD Elijah Newren via GitGitGadget
@ 2022-07-23 1:53 2% ` Elijah Newren via GitGitGadget
2022-07-23 1:53 2% ` [PATCH v5 5/8] merge: fix save_state() to work when there are stat-dirty files Elijah Newren via GitGitGadget
2 siblings, 0 replies; 200+ results
From: Elijah Newren via GitGitGadget @ 2022-07-23 1:53 UTC (permalink / raw)
To: git
Cc: ZheNing Hu, Eric Sunshine, Junio C Hamano, Elijah Newren,
Ævar Arnfjörð Bjarmason, Elijah Newren,
Elijah Newren
From: Elijah Newren <newren@gmail.com>
builtin/merge is setup to allow multiple strategies to be specified,
and it will find the "best" result and use it. This is defeated if
some of the merge strategies abort early when they cannot handle the
merge. Fix the logic that calls recursive and ort to not do such an
early abort, but instead return "2" or "unhandled" so that the next
strategy can try to handle the merge.
Coming up with a testcase for this is somewhat difficult, since
recursive and ort both handle nearly any two-headed merge (there is
a separate code path that checks for non-two-headed merges and
already returns "2" for them). So use a somewhat synthetic testcase
of having the index not match HEAD before the merge starts, since all
merge strategies will abort for that.
Signed-off-by: Elijah Newren <newren@gmail.com>
---
builtin/merge.c | 6 ++++--
t/t6402-merge-rename.sh | 2 +-
t/t6424-merge-unrelated-index-changes.sh | 16 ++++++++++++++++
t/t6439-merge-co-error-msgs.sh | 1 +
4 files changed, 22 insertions(+), 3 deletions(-)
diff --git a/builtin/merge.c b/builtin/merge.c
index b43876f68e4..c120ad619c4 100644
--- a/builtin/merge.c
+++ b/builtin/merge.c
@@ -754,8 +754,10 @@ static int try_merge_strategy(const char *strategy, struct commit_list *common,
else
clean = merge_recursive(&o, head, remoteheads->item,
reversed, &result);
- if (clean < 0)
- exit(128);
+ if (clean < 0) {
+ rollback_lock_file(&lock);
+ return 2;
+ }
if (write_locked_index(&the_index, &lock,
COMMIT_LOCK | SKIP_IF_UNCHANGED))
die(_("unable to write %s"), get_index_file());
diff --git a/t/t6402-merge-rename.sh b/t/t6402-merge-rename.sh
index 3a32b1a45cf..772238e582c 100755
--- a/t/t6402-merge-rename.sh
+++ b/t/t6402-merge-rename.sh
@@ -210,7 +210,7 @@ test_expect_success 'updated working tree file should prevent the merge' '
echo >>M one line addition &&
cat M >M.saved &&
git update-index M &&
- test_expect_code 128 git pull --no-rebase . yellow &&
+ test_expect_code 2 git pull --no-rebase . yellow &&
test_cmp M M.saved &&
rm -f M.saved
'
diff --git a/t/t6424-merge-unrelated-index-changes.sh b/t/t6424-merge-unrelated-index-changes.sh
index 187c761ad84..615061c7af4 100755
--- a/t/t6424-merge-unrelated-index-changes.sh
+++ b/t/t6424-merge-unrelated-index-changes.sh
@@ -275,4 +275,20 @@ test_expect_success 'subtree' '
test_path_is_missing .git/MERGE_HEAD
'
+test_expect_success 'with multiple strategies, recursive or ort failure do not early abort' '
+ git reset --hard &&
+ git checkout B^0 &&
+
+ test_seq 0 10 >a &&
+ git add a &&
+
+ sane_unset GIT_TEST_MERGE_ALGORITHM &&
+ test_must_fail git merge -s recursive -s ort -s octopus C^0 >output 2>&1 &&
+
+ grep "Trying merge strategy recursive..." output &&
+ grep "Trying merge strategy ort..." output &&
+ grep "Trying merge strategy octopus..." output &&
+ grep "No merge strategy handled the merge." output
+'
+
test_done
diff --git a/t/t6439-merge-co-error-msgs.sh b/t/t6439-merge-co-error-msgs.sh
index 5bfb027099a..52cf0c87690 100755
--- a/t/t6439-merge-co-error-msgs.sh
+++ b/t/t6439-merge-co-error-msgs.sh
@@ -47,6 +47,7 @@ test_expect_success 'untracked files overwritten by merge (fast and non-fast for
export GIT_MERGE_VERBOSITY &&
test_must_fail git merge branch 2>out2
) &&
+ echo "Merge with strategy ${GIT_TEST_MERGE_ALGORITHM:-ort} failed." >>expect &&
test_cmp out2 expect &&
git reset --hard HEAD^
'
--
gitgitgadget
^ permalink raw reply related [relevance 2%]
* [PATCH v5 5/8] merge: fix save_state() to work when there are stat-dirty files
2022-07-23 1:53 3% ` [PATCH v5 0/8] Fix merge restore state Elijah Newren via GitGitGadget
2022-07-23 1:53 2% ` [PATCH v5 2/8] merge-resolve: abort if index does not match HEAD Elijah Newren via GitGitGadget
2022-07-23 1:53 2% ` [PATCH v5 4/8] merge: do not abort early if one strategy fails to handle the merge Elijah Newren via GitGitGadget
@ 2022-07-23 1:53 2% ` Elijah Newren via GitGitGadget
2 siblings, 0 replies; 200+ results
From: Elijah Newren via GitGitGadget @ 2022-07-23 1:53 UTC (permalink / raw)
To: git
Cc: ZheNing Hu, Eric Sunshine, Junio C Hamano, Elijah Newren,
Ævar Arnfjörð Bjarmason, Elijah Newren,
Elijah Newren
From: Elijah Newren <newren@gmail.com>
When there are stat-dirty files, but no files are modified,
`git stash create` exits with unsuccessful status. This causes merge
to fail. Copy some code from sequencer.c's create_autostash to refresh
the index first to avoid this problem.
Signed-off-by: Elijah Newren <newren@gmail.com>
---
builtin/merge.c | 8 ++++++++
t/t6424-merge-unrelated-index-changes.sh | 11 +++++++++++
2 files changed, 19 insertions(+)
diff --git a/builtin/merge.c b/builtin/merge.c
index c120ad619c4..780b4b9100a 100644
--- a/builtin/merge.c
+++ b/builtin/merge.c
@@ -313,8 +313,16 @@ static int save_state(struct object_id *stash)
int len;
struct child_process cp = CHILD_PROCESS_INIT;
struct strbuf buffer = STRBUF_INIT;
+ struct lock_file lock_file = LOCK_INIT;
+ int fd;
int rc = -1;
+ fd = repo_hold_locked_index(the_repository, &lock_file, 0);
+ refresh_cache(REFRESH_QUIET);
+ if (0 <= fd)
+ repo_update_index_if_able(the_repository, &lock_file);
+ rollback_lock_file(&lock_file);
+
strvec_pushl(&cp.args, "stash", "create", NULL);
cp.out = -1;
cp.git_cmd = 1;
diff --git a/t/t6424-merge-unrelated-index-changes.sh b/t/t6424-merge-unrelated-index-changes.sh
index 615061c7af4..2c83210f9fd 100755
--- a/t/t6424-merge-unrelated-index-changes.sh
+++ b/t/t6424-merge-unrelated-index-changes.sh
@@ -275,6 +275,17 @@ test_expect_success 'subtree' '
test_path_is_missing .git/MERGE_HEAD
'
+test_expect_success 'avoid failure due to stat-dirty files' '
+ git reset --hard &&
+ git checkout B^0 &&
+
+ # Make "a" be stat-dirty
+ test-tool chmtime =+1 a &&
+
+ # stat-dirty file should not prevent stash creation in builtin/merge.c
+ git merge -s resolve -s recursive D^0
+'
+
test_expect_success 'with multiple strategies, recursive or ort failure do not early abort' '
git reset --hard &&
git checkout B^0 &&
--
gitgitgadget
^ permalink raw reply related [relevance 2%]
* [PATCH v5 2/8] merge-resolve: abort if index does not match HEAD
2022-07-23 1:53 3% ` [PATCH v5 0/8] Fix merge restore state Elijah Newren via GitGitGadget
@ 2022-07-23 1:53 2% ` Elijah Newren via GitGitGadget
2022-07-23 1:53 2% ` [PATCH v5 4/8] merge: do not abort early if one strategy fails to handle the merge Elijah Newren via GitGitGadget
2022-07-23 1:53 2% ` [PATCH v5 5/8] merge: fix save_state() to work when there are stat-dirty files Elijah Newren via GitGitGadget
2 siblings, 0 replies; 200+ results
From: Elijah Newren via GitGitGadget @ 2022-07-23 1:53 UTC (permalink / raw)
To: git
Cc: ZheNing Hu, Eric Sunshine, Junio C Hamano, Elijah Newren,
Ævar Arnfjörð Bjarmason, Elijah Newren,
Elijah Newren
From: Elijah Newren <newren@gmail.com>
As noted in commit 9822175d2b ("Ensure index matches head before
invoking merge machinery, round N", 2019-08-17), we have had a very
long history of problems with failing to enforce the requirement that
index matches HEAD when starting a merge. One of the commits
referenced in the long tale of issues arising from lax enforcement of
this requirement was commit 55f39cf755 ("merge: fix misleading
pre-merge check documentation", 2018-06-30), which tried to document
the requirement and noted there were some exceptions. As mentioned in
that commit message, the `resolve` strategy was the one strategy that
did not have an explicit index matching HEAD check, and the reason it
didn't was that I wasn't able to discover any cases where the
implementation would fail to catch the problem and abort, and didn't
want to introduce unnecessary performance overhead of adding another
check.
Well, today I discovered a testcase where the implementation does not
catch the problem and so an explicit check is needed. Add a testcase
that previously would have failed, and update git-merge-resolve.sh to
have an explicit check. Note that the code is copied from 3ec62ad9ff
("merge-octopus: abort if index does not match HEAD", 2016-04-09), so
that we reuse the same message and avoid making translators need to
translate some new message.
Signed-off-by: Elijah Newren <newren@gmail.com>
---
git-merge-resolve.sh | 10 ++++++++++
t/t6424-merge-unrelated-index-changes.sh | 13 +++++++++++++
2 files changed, 23 insertions(+)
diff --git a/git-merge-resolve.sh b/git-merge-resolve.sh
index 343fe7bccd0..77e93121bf8 100755
--- a/git-merge-resolve.sh
+++ b/git-merge-resolve.sh
@@ -5,6 +5,16 @@
#
# Resolve two trees, using enhanced multi-base read-tree.
+. git-sh-setup
+
+# Abort if index does not match HEAD
+if ! git diff-index --quiet --cached HEAD --
+then
+ gettextln "Error: Your local changes to the following files would be overwritten by merge"
+ git diff-index --cached --name-only HEAD -- | sed -e 's/^/ /'
+ exit 2
+fi
+
# The first parameters up to -- are merge bases; the rest are heads.
bases= head= remotes= sep_seen=
for arg
diff --git a/t/t6424-merge-unrelated-index-changes.sh b/t/t6424-merge-unrelated-index-changes.sh
index b6e424a427b..eabe6bda832 100755
--- a/t/t6424-merge-unrelated-index-changes.sh
+++ b/t/t6424-merge-unrelated-index-changes.sh
@@ -114,6 +114,19 @@ test_expect_success 'resolve, non-trivial' '
test_path_is_missing .git/MERGE_HEAD
'
+test_expect_success 'resolve, non-trivial, related file removed' '
+ git reset --hard &&
+ git checkout B^0 &&
+
+ git rm a &&
+ test_path_is_missing a &&
+
+ test_must_fail git merge -s resolve D^0 &&
+
+ test_path_is_missing a &&
+ test_path_is_missing .git/MERGE_HEAD
+'
+
test_expect_success 'recursive' '
git reset --hard &&
git checkout B^0 &&
--
gitgitgadget
^ permalink raw reply related [relevance 2%]
* What's cooking in git.git (Jul 2022, #07; Fri, 22)
@ 2022-07-23 1:01 3% Junio C Hamano
2022-07-23 2:28 0% ` en/merge-restore-to-pristine (Was: Re: What's cooking in git.git (Jul 2022, #07; Fri, 22)) Elijah Newren
0 siblings, 1 reply; 200+ results
From: Junio C Hamano @ 2022-07-23 1:01 UTC (permalink / raw)
To: git
Here are the topics that have been cooking in my tree. Commits
prefixed with '+' are in 'next' (being in 'next' is a sign that a
topic is stable enough to be used and are candidate to be in a
future release). Commits prefixed with '-' are only in 'seen',
and aren't considered "accepted" at all.
Copies of the source code to Git live in many repositories, and the
following is a list of the ones I push into or their mirrors. Some
repositories have only a subset of branches.
With maint, master, next, seen, todo:
git://git.kernel.org/pub/scm/git/git.git/
git://repo.or.cz/alt-git.git/
https://kernel.googlesource.com/pub/scm/git/git/
https://github.com/git/git/
https://gitlab.com/git-vcs/git/
With all the integration branches and topics broken out:
https://github.com/gitster/git/
Even though the preformatted documentation in HTML and man format
are not sources, they are published in these repositories for
convenience (replace "htmldocs" with "manpages" for the manual
pages):
git://git.kernel.org/pub/scm/git/git-htmldocs.git/
https://github.com/gitster/git-htmldocs.git/
Release tarballs are available at:
https://www.kernel.org/pub/software/scm/git/
--------------------------------------------------
[Graduated to 'master']
* gc/bare-repo-discovery (2022-07-14) 5 commits
(merged to 'next' on 2022-07-15 at 5206577852)
+ setup.c: create `safe.bareRepository`
+ safe.directory: use git_protected_config()
+ config: learn `git_protected_config()`
+ Documentation: define protected configuration
+ Documentation/git-config.txt: add SCOPES section
Introduce a discovery.barerepository configuration variable that
allows users to forbid discovery of bare repositories.
source: <pull.1261.v8.git.git.1657834081.gitgitgadget@gmail.com>
* js/ci-github-workflow-markup (2022-07-14) 1 commit
(merged to 'next' on 2022-07-15 at 196166f671)
+ tests: fix incorrect --write-junit-xml code
A fix for a regression in test framework.
source: <pull.1288.git.1657789234416.gitgitgadget@gmail.com>
* js/shortlog-sort-stably (2022-07-14) 1 commit
(merged to 'next' on 2022-07-15 at 75e4efe678)
+ shortlog: use a stable sort
"git shortlog -n" relied on the underlying qsort() to be stable,
which shouldn't have. Fixed.
source: <pull.1290.git.1657813429221.gitgitgadget@gmail.com>
* js/vimdiff-quotepath-fix (2022-07-14) 1 commit
(merged to 'next' on 2022-07-15 at 4273bbd4b4)
+ mergetool(vimdiff): allow paths to contain spaces again
Variable quoting fix in the vimdiff driver of "git mergetool"
source: <pull.1287.v2.git.1657809063728.gitgitgadget@gmail.com>
* rs/mingw-tighten-mkstemp (2022-07-14) 1 commit
(merged to 'next' on 2022-07-15 at 4dd4a117ec)
+ mingw: avoid mktemp() in mkstemp() implementation
mkstemp() emulation on Windows has been improved.
source: <7265e37f-fd29-3579-b840-19a1df52a59f@web.de>
--------------------------------------------------
[New Topics]
* ab/leak-check (2022-07-20) 14 commits
- CI: use "GIT_TEST_SANITIZE_LEAK_LOG=true" in linux-leaks
- upload-pack: fix a memory leak in create_pack_file()
- leak tests: mark passing SANITIZE=leak tests as leak-free
- test-lib: have the "check" mode for SANITIZE=leak consider leak logs
- test-lib: add a GIT_TEST_PASSING_SANITIZE_LEAK=check mode
- test-lib: simplify by removing test_external
- tests: move copy/pasted PERL + Test::More checks to a lib-perl.sh
- t/Makefile: don't remove test-results in "clean-except-prove-cache"
- test-lib: add a SANITIZE=leak logging mode
- t/README: reword the "GIT_TEST_PASSING_SANITIZE_LEAK" description
- test-lib: add a --invert-exit-code switch
- test-lib: fix GIT_EXIT_OK logic errors, use BAIL_OUT
- test-lib: don't set GIT_EXIT_OK before calling test_atexit_handler
- test-lib: use $1, not $@ in test_known_broken_{ok,failure}_
Plugging more leaks.
source: <cover-v2-00.14-00000000000-20220720T211221Z-avarab@gmail.com>
* mb/p4-fixes (2022-07-20) 2 commits
(merged to 'next' on 2022-07-20 at 7942d72b1c)
+ git-p4: fix error handling in P4Unshelve.renameBranch()
+ git-p4: fix typo in P4Submit.applyCommit()
Fix a few issues in "git p4".
Will merge to 'master'.
source: <pull.1297.v2.git.git.1658343330.gitgitgadget@gmail.com>
* mb/p4-utf16-crlf (2022-07-20) 1 commit
(merged to 'next' on 2022-07-20 at c2fedd2fc2)
+ git-p4: fix CR LF handling for utf16 files
"git p4" working on UTF-16 files on Windows did not implement
CRLF-to-LF conversion correctly, which has been corrected.
Will merge to 'master'.
source: <pull.1294.v2.git.git.1658341065221.gitgitgadget@gmail.com>
* jc/string-list-cleanup (2022-07-20) 1 commit
- builtin/remote.c: use the right kind of STRING_LIST_INIT
Code clean-up.
Will merge to 'next'.
source: <xmqq7d471dns.fsf@gitster.g>
* mt/pkt-line-comment-tweak (2022-07-22) 1 commit
(merged to 'next' on 2022-07-22 at 4004fa75eb)
+ pkt-line.h: move comment closer to the associated code
In-code comment clarification.
Will merge to 'master'.
source: <6a14443c101fa132498297af6d7a483520688d75.1658488203.git.matheus.bernardino@usp.br>
* mt/rot13-in-c (2022-07-22) 3 commits
- t/t0021: replace old rot13-filter.pl uses with new test-tool cmd
- t/t0021: convert the rot13-filter.pl script to C
- Merge branch 'mt/checkout-count-fix' into mt/rot13-in-c
(this branch uses mt/checkout-count-fix.)
Test portability improvements.
Needs review.
source: <cover.1658518769.git.matheus.bernardino@usp.br>
* tk/untracked-cache-with-uall (2022-07-22) 1 commit
- read-cache: make `do_read_index()` always set up `istate->repo`
Fix for a bug that makes write-tree to faile to write out a
non-existent index as a tree, introduced in 2.37.
Will merge to 'next'.
source: <20220722212232.833188-1-martin.agren@gmail.com>
--------------------------------------------------
[Stalled]
* tk/apply-case-insensitive (2022-06-21) 3 commits
- apply: support case-only renames in case-insensitive filesystems
- reset: new failing test for reset of case-insensitive duplicate in index
- t4141: test "git apply" with core.ignorecase
"git apply" barfed on a patch that makes a case-only rename on a
case-insensitive filesystem.
Needs review.
source: <pull.1257.v2.git.1655655027.gitgitgadget@gmail.com>
* bc/stash-export (2022-04-08) 4 commits
- builtin/stash: provide a way to import stashes from a ref
- builtin/stash: provide a way to export stashes to a ref
- builtin/stash: factor out revision parsing into a function
- object-name: make get_oid quietly return an error
A mechanism to export and import stash entries to and from a normal
commit to transfer it across repositories has been introduced.
Expecting a reroll.
cf. <YnL2d4Vr9Vr7W4Hj@camp.crustytoothpaste.net>
source: <20220407215352.3491567-1-sandals@crustytoothpaste.net>
* cw/remote-object-info (2022-05-06) 11 commits
- SQUASH??? coccicheck
- SQUASH??? ensure that coccicheck is happy
- SQUASH??? compilation fix
- cat-file: add --batch-command remote-object-info command
- cat-file: move parse_cmd and DEFAULT_FORMAT up
- transport: add object-info fallback to fetch
- transport: add client side capability to request object-info
- object-info: send attribute packet regardless of object ids
- object-store: add function to free object_info contents
- fetch-pack: move fetch default settings
- fetch-pack: refactor packet writing
A client component to talk with the object-info endpoint.
Expecting a reroll.
source: <20220502170904.2770649-1-calvinwan@google.com>
--------------------------------------------------
[Cooking]
* ds/midx-with-less-memory (2022-07-19) 3 commits
(merged to 'next' on 2022-07-20 at 250d257c3e)
+ midx: reduce memory pressure while writing bitmaps
+ midx: extract bitmap write setup
+ pack-bitmap-write: use const for hashes
The codepath to write multi-pack index has been taught to release a
large chunk of memory that holds an array of objects in the packs,
as soon as it is done with the array, to reduce memory consumption.
Will merge to 'master'.
source: <pull.1292.v2.git.1658244366.gitgitgadget@gmail.com>
* ma/sparse-checkout-cone-doc-fix (2022-07-18) 1 commit
(merged to 'next' on 2022-07-19 at c259b61b0e)
+ config/core.txt: fix minor issues for `core.sparseCheckoutCone`
Docfix.
Will merge to 'master'.
source: <20220718100530.2068354-1-martin.agren@gmail.com>
* ma/t4200-update (2022-07-18) 1 commit
(merged to 'next' on 2022-07-19 at 710d0cafd9)
+ t4200: drop irrelevant code
Test fix.
Will merge to 'master'.
source: <20220718154322.2177166-1-martin.agren@gmail.com>
* mb/config-document-include (2022-07-17) 1 commit
(merged to 'next' on 2022-07-19 at 8267b80aa2)
+ config.txt: document include, includeIf
Add missing documentation for "include" and "includeIf" features in
"git config" file format, which incidentally teachs the command
line completion to include them in its offerings.
Will merge to 'master'.
source: <pull.1285.v2.git.1658002423864.gitgitgadget@gmail.com>
* sg/index-format-doc-update (2022-07-18) 1 commit
(merged to 'next' on 2022-07-19 at ccc384be5e)
+ index-format.txt: remove outdated list of supported extensions
Docfix.
Will merge to 'master'.
source: <20220718085640.7395-1-szeder.dev@gmail.com>
* tl/pack-bitmap-error-messages (2022-07-18) 6 commits
(merged to 'next' on 2022-07-19 at 3f9565653a)
+ pack-bitmap.c: continue looping when first MIDX bitmap is found
+ pack-bitmap.c: using error() instead of silently returning -1
+ pack-bitmap.c: do not ignore error when opening a bitmap file
+ pack-bitmap.c: rename "idx_name" to "bitmap_name"
+ pack-bitmap.c: mark more strings for translations
+ pack-bitmap.c: fix formatting of error messages
Tweak various messages that come from the pack-bitmap codepaths.
Will merge to 'master'.
source: <cover.1658159745.git.dyroneteng@gmail.com>
* tl/trace2-config-scope (2022-07-22) 2 commits
- tr2: shows scope unconditionally in addition to key-value pair
- api-trace2.txt: print config key-value pair
Tweak trace2 output about configuration variables.
Will merge to 'next'?
source: <cover.1658472474.git.dyroneteng@gmail.com>
* vd/scalar-doc (2022-07-18) 2 commits
(merged to 'next' on 2022-07-20 at fab0234da4)
+ scalar: convert README.md into a technical design doc
+ scalar: reword command documentation to clarify purpose
Doc update.
Will merge to 'master'.
source: <pull.1275.v2.git.1657584367.gitgitgadget@gmail.com>
* cl/rerere-train-with-no-sign (2022-07-19) 1 commit
(merged to 'next' on 2022-07-20 at fbb9414d09)
+ contrib/rerere-train: avoid useless gpg sign in training
"rerere-train" script (in contrib/) used to honor commit.gpgSign
while recreating the throw-away merges.
Will merge to 'master'.
source: <PH7PR14MB5594A27B9295E95ACA4D6A69CE8F9@PH7PR14MB5594.namprd14.prod.outlook.com>
* ds/win-syslog-compiler-fix (2022-07-19) 1 commit
(merged to 'next' on 2022-07-20 at d38b649b18)
+ compat/win32: correct for incorrect compiler warning
Workaround for a false positive compiler warning.
Will merge to 'master'.
source: <pull.1294.git.1658256354725.gitgitgadget@gmail.com>
* ld/osx-keychain-usage-fix (2022-07-19) 1 commit
(merged to 'next' on 2022-07-20 at eebd316ef6)
+ osx-keychain: fix compiler warning
Workaround for a compiler warning against use of die() in
osx-keychain (in contrib/).
Will merge to 'master'.
source: <pull.1293.git.1658251503775.gitgitgadget@gmail.com>
* ab/submodule-helper-leakfix (2022-07-21) 26 commits
- submodule--helper: fix a configure_added_submodule() leak
- submodule--helper: fix bad config API usage
- submodule--helper: free rest of "displaypath" in "struct update_data"
- submodule--helper: don't exit() on failure, return
- submodule--helper: add skeleton "goto cleanup" to update_submodule()
- submodule--helper: rename "int res" to "int ret"
- submodule--helper: free some "displaypath" in "struct update_data"
- submodule--helper: fix a memory leak in print_status()
- submodule--helper: fix a leak in module_add()
- submodule--helper: fix obscure leak in module_add()
- submodule--helper: fix "reference" leak is "module_clone_data"
- submodule--helper: fix a memory leak in get_default_remote_submodule()
- submodule--helper: fix a leak with repo_clear()
- submodule--helper: fix "sm_path" and other "module_cb_list" leaks
- submodule--helper: fix "errmsg_str" memory leak
- submodule--helper: refactor "errmsg_str" to be a "struct strbuf"
- submodule--helper: add and use *_release() functions
- submodule--helper: add "const" to copy of "update_data"
- submodule--helper: don't leak {run,capture}_command() cp.dir argument
- submodule--helper: "struct pathspec" memory leak in module_update()
- submodule--helper: fix most "struct pathspec" memory leaks
- submodule--helper: fix trivial get_default_remote_submodule() leak
- submodule--helper: fix a leak in "clone_submodule"
- submodule--helper: pass a "const struct module_clone_data" to clone_submodule()
- submodule--helper: stop conflating "sb" in clone_submodule()
- submodule--helper: replace memset() with { 0 }-initialization
Plugging leaks in submodule--helper.
Getting there.
source: <cover-v3-00.26-00000000000-20220721T191249Z-avarab@gmail.com>
* mt/doc-config (2022-07-14) 3 commits
- doc: notes: unify configuration variables definitions
- doc: apply: unify configuration variables definitions
- doc: grep: unify configuration variables definitions
Unify description of configuration variables used by individual
commands in the documentation of the commands and the documentation
of the "git config".
Will discard (Retracted?).
cf. <CAHd-oW4zHA1YLX-5B1vYTA1f8PocziUCi0WxvSEkFUuf2GqKxg@mail.gmail.com>
source: <cover.1657819649.git.matheus.bernardino@usp.br>
* jt/fetch-pack-trace2-filter-spec (2022-07-18) 1 commit
- fetch-pack: write effective filter to trace2
"git fetch" client logs the partial clone filter used in the trace2
output.
Will merge to 'next'?
source: <20220718170027.3993042-1-jonathantanmy@google.com>
* mb/doc-rerere-autoupdate (2022-07-15) 1 commit
- cherry-pick doc: clarify no-rerere-autoupdate still allows rerere
Clarifies that the "--no-rerere-autoupdate" option does not disable
the "rerere" mechanism (nor does "--rerere-autoupdate" enable it).
Will merge to 'next'?
source: <20220715092527.1567837-1-mail@beyermatthias.de>
* rs/mergesort (2022-07-17) 10 commits
- mergesort: remove llist_mergesort()
- packfile: use DEFINE_LIST_SORT
- fetch-pack: use DEFINE_LIST_SORT
- commit: use DEFINE_LIST_SORT
- blame: use DEFINE_LIST_SORT
- test-mergesort: use DEFINE_LIST_SORT
- test-mergesort: use DEFINE_LIST_SORT_DEBUG
- mergesort: add macros for typed sort of linked lists
- mergesort: tighten merge loop
- mergesort: unify ranks loops
Make our mergesort implementation type-safe.
Will merge to 'next'?
source: <4d7cd286-398e-215c-f2bd-aa7e8207be4f@web.de>
* cw/submodule-merge-messages (2022-07-18) 1 commit
- submodule merge: update conflict error message
Update the message given when "git merge" sees conflicts at a path
with a submodule while merging a superproject.
Needs review.
source: <20220718214349.3379328-1-calvinwan@google.com>
* ds/doc-wo-whitelist (2022-07-19) 5 commits
(merged to 'next' on 2022-07-20 at ec51c6269a)
+ transport.c: avoid "whitelist"
+ t: avoid "whitelist"
+ git.txt: remove redundant language
+ git-cvsserver: clarify directory list
+ daemon: clarify directory arguments
Avoid "white/black-list" in documentation and code comments.
Will merge to 'master'.
source: <pull.1274.v3.git.1658255537.gitgitgadget@gmail.com>
* mt/checkout-count-fix (2022-07-14) 3 commits
(merged to 'next' on 2022-07-22 at 60c73a6b0b)
+ checkout: fix two bugs on the final count of updated entries
+ checkout: show bug about failed entries being included in final report
+ checkout: document bug where delayed checkout counts entries twice
(this branch is used by mt/rot13-in-c.)
"git checkout" miscounted the paths it updated, which has been
corrected.
Will merge to 'master'.
source: <cover.1657799213.git.matheus.bernardino@usp.br>
* tb/commit-graph-genv2-upgrade-fix (2022-07-15) 3 commits
- commit-graph: fix corrupt upgrade from generation v1 to v2
- commit-graph: introduce `repo_find_commit_pos_in_graph()`
- t5318: demonstrate commit-graph generation v2 corruption
There was a bug in the codepath to upgrade generation information
in commit-graph from v1 to v2 format, which has been corrected.
Will merge to 'next'?
source: <cover.1657667404.git.me@ttaylorr.com>
* js/safe-directory-plus (2022-07-13) 3 commits
- mingw: be more informative when ownership check fails on FAT32
- mingw: handle a file owned by the Administrators group correctly
- Allow debugging unsafe directories' ownership
Needs review.
source: <pull.1286.git.1657700238.gitgitgadget@gmail.com>
* po/doc-add-renormalize (2022-07-09) 1 commit
- doc add: renormalize is not idempotent for CRCRLF
Documentation for "git add --renormalize" has been improved.
Expecting a reroll.
cf. <dfe0c1ab-33f8-f13e-71ce-1829bb0d2d7f@iee.email>
source: <d3b8ed97a105ea1d7e656c964b7eee378e11ede6.1657385781.git.gitgitgadget@gmail.com>
* po/glossary-around-traversal (2022-07-09) 3 commits
- glossary: add reachability bitmap description
- glossary: add commit graph description
- glossary: add Object DataBase (ODB) abbreviation
The glossary entries for "commit-graph file" and "reachability
bitmap" have been added.
Expecting a reroll.
cf. <dfe0c1ab-33f8-f13e-71ce-1829bb0d2d7f@iee.email>
source: <pull.1282.git.1657385781.gitgitgadget@gmail.com>
* ac/bitmap-lookup-table (2022-07-20) 6 commits
- bitmap-lookup-table: add performance tests for lookup table
- p5310-pack-bitmaps.sh: enable `pack.writeReverseIndex`
- pack-bitmap: prepare to read lookup table extension
- pack-bitmap-write: learn pack.writeBitmapLookupTable and add tests
- pack-bitmap-write.c: write lookup table extension
- Documentation/technical: describe bitmap lookup table extension
The pack bitmap file gained a bitmap-lookup table to speed up
locating the necessary bitmap for a given commit.
Waiting for a more thorough review.
cf. <Ys4DjW9JjQFx5Bhb@nand.local>
source: <pull.1266.v4.git.1658325913.gitgitgadget@gmail.com>
* kk/p4-client-name-encoding-fix (2022-07-21) 2 commits
(merged to 'next' on 2022-07-21 at 008518b4e5)
+ git-p4: refactoring of p4CmdList()
(merged to 'next' on 2022-07-11 at 9c18616f76)
+ git-p4: fix bug with encoding of p4 client name
"git p4" did not handle non-ASCII client name well, which has been
corrected.
Will merge to 'master'.
source: <pull.1285.v3.git.git.1658394440.gitgitgadget@gmail.com>
* sa/cat-file-mailmap (2022-07-18) 4 commits
- cat-file: add mailmap support
- ident: rename commit_rewrite_person() to apply_mailmap_to_header()
- ident: move commit_rewrite_person() to ident.c
- revision: improve commit_rewrite_person()
"git cat-file" learned an option to use the mailmap when showing
commit and tag objects.
Will merge to 'next'?
source: <20220718195102.66321-1-siddharthasthana31@gmail.com>
* ds/rebase-update-ref (2022-07-19) 13 commits
(merged to 'next' on 2022-07-20 at 9f4bf9ef6c)
+ sequencer: notify user of --update-refs activity
+ sequencer: ignore HEAD ref under --update-refs
+ rebase: add rebase.updateRefs config option
+ sequencer: rewrite update-refs as user edits todo list
+ rebase: update refs from 'update-ref' commands
+ rebase: add --update-refs option
+ sequencer: add update-ref command
+ sequencer: define array with enum values
+ rebase-interactive: update 'merge' description
+ branch: consider refs under 'update-refs'
+ t2407: test branches currently using apply backend
+ t2407: test bisect and rebase as black-boxes
+ Merge branch 'ds/branch-checked-out' into ds/rebase-update-ref
"git rebase -i" learns to update branches whose tip appear in the
rebased range.
Will merge to 'master'.
source: <pull.1247.v5.git.1658255624.gitgitgadget@gmail.com>
* pw/xdiff-alloc (2022-07-08) 4 commits
- xdiff: introduce XDL_ALLOC_GROW()
- xdiff: introduce XDL_CALLOC_ARRAY()
- xdiff: introduce xdl_calloc
- xdiff: introduce XDL_ALLOC_ARRAY()
Add a level of redirection to array allocation API in xdiff part,
to make it easier to share with the libgit2 project.
Will merge to 'next'?
source: <pull.1272.v2.git.1657297519.gitgitgadget@gmail.com>
* ab/squelch-empty-fsync-traces (2022-07-18) 1 commit
(merged to 'next' on 2022-07-19 at f77cd40c29)
+ trace2: only include "fsync" events if we git_fsync()
Omit fsync-related trace2 entries when their values are all zero.
Will merge to 'master'.
source: <patch-v3-1.1-979dea5956a-20220718T102747Z-avarab@gmail.com>
* en/merge-restore-to-pristine (2022-07-21) 7 commits
- merge: do not exit restore_state() prematurely
- merge: ensure we can actually restore pre-merge state
- merge: make restore_state() restore staged state too
- merge: fix save_state() to work when there are stat-dirty files
- merge: do not abort early if one strategy fails to handle the merge
- merge-resolve: abort if index does not match HEAD
- merge-ort-wrappers: make printed message match the one from recursive
When "git merge" finds that it cannot perform a merge, it should
restore the working tree to the state before the command was
initiated, but in some corner cases it didn't.
Will merge to 'next'?
source: <pull.1231.v3.git.1658391391.gitgitgadget@gmail.com>
* zh/ls-files-format (2022-07-20) 1 commit
- ls-files: introduce "--format" option
"git ls-files" learns the "--format" option to tweak its output.
Will merge to 'next'?
source: <pull.1262.v8.git.1658334983053.gitgitgadget@gmail.com>
* js/commit-graph-parsing-without-repo-settings (2022-07-14) 1 commit
(merged to 'next' on 2022-07-19 at bcc29d823d)
+ commit-graph: pass repo_settings instead of repository
API tweak to make it easier to run fuzz testing on commit-graph parser.
Will merge to 'master'.
source: <fd70b6119153b165a62ee4f693dbe47031cfb2be.1657834657.git.steadmon@google.com>
* jt/connected-show-missing-from-which-side (2022-06-10) 1 commit
- fetch,fetch-pack: clarify connectivity check error
We may find an object missing after a "git fetch" stores the
objects it obtained from the other side, but it is not necessarily
because the remote failed to send necessary objects. Reword the
messages in an attempt to help users explore other possibilities
when they hit this error.
Expecting a reroll.
source: <20220610195247.1177549-1-jonathantanmy@google.com>
* tb/show-ref-count (2022-06-06) 2 commits
- builtin/show-ref.c: limit output with `--count`
- builtin/show-ref.c: rename `found_match` to `matches_nr`
"git show-ref" learned to stop after emitting N refs with the new
"--count=N" option.
Expecting a reroll.
cf. <xmqqczfl4ce1.fsf@gitster.g>
source: <cover.1654552560.git.me@ttaylorr.com>
* ds/bundle-uri-more (2022-06-06) 6 commits
- fetch: add 'refs/bundle/' to log.excludeDecoration
- bundle-uri: add support for http(s):// and file://
- fetch: add --bundle-uri option
- bundle-uri: create basic file-copy logic
- remote-curl: add 'get' capability
- docs: document bundle URI standard
The "bundle URI" topic.
Needs review.
source: <pull.1248.git.1654545325.gitgitgadget@gmail.com>
* js/bisect-in-c (2022-06-27) 16 commits
- bisect: no longer try to clean up left-over `.git/head-name` files
- bisect: remove Cogito-related code
- Turn `git bisect` into a full built-in
- bisect: move even the command-line parsing to `bisect--helper`
- bisect: teach the `bisect--helper` command to show the correct usage strings
- bisect--helper: return only correct exit codes in `cmd_*()`
- bisect--helper: move the `BISECT_STATE` case to the end
- bisect--helper: make `--bisect-state` optional
- bisect--helper: align the sub-command order with git-bisect.sh
- bisect--helper: using `--bisect-state` without an argument is a bug
- bisect--helper: really retire `--bisect-autostart`
- bisect--helper: really retire --bisect-next-check
- bisect--helper: retire the --no-log option
- bisect: avoid double-quoting when printing the failed command
- bisect run: fix the error message
- bisect: verify that a bogus option won't try to start a bisection
Final bits of "git bisect.sh" have been rewritten in C.
Expecting a (hopefully final) reroll.
cf. <20627.86ilolhnnn.gmgdl@evledraar.gmail.com>
source: <pull.1132.v4.git.1656354677.gitgitgadget@gmail.com>
--------------------------------------------------
[Discarded]
* ar/send-email-confirm-by-default (2022-04-22) 1 commit
. send-email: always confirm by default
"git send-email" is changed so that by default it asks for
confirmation before sending each message out.
Discarded.
I wanted to like this, and had it in the version of Git I use
myself for daily work, but the prompting turned out to be somewhat
distracting.
source: <20220422083629.1404989-1-hi@alyssa.is>
^ permalink raw reply [relevance 3%]
* Re: [PATCH v4 3/7] merge: do not abort early if one strategy fails to handle the merge
2022-07-22 10:47 0% ` Ævar Arnfjörð Bjarmason
@ 2022-07-23 0:36 0% ` Elijah Newren
0 siblings, 0 replies; 200+ results
From: Elijah Newren @ 2022-07-23 0:36 UTC (permalink / raw)
To: Ævar Arnfjörð Bjarmason
Cc: Elijah Newren via GitGitGadget, Git Mailing List, ZheNing Hu,
Eric Sunshine, Junio C Hamano
On Fri, Jul 22, 2022 at 3:49 AM Ævar Arnfjörð Bjarmason
<avarab@gmail.com> wrote:
>
> On Fri, Jul 22 2022, Elijah Newren via GitGitGadget wrote:
>
> > From: Elijah Newren <newren@gmail.com>
> >
> > builtin/merge is setup to allow multiple strategies to be specified,
> > and it will find the "best" result and use it. This is defeated if
> > some of the merge strategies abort early when they cannot handle the
> > merge. Fix the logic that calls recursive and ort to not do such an
> > early abort, but instead return "2" or "unhandled" so that the next
> > strategy can try to handle the merge.
> >
> > Coming up with a testcase for this is somewhat difficult, since
> > recursive and ort both handle nearly any two-headed merge (there is
> > a separate code path that checks for non-two-headed merges and
> > already returns "2" for them). So use a somewhat synthetic testcase
> > of having the index not match HEAD before the merge starts, since all
> > merge strategies will abort for that.
> >
> > Signed-off-by: Elijah Newren <newren@gmail.com>
> > ---
> > builtin/merge.c | 6 ++++--
> > t/t6402-merge-rename.sh | 2 +-
> > t/t6424-merge-unrelated-index-changes.sh | 16 ++++++++++++++++
> > t/t6439-merge-co-error-msgs.sh | 1 +
> > 4 files changed, 22 insertions(+), 3 deletions(-)
> >
> > diff --git a/builtin/merge.c b/builtin/merge.c
> > index 13884b8e836..dec7375bf2a 100644
> > --- a/builtin/merge.c
> > +++ b/builtin/merge.c
> > @@ -754,8 +754,10 @@ static int try_merge_strategy(const char *strategy, struct commit_list *common,
> > else
> > clean = merge_recursive(&o, head, remoteheads->item,
> > reversed, &result);
> > - if (clean < 0)
> > - exit(128);
> > + if (clean < 0) {
> > + rollback_lock_file(&lock);
> > + return 2;
> > + }
> > if (write_locked_index(&the_index, &lock,
> > COMMIT_LOCK | SKIP_IF_UNCHANGED))
> > die(_("unable to write %s"), get_index_file());
> > diff --git a/t/t6402-merge-rename.sh b/t/t6402-merge-rename.sh
> > index 3a32b1a45cf..772238e582c 100755
> > --- a/t/t6402-merge-rename.sh
> > +++ b/t/t6402-merge-rename.sh
> > @@ -210,7 +210,7 @@ test_expect_success 'updated working tree file should prevent the merge' '
> > echo >>M one line addition &&
> > cat M >M.saved &&
> > git update-index M &&
> > - test_expect_code 128 git pull --no-rebase . yellow &&
> > + test_expect_code 2 git pull --no-rebase . yellow &&
> > test_cmp M M.saved &&
> > rm -f M.saved
> > '
> > diff --git a/t/t6424-merge-unrelated-index-changes.sh b/t/t6424-merge-unrelated-index-changes.sh
> > index f35d3182b86..8b749e19083 100755
> > --- a/t/t6424-merge-unrelated-index-changes.sh
> > +++ b/t/t6424-merge-unrelated-index-changes.sh
> > @@ -268,4 +268,20 @@ test_expect_success 'subtree' '
> > test_path_is_missing .git/MERGE_HEAD
> > '
> >
> > +test_expect_success 'resolve && recursive && ort' '
> > + git reset --hard &&
> > + git checkout B^0 &&
> > +
> > + test_seq 0 10 >a &&
> > + git add a &&
> > +
> > + sane_unset GIT_TEST_MERGE_ALGORITHM &&
> > + test_must_fail git merge -s resolve -s recursive -s ort C^0 >output 2>&1 &&
> > +
> > + grep "Trying merge strategy resolve..." output &&
> > + grep "Trying merge strategy recursive..." output &&
> > + grep "Trying merge strategy ort..." output &&
> > + grep "No merge strategy handled the merge." output
> > +'
Oops, 'resolve' should really be at the end of the list rather than at
the beginning. And the test description should be better.
> Ah, re my feedback on 2/7 I hadn't read ahead. This is the test I
> mentioned as failing with the code added in 2/7 if it's tweaked to be
> s/exit 2/exit 0/.
>
> So it's a bit odd to have code added in 2/7 that's tested in 3/7. I
> think this would be much easier to understand if these tests came before
> all these code changes, so then as the changes are made we can see how
> the behavior changes.
This testcase belongs in this patch. The use of "resolve" here was
totally incidental to the testcase in question; I could have used
"octopus" or "ours" or created a new strategy and used it.
(Actually, using 'ours' here runs into the problem we fix in the final
patch. So maybe just like 'resolve', using 'ours' might be confusing
to readers of the series as they think issues from other patches are
involved.)
> But short of that at least having the relevant part of this for 2/7 in
> that commit would be better, i.e. the thing that tests that new
> "diff-index" check in some way...
I'll switch this test to using 'octopus' instead of 'resolve' just so
it doesn't get confused in this way.
^ permalink raw reply [relevance 0%]
* Re: [PATCH v4 2/7] merge-resolve: abort if index does not match HEAD
2022-07-22 10:27 0% ` Ævar Arnfjörð Bjarmason
@ 2022-07-23 0:28 0% ` Elijah Newren
0 siblings, 0 replies; 200+ results
From: Elijah Newren @ 2022-07-23 0:28 UTC (permalink / raw)
To: Ævar Arnfjörð Bjarmason
Cc: Elijah Newren via GitGitGadget, Git Mailing List, ZheNing Hu,
Eric Sunshine, Junio C Hamano
On Fri, Jul 22, 2022 at 3:46 AM Ævar Arnfjörð Bjarmason
<avarab@gmail.com> wrote:
>
> On Fri, Jul 22 2022, Elijah Newren via GitGitGadget wrote:
>
> > From: Elijah Newren <newren@gmail.com>
> >
> > As noted in commit 9822175d2b ("Ensure index matches head before
> > invoking merge machinery, round N", 2019-08-17), we have had a very
> > long history of problems with failing to enforce the requirement that
> > index matches HEAD when starting a merge. One of the commits
> > referenced in the long tale of issues arising from lax enforcement of
> > this requirement was commit 55f39cf755 ("merge: fix misleading
> > pre-merge check documentation", 2018-06-30), which tried to document
> > the requirement and noted there were some exceptions. As mentioned in
> > that commit message, the `resolve` strategy was the one strategy that
> > did not have an explicit index matching HEAD check, and the reason it
> > didn't was that I wasn't able to discover any cases where the
> > implementation would fail to catch the problem and abort, and didn't
> > want to introduce unnecessary performance overhead of adding another
> > check.
> >
> > Well, today I discovered a testcase where the implementation does not
> > catch the problem and so an explicit check is needed. Add a testcase
> > that previously would have failed, and update git-merge-resolve.sh to
> > have an explicit check. Note that the code is copied from 3ec62ad9ff
> > ("merge-octopus: abort if index does not match HEAD", 2016-04-09), so
> > that we reuse the same message and avoid making translators need to
> > translate some new message.
> >
> > Signed-off-by: Elijah Newren <newren@gmail.com>
> > ---
> > builtin/merge.c | 20 ++++++++++++++++++
> > git-merge-resolve.sh | 10 +++++++++
> > t/t6424-merge-unrelated-index-changes.sh | 26 ++++++++++++++++++++++++
> > 3 files changed, 56 insertions(+)
> >
> > diff --git a/builtin/merge.c b/builtin/merge.c
> > index 23170f2d2a6..13884b8e836 100644
> > --- a/builtin/merge.c
> > +++ b/builtin/merge.c
> > @@ -1599,6 +1599,26 @@ int cmd_merge(int argc, const char **argv, const char *prefix)
> > */
> > refresh_cache(REFRESH_QUIET);
> > if (allow_trivial && fast_forward != FF_ONLY) {
> > + /*
> > + * Must first ensure that index matches HEAD before
> > + * attempting a trivial merge.
> > + */
> > + struct tree *head_tree = get_commit_tree(head_commit);
> > + struct strbuf sb = STRBUF_INIT;
> > +
> > + if (repo_index_has_changes(the_repository, head_tree,
> > + &sb)) {
> > + struct strbuf err = STRBUF_INIT;
> > + strbuf_addstr(&err, "error: ");
> > + strbuf_addf(&err, _("Your local changes to the following files would be overwritten by merge:\n %s"),
> > + sb.buf);
> > + strbuf_addch(&err, '\n');
>
> At first glance I was expecting this to construct an error message to
> emit it somewhere else that stderr, so I wondered if you couldn't use
> the "error_routine" facility to avoid re-inventing "error: " etc.,
> but...
>
> > + fputs(err.buf, stderr);
>
> ...we emit it to stderr anyway...?
>
> > + strbuf_release(&err);
> > + strbuf_release(&sb);
> > + return -1;
> > + }
> > +
UGH! I fixed the other one of these in my reroll yesterday[1]. I
_knew_ I had copied that code somewhere else, but for some reason I
thought it was in a different series and went searching for it. Don't
know why I couldn't remember that it was in the same series, and I'm
not sure how I missed it when I went looking. I mean, I know I was
tired yesterday, but that's still kinda bad.
Anyway, thanks for catching; I'll fix this one too.
[1] https://lore.kernel.org/git/xmqqsfmulb6w.fsf@gitster.g/
> > /* See if it is really trivial. */
> > git_committer_info(IDENT_STRICT);
> > printf(_("Trying really trivial in-index merge...\n"));
> > diff --git a/git-merge-resolve.sh b/git-merge-resolve.sh
> > index 343fe7bccd0..77e93121bf8 100755
> > --- a/git-merge-resolve.sh
> > +++ b/git-merge-resolve.sh
> > @@ -5,6 +5,16 @@
> > #
> > # Resolve two trees, using enhanced multi-base read-tree.
> >
> > +. git-sh-setup
> > +
> > +# Abort if index does not match HEAD
> > +if ! git diff-index --quiet --cached HEAD --
> > +then
> > + gettextln "Error: Your local changes to the following files would be overwritten by merge"
> > + git diff-index --cached --name-only HEAD -- | sed -e 's/^/ /'
> > + exit 2
> > +fi
>
> (The "..." continued below)
>
> Just in trying to poke holes in this I made this an "exit 0", and
> neither of the tests you added failed, but the last one ("resolve &&
> recursive && ort") in the t6424*.sh will fail, is that intentional?
Nope it's not intentional. I had tested one fix (for these
git-merge-resolve.sh changes) and verified they were good (and
necessary), then found another bug (the one fixed by the
builtin/merge.c changes) and added a test for it, and just decided to
amend it into the same commit. Turns out the builtin/merge.c changes
mask the fix for git-merge-resolve.sh here and makes that code go
unexercised. I'll split these two bugfixes into separate patches, and
tweak one of the two testcases to make sure it continues to exercise
the new codepath added to git-merge-resolve.sh.
> I don't know enough about the context here, but given our *.sh->C
> migration elsewhere it's a bit unfortunate to see more *.sh code added
> back.
This seems like a curious objection. "We are trying to get rid of
shell scripts, so don't even fix bugs in any of the existing ones." ?
> We have "git merge" driving this, isn't it OK to have it make this
> check before invoking "resolve" (may be a stupid question).
Ah, I can kind of see where you're coming from now, but that seems to
me to be bending over backwards in attempting to fix a component
written in shell without actually modifying the shell.
builtin/merge.c is some glue code that can call multiple different
strategies, but isn't the place for the implementation of the
strategies themselves, and I'd hate to see us put half the
implementation in one place and half in another. In addition, besides
the separation of concerns issue::
* We document that users can add their own merge strategies (a
shell or executable named git-merge-$USERNAME and "git merge -s
$USERNAME" will call them)
* git-merge-resolve and git-merge-octopus serve as examples
* Our examples should demonstrate correct behavior and perform
documented, required steps. This particular check is important:
/*
* At this point, we need a real merge. No matter what strategy
* we use, it would operate on the index, possibly affecting the
* working tree, and when resolved cleanly, have the desired
* tree in the index -- this means that the index must be in
* sync with the head commit. The strategies are responsible
* to ensure this.
*/
So, even if someone were to reimplement git-merge-resolve.sh in C, and
start the deprecation process with some merge.useBuiltinResolve config
setting (similar to rebase.useBuiltin), I'd still want this shell fix
added to git-merge-resolve.sh in the meantime, both as an important
bugfix, and so that people looking for merge strategy examples who
find this script hopefully find a new enough version with this
important check included.
In general, if merge strategies do not perform this check, we have
observed that they often will either (a) discard users' staged changes
(best case) or (b) smash staged changes into the created commit and
thus create some kind of evil merge (making it look like they created
a merge normally, and then amended the merge with additional changes).
We're lucky that the way resolve was implemented, other git calls
would usually incidentally catch such issues for us without an
explicit check. We were also lucky that the observed behavior was
'(a)' rather than '(b)' for resolve. But the issue should still be
fixed.
> For this code in particular it:
>
> * Uses spaces, not tabs
Yes, that's fair, but as I mentioned in the commit message, it was
copied from git-merge-octopus.sh. So, as you say below, "so did the
older version".
> * We lose the diff-index .. --name-only exit code (segfault), but so
> did the older version
Um, I don't understand this objection. I think you are referring to
the pipe to sed, but if so...who cares? The exit code would be lost
anyway because we aren't running under errexit, and the next line of
code ignores any and all previous exit codes when it runs "exit 2".
And if you're not referring to the pipe to sed but the fact that it
unconditionally returns an exit code of 2 on the next line, then yes
that is the expected return code. Whatever the diff-index segfault
returns would be the wrong exit status and could fool the
builtin/merge.c into doing the wrong thing. It expects merge
strategies to return one of three exit codes: 0, 1, or 2:
/*
* The backend exits with 1 when conflicts are
* left to be resolved, with 2 when it does not
* handle the given merge at all.
*/
So, ignoring the return code from diff-index is correct behavior here.
Were you thinking this was a test script or something?
> * I wonder if bending over backwards to emit the exact message we
> emitted before is worth it
>
> If you just make this something like (untested):
>
> {
> gettext "error: " &&
> gettextln "Your local..."
> }
>
> You could re-use the translation from the *.c one (and the "error: " one
> we'll get from usage.c).
>
> That leaves "\n %s" as the difference, but we could just remove that
> from the _() and emit it unconditionally, no?
??
Copying a few lines from git-merge-octopus.sh to get the same fix it
has is "bending over backwards"? That's what I call "doing the
easiest thing possible" (and which _also_ has the benefit of being
battle tested code), and then you describe a bunch of gymnastics as an
alternative? I see your suggestion as running afoul of the objection
you are raising, and the code I'm adding as being a solution to that
particular objection. So this particular flag you are raising is
confusing to me.
> > # The first parameters up to -- are merge bases; the rest are heads.
> > bases= head= remotes= sep_seen=
> > for arg
> > diff --git a/t/t6424-merge-unrelated-index-changes.sh b/t/t6424-merge-unrelated-index-changes.sh
> > index b6e424a427b..f35d3182b86 100755
> > --- a/t/t6424-merge-unrelated-index-changes.sh
> > +++ b/t/t6424-merge-unrelated-index-changes.sh
> > @@ -114,6 +114,32 @@ test_expect_success 'resolve, non-trivial' '
> > test_path_is_missing .git/MERGE_HEAD
> > '
> >
> > +test_expect_success 'resolve, trivial, related file removed' '
> > + git reset --hard &&
> > + git checkout B^0 &&
> > +
> > + git rm a &&
> > + test_path_is_missing a &&
> > +
> > + test_must_fail git merge -s resolve C^0 &&
> > +
> > + test_path_is_missing a &&
> > + test_path_is_missing .git/MERGE_HEAD
> > +'
> > +
> > +test_expect_success 'resolve, non-trivial, related file removed' '
> > + git reset --hard &&
> > + git checkout B^0 &&
> > +
> > + git rm a &&
> > + test_path_is_missing a &&
> > +
> > + test_must_fail git merge -s resolve D^0 &&
> > +
> > + test_path_is_missing a &&
> > + test_path_is_missing .git/MERGE_HEAD
> > +'
> > +
> > test_expect_success 'recursive' '
> > git reset --hard &&
> > git checkout B^0 &&
>
> ...I tried with this change on top, it seems to me like you'd want this
> in any case, it passes the tests both with & without the C code change,
> so can't we just use error() here?
>
> diff --git a/builtin/merge.c b/builtin/merge.c
> index 7fb4414ebb7..64def49734a 100644
> --- a/builtin/merge.c
> +++ b/builtin/merge.c
> @@ -1621,13 +1621,8 @@ int cmd_merge(int argc, const char **argv, const char *prefix)
>
> if (repo_index_has_changes(the_repository, head_tree,
> &sb)) {
> - struct strbuf err = STRBUF_INIT;
> - strbuf_addstr(&err, "error: ");
> - strbuf_addf(&err, _("Your local changes to the following files would be overwritten by merge:\n %s"),
> - sb.buf);
> - strbuf_addch(&err, '\n');
> - fputs(err.buf, stderr);
> - strbuf_release(&err);
> + error(_("Your local changes to the following files would be overwritten by merge:\n %s"),
> + sb.buf);
> strbuf_release(&sb);
> return -1;
Yes, this is the same change suggested by Junio for patch 1 which I
should have also applied here. Thanks for catching it!
^ permalink raw reply [relevance 0%]
* Re: [PATCH v4 3/7] merge: do not abort early if one strategy fails to handle the merge
2022-07-22 5:15 2% ` [PATCH v4 3/7] merge: do not abort early if one strategy fails to handle the merge Elijah Newren via GitGitGadget
@ 2022-07-22 10:47 0% ` Ævar Arnfjörð Bjarmason
2022-07-23 0:36 0% ` Elijah Newren
0 siblings, 1 reply; 200+ results
From: Ævar Arnfjörð Bjarmason @ 2022-07-22 10:47 UTC (permalink / raw)
To: Elijah Newren via GitGitGadget
Cc: git, ZheNing Hu, Eric Sunshine, Junio C Hamano, Elijah Newren
On Fri, Jul 22 2022, Elijah Newren via GitGitGadget wrote:
> From: Elijah Newren <newren@gmail.com>
>
> builtin/merge is setup to allow multiple strategies to be specified,
> and it will find the "best" result and use it. This is defeated if
> some of the merge strategies abort early when they cannot handle the
> merge. Fix the logic that calls recursive and ort to not do such an
> early abort, but instead return "2" or "unhandled" so that the next
> strategy can try to handle the merge.
>
> Coming up with a testcase for this is somewhat difficult, since
> recursive and ort both handle nearly any two-headed merge (there is
> a separate code path that checks for non-two-headed merges and
> already returns "2" for them). So use a somewhat synthetic testcase
> of having the index not match HEAD before the merge starts, since all
> merge strategies will abort for that.
>
> Signed-off-by: Elijah Newren <newren@gmail.com>
> ---
> builtin/merge.c | 6 ++++--
> t/t6402-merge-rename.sh | 2 +-
> t/t6424-merge-unrelated-index-changes.sh | 16 ++++++++++++++++
> t/t6439-merge-co-error-msgs.sh | 1 +
> 4 files changed, 22 insertions(+), 3 deletions(-)
>
> diff --git a/builtin/merge.c b/builtin/merge.c
> index 13884b8e836..dec7375bf2a 100644
> --- a/builtin/merge.c
> +++ b/builtin/merge.c
> @@ -754,8 +754,10 @@ static int try_merge_strategy(const char *strategy, struct commit_list *common,
> else
> clean = merge_recursive(&o, head, remoteheads->item,
> reversed, &result);
> - if (clean < 0)
> - exit(128);
> + if (clean < 0) {
> + rollback_lock_file(&lock);
> + return 2;
> + }
> if (write_locked_index(&the_index, &lock,
> COMMIT_LOCK | SKIP_IF_UNCHANGED))
> die(_("unable to write %s"), get_index_file());
> diff --git a/t/t6402-merge-rename.sh b/t/t6402-merge-rename.sh
> index 3a32b1a45cf..772238e582c 100755
> --- a/t/t6402-merge-rename.sh
> +++ b/t/t6402-merge-rename.sh
> @@ -210,7 +210,7 @@ test_expect_success 'updated working tree file should prevent the merge' '
> echo >>M one line addition &&
> cat M >M.saved &&
> git update-index M &&
> - test_expect_code 128 git pull --no-rebase . yellow &&
> + test_expect_code 2 git pull --no-rebase . yellow &&
> test_cmp M M.saved &&
> rm -f M.saved
> '
> diff --git a/t/t6424-merge-unrelated-index-changes.sh b/t/t6424-merge-unrelated-index-changes.sh
> index f35d3182b86..8b749e19083 100755
> --- a/t/t6424-merge-unrelated-index-changes.sh
> +++ b/t/t6424-merge-unrelated-index-changes.sh
> @@ -268,4 +268,20 @@ test_expect_success 'subtree' '
> test_path_is_missing .git/MERGE_HEAD
> '
>
> +test_expect_success 'resolve && recursive && ort' '
> + git reset --hard &&
> + git checkout B^0 &&
> +
> + test_seq 0 10 >a &&
> + git add a &&
> +
> + sane_unset GIT_TEST_MERGE_ALGORITHM &&
> + test_must_fail git merge -s resolve -s recursive -s ort C^0 >output 2>&1 &&
> +
> + grep "Trying merge strategy resolve..." output &&
> + grep "Trying merge strategy recursive..." output &&
> + grep "Trying merge strategy ort..." output &&
> + grep "No merge strategy handled the merge." output
> +'
Ah, re my feedback on 2/7 I hadn't read ahead. This is the test I
mentioned as failing with the code added in 2/7 if it's tweaked to be
s/exit 2/exit 0/.
So it's a bit odd to have code added in 2/7 that's tested in 3/7. I
think this would be much easier to understand if these tests came before
all these code changes, so then as the changes are made we can see how
the behavior changes.
But short of that at least having the relevant part of this for 2/7 in
that commit would be better, i.e. the thing that tests that new
"diff-index" check in some way...
^ permalink raw reply [relevance 0%]
* Re: [PATCH v4 2/7] merge-resolve: abort if index does not match HEAD
2022-07-22 5:15 2% ` [PATCH v4 2/7] merge-resolve: abort if index does not match HEAD Elijah Newren via GitGitGadget
@ 2022-07-22 10:27 0% ` Ævar Arnfjörð Bjarmason
2022-07-23 0:28 0% ` Elijah Newren
0 siblings, 1 reply; 200+ results
From: Ævar Arnfjörð Bjarmason @ 2022-07-22 10:27 UTC (permalink / raw)
To: Elijah Newren via GitGitGadget
Cc: git, ZheNing Hu, Eric Sunshine, Junio C Hamano, Elijah Newren
On Fri, Jul 22 2022, Elijah Newren via GitGitGadget wrote:
> From: Elijah Newren <newren@gmail.com>
>
> As noted in commit 9822175d2b ("Ensure index matches head before
> invoking merge machinery, round N", 2019-08-17), we have had a very
> long history of problems with failing to enforce the requirement that
> index matches HEAD when starting a merge. One of the commits
> referenced in the long tale of issues arising from lax enforcement of
> this requirement was commit 55f39cf755 ("merge: fix misleading
> pre-merge check documentation", 2018-06-30), which tried to document
> the requirement and noted there were some exceptions. As mentioned in
> that commit message, the `resolve` strategy was the one strategy that
> did not have an explicit index matching HEAD check, and the reason it
> didn't was that I wasn't able to discover any cases where the
> implementation would fail to catch the problem and abort, and didn't
> want to introduce unnecessary performance overhead of adding another
> check.
>
> Well, today I discovered a testcase where the implementation does not
> catch the problem and so an explicit check is needed. Add a testcase
> that previously would have failed, and update git-merge-resolve.sh to
> have an explicit check. Note that the code is copied from 3ec62ad9ff
> ("merge-octopus: abort if index does not match HEAD", 2016-04-09), so
> that we reuse the same message and avoid making translators need to
> translate some new message.
>
> Signed-off-by: Elijah Newren <newren@gmail.com>
> ---
> builtin/merge.c | 20 ++++++++++++++++++
> git-merge-resolve.sh | 10 +++++++++
> t/t6424-merge-unrelated-index-changes.sh | 26 ++++++++++++++++++++++++
> 3 files changed, 56 insertions(+)
>
> diff --git a/builtin/merge.c b/builtin/merge.c
> index 23170f2d2a6..13884b8e836 100644
> --- a/builtin/merge.c
> +++ b/builtin/merge.c
> @@ -1599,6 +1599,26 @@ int cmd_merge(int argc, const char **argv, const char *prefix)
> */
> refresh_cache(REFRESH_QUIET);
> if (allow_trivial && fast_forward != FF_ONLY) {
> + /*
> + * Must first ensure that index matches HEAD before
> + * attempting a trivial merge.
> + */
> + struct tree *head_tree = get_commit_tree(head_commit);
> + struct strbuf sb = STRBUF_INIT;
> +
> + if (repo_index_has_changes(the_repository, head_tree,
> + &sb)) {
> + struct strbuf err = STRBUF_INIT;
> + strbuf_addstr(&err, "error: ");
> + strbuf_addf(&err, _("Your local changes to the following files would be overwritten by merge:\n %s"),
> + sb.buf);
> + strbuf_addch(&err, '\n');
At first glance I was expecting this to construct an error message to
emit it somewhere else that stderr, so I wondered if you couldn't use
the "error_routine" facility to avoid re-inventing "error: " etc.,
but...
> + fputs(err.buf, stderr);
...we emit it to stderr anyway...?
> + strbuf_release(&err);
> + strbuf_release(&sb);
> + return -1;
> + }
> +
> /* See if it is really trivial. */
> git_committer_info(IDENT_STRICT);
> printf(_("Trying really trivial in-index merge...\n"));
> diff --git a/git-merge-resolve.sh b/git-merge-resolve.sh
> index 343fe7bccd0..77e93121bf8 100755
> --- a/git-merge-resolve.sh
> +++ b/git-merge-resolve.sh
> @@ -5,6 +5,16 @@
> #
> # Resolve two trees, using enhanced multi-base read-tree.
>
> +. git-sh-setup
> +
> +# Abort if index does not match HEAD
> +if ! git diff-index --quiet --cached HEAD --
> +then
> + gettextln "Error: Your local changes to the following files would be overwritten by merge"
> + git diff-index --cached --name-only HEAD -- | sed -e 's/^/ /'
> + exit 2
> +fi
(The "..." continued below)
Just in trying to poke holes in this I made this an "exit 0", and
neither of the tests you added failed, but the last one ("resolve &&
recursive && ort") in the t6424*.sh will fail, is that intentional?
I don't know enough about the context here, but given our *.sh->C
migration elsewhere it's a bit unfortunate to see more *.sh code added
back. We have "git merge" driving this, isn't it OK to have it make this
check before invoking "resolve" (may be a stupid question).
For this code in particular it:
* Uses spaces, not tabs
* We lose the diff-index .. --name-only exit code (segfault), but so
did the older version
* I wonder if bending over backwards to emit the exact message we
emitted before is worth it
If you just make this something like (untested):
{
gettext "error: " &&
gettextln "Your local..."
}
You could re-use the translation from the *.c one (and the "error: " one
we'll get from usage.c).
That leaves "\n %s" as the difference, but we could just remove that
from the _() and emit it unconditionally, no?
> # The first parameters up to -- are merge bases; the rest are heads.
> bases= head= remotes= sep_seen=
> for arg
> diff --git a/t/t6424-merge-unrelated-index-changes.sh b/t/t6424-merge-unrelated-index-changes.sh
> index b6e424a427b..f35d3182b86 100755
> --- a/t/t6424-merge-unrelated-index-changes.sh
> +++ b/t/t6424-merge-unrelated-index-changes.sh
> @@ -114,6 +114,32 @@ test_expect_success 'resolve, non-trivial' '
> test_path_is_missing .git/MERGE_HEAD
> '
>
> +test_expect_success 'resolve, trivial, related file removed' '
> + git reset --hard &&
> + git checkout B^0 &&
> +
> + git rm a &&
> + test_path_is_missing a &&
> +
> + test_must_fail git merge -s resolve C^0 &&
> +
> + test_path_is_missing a &&
> + test_path_is_missing .git/MERGE_HEAD
> +'
> +
> +test_expect_success 'resolve, non-trivial, related file removed' '
> + git reset --hard &&
> + git checkout B^0 &&
> +
> + git rm a &&
> + test_path_is_missing a &&
> +
> + test_must_fail git merge -s resolve D^0 &&
> +
> + test_path_is_missing a &&
> + test_path_is_missing .git/MERGE_HEAD
> +'
> +
> test_expect_success 'recursive' '
> git reset --hard &&
> git checkout B^0 &&
...I tried with this change on top, it seems to me like you'd want this
in any case, it passes the tests both with & without the C code change,
so can't we just use error() here?
diff --git a/builtin/merge.c b/builtin/merge.c
index 7fb4414ebb7..64def49734a 100644
--- a/builtin/merge.c
+++ b/builtin/merge.c
@@ -1621,13 +1621,8 @@ int cmd_merge(int argc, const char **argv, const char *prefix)
if (repo_index_has_changes(the_repository, head_tree,
&sb)) {
- struct strbuf err = STRBUF_INIT;
- strbuf_addstr(&err, "error: ");
- strbuf_addf(&err, _("Your local changes to the following files would be overwritten by merge:\n %s"),
- sb.buf);
- strbuf_addch(&err, '\n');
- fputs(err.buf, stderr);
- strbuf_release(&err);
+ error(_("Your local changes to the following files would be overwritten by merge:\n %s"),
+ sb.buf);
strbuf_release(&sb);
return -1;
}
diff --git a/t/t6424-merge-unrelated-index-changes.sh b/t/t6424-merge-unrelated-index-changes.sh
index c96649448fa..1df130b9ee6 100755
--- a/t/t6424-merge-unrelated-index-changes.sh
+++ b/t/t6424-merge-unrelated-index-changes.sh
@@ -96,7 +96,12 @@ test_expect_success 'resolve, trivial' '
touch random_file && git add random_file &&
- test_must_fail git merge -s resolve C^0 &&
+ sed -e "s/^> //g" >expect <<-\EOF &&
+ > error: Your local changes to the following files would be overwritten by merge:
+ > random_file
+ EOF
+ test_must_fail git merge -s resolve C^0 2>actual &&
+ test_cmp expect actual &&
test_path_is_file random_file &&
git rev-parse --verify :random_file &&
test_path_is_missing .git/MERGE_HEAD
^ permalink raw reply [relevance 0%]
* [PATCH v4 0/7] Fix merge restore state
2022-07-21 8:16 3% ` [PATCH v3 0/7] Fix merge restore state Elijah Newren via GitGitGadget
` (2 preceding siblings ...)
2022-07-21 8:16 2% ` [PATCH v3 4/7] merge: fix save_state() to work when there are stat-dirty files Elijah Newren via GitGitGadget
@ 2022-07-22 5:15 3% ` Elijah Newren via GitGitGadget
2022-07-22 5:15 2% ` [PATCH v4 2/7] merge-resolve: abort if index does not match HEAD Elijah Newren via GitGitGadget
` (3 more replies)
3 siblings, 4 replies; 200+ results
From: Elijah Newren via GitGitGadget @ 2022-07-22 5:15 UTC (permalink / raw)
To: git; +Cc: ZheNing Hu, Eric Sunshine, Junio C Hamano, Elijah Newren,
Elijah Newren
This started as a simple series to fix restore_state() in builtin/merge.c,
fixing an issue reported by ZheNing Hu[3]. It's grown so much it's hard to
call it simple. Anyway...
Changes since v3:
* Removed some accidental characters from a commit message
* Made use of the error() function to simplify the first patch
[1]
https://lore.kernel.org/git/CAOLTT8R7QmpvaFPTRs3xTpxr7eiuxF-ZWtvUUSC0-JOo9Y+SqA@mail.gmail.com/
Elijah Newren (7):
merge-ort-wrappers: make printed message match the one from recursive
merge-resolve: abort if index does not match HEAD
merge: do not abort early if one strategy fails to handle the merge
merge: fix save_state() to work when there are stat-dirty files
merge: make restore_state() restore staged state too
merge: ensure we can actually restore pre-merge state
merge: do not exit restore_state() prematurely
builtin/merge.c | 59 ++++++++++++++++++------
git-merge-resolve.sh | 10 ++++
merge-ort-wrappers.c | 4 +-
t/t6402-merge-rename.sh | 2 +-
t/t6424-merge-unrelated-index-changes.sh | 58 +++++++++++++++++++++++
t/t6439-merge-co-error-msgs.sh | 1 +
t/t7607-merge-state.sh | 32 +++++++++++++
7 files changed, 150 insertions(+), 16 deletions(-)
create mode 100755 t/t7607-merge-state.sh
base-commit: e72d93e88cb20b06e88e6e7d81bd1dc4effe453f
Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-1231%2Fnewren%2Ffix-merge-restore-state-v4
Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-1231/newren/fix-merge-restore-state-v4
Pull-Request: https://github.com/gitgitgadget/git/pull/1231
Range-diff vs v3:
1: e39b2e15ece ! 1: bd36d16c8d9 merge-ort-wrappers: make printed message match the one from recursive
@@ Commit message
being processed by another function that made additional changes:
* It added an implicit "error: " prefix
* It added an implicit trailing newline
-
- Add these things, but do so in a couple extra steps to avoid having
- translators need to translate another not-quite-identical string.
+ We can get these things by making use of the error() function.
Signed-off-by: Elijah Newren <newren@gmail.com>
@@ merge-ort-wrappers.c: static int unclean(struct merge_options *opt, struct tree
if (head && repo_index_has_changes(opt->repo, head, &sb)) {
- fprintf(stderr, _("Your local changes to the following files would be overwritten by merge:\n %s"),
-+ struct strbuf err = STRBUF_INIT;
-+ strbuf_addstr(&err, "error: ");
-+ strbuf_addf(&err, _("Your local changes to the following files would be overwritten by merge:\n %s"),
- sb.buf);
-+ strbuf_addch(&err, '\n');
-+ fputs(err.buf, stderr);
-+ strbuf_release(&err);
+- sb.buf);
++ error(_("Your local changes to the following files would be overwritten by merge:\n %s"),
++ sb.buf);
strbuf_release(&sb);
return -1;
}
2: 2810dec7608 = 2: b79f44e54b9 merge-resolve: abort if index does not match HEAD
3: b41853e3f99 = 3: 02930448ea1 merge: do not abort early if one strategy fails to handle the merge
4: 64700338a28 = 4: daf8d224160 merge: fix save_state() to work when there are stat-dirty files
5: 91c495c770e ! 5: f401bd5ad0d merge: make restore_state() restore staged state too
@@ Commit message
Unfortunately, if users had staged changes before calling `git merge`,
builtin/merge.c could do the following:
- * stash the changes, in order to clean up after the strategies
- * try all the merge strategies in turn, each of which report they
+ * stash the changes, in order to clean up after the strategies
+ * try all the merge strategies in turn, each of which report they
cannot function due to the index not matching HEAD
- * restore the changes via "git stash apply"
+ * restore the changes via "git stash apply"
But that last step would have the net effect of unstaging the user's
changes. Fix this by adding the "--index" option to "git stash apply".
6: 887967c1f3f = 6: ad5354c219c merge: ensure we can actually restore pre-merge state
7: 81c40492a62 = 7: 6212d572604 merge: do not exit restore_state() prematurely
--
gitgitgadget
^ permalink raw reply [relevance 3%]
* [PATCH v4 4/7] merge: fix save_state() to work when there are stat-dirty files
2022-07-22 5:15 3% ` [PATCH v4 0/7] Fix merge restore state Elijah Newren via GitGitGadget
2022-07-22 5:15 2% ` [PATCH v4 2/7] merge-resolve: abort if index does not match HEAD Elijah Newren via GitGitGadget
2022-07-22 5:15 2% ` [PATCH v4 3/7] merge: do not abort early if one strategy fails to handle the merge Elijah Newren via GitGitGadget
@ 2022-07-22 5:15 2% ` Elijah Newren via GitGitGadget
2022-07-23 1:53 3% ` [PATCH v5 0/8] Fix merge restore state Elijah Newren via GitGitGadget
3 siblings, 0 replies; 200+ results
From: Elijah Newren via GitGitGadget @ 2022-07-22 5:15 UTC (permalink / raw)
To: git
Cc: ZheNing Hu, Eric Sunshine, Junio C Hamano, Elijah Newren,
Elijah Newren, Elijah Newren
From: Elijah Newren <newren@gmail.com>
When there are stat-dirty files, but no files are modified,
`git stash create` exits with unsuccessful status. This causes merge
to fail. Copy some code from sequencer.c's create_autostash to refresh
the index first to avoid this problem.
Signed-off-by: Elijah Newren <newren@gmail.com>
---
builtin/merge.c | 8 ++++++++
t/t6424-merge-unrelated-index-changes.sh | 11 +++++++++++
2 files changed, 19 insertions(+)
diff --git a/builtin/merge.c b/builtin/merge.c
index dec7375bf2a..4170c30317e 100644
--- a/builtin/merge.c
+++ b/builtin/merge.c
@@ -313,8 +313,16 @@ static int save_state(struct object_id *stash)
int len;
struct child_process cp = CHILD_PROCESS_INIT;
struct strbuf buffer = STRBUF_INIT;
+ struct lock_file lock_file = LOCK_INIT;
+ int fd;
int rc = -1;
+ fd = repo_hold_locked_index(the_repository, &lock_file, 0);
+ refresh_cache(REFRESH_QUIET);
+ if (0 <= fd)
+ repo_update_index_if_able(the_repository, &lock_file);
+ rollback_lock_file(&lock_file);
+
strvec_pushl(&cp.args, "stash", "create", NULL);
cp.out = -1;
cp.git_cmd = 1;
diff --git a/t/t6424-merge-unrelated-index-changes.sh b/t/t6424-merge-unrelated-index-changes.sh
index 8b749e19083..3019d030e07 100755
--- a/t/t6424-merge-unrelated-index-changes.sh
+++ b/t/t6424-merge-unrelated-index-changes.sh
@@ -268,6 +268,17 @@ test_expect_success 'subtree' '
test_path_is_missing .git/MERGE_HEAD
'
+test_expect_success 'avoid failure due to stat-dirty files' '
+ git reset --hard &&
+ git checkout B^0 &&
+
+ # Make "a" be stat-dirty
+ test-tool chmtime =+1 a &&
+
+ # stat-dirty file should not prevent stash creation in builtin/merge.c
+ git merge -s resolve -s recursive D^0
+'
+
test_expect_success 'resolve && recursive && ort' '
git reset --hard &&
git checkout B^0 &&
--
gitgitgadget
^ permalink raw reply related [relevance 2%]
* [PATCH v4 3/7] merge: do not abort early if one strategy fails to handle the merge
2022-07-22 5:15 3% ` [PATCH v4 0/7] Fix merge restore state Elijah Newren via GitGitGadget
2022-07-22 5:15 2% ` [PATCH v4 2/7] merge-resolve: abort if index does not match HEAD Elijah Newren via GitGitGadget
@ 2022-07-22 5:15 2% ` Elijah Newren via GitGitGadget
2022-07-22 10:47 0% ` Ævar Arnfjörð Bjarmason
2022-07-22 5:15 2% ` [PATCH v4 4/7] merge: fix save_state() to work when there are stat-dirty files Elijah Newren via GitGitGadget
2022-07-23 1:53 3% ` [PATCH v5 0/8] Fix merge restore state Elijah Newren via GitGitGadget
3 siblings, 1 reply; 200+ results
From: Elijah Newren via GitGitGadget @ 2022-07-22 5:15 UTC (permalink / raw)
To: git
Cc: ZheNing Hu, Eric Sunshine, Junio C Hamano, Elijah Newren,
Elijah Newren, Elijah Newren
From: Elijah Newren <newren@gmail.com>
builtin/merge is setup to allow multiple strategies to be specified,
and it will find the "best" result and use it. This is defeated if
some of the merge strategies abort early when they cannot handle the
merge. Fix the logic that calls recursive and ort to not do such an
early abort, but instead return "2" or "unhandled" so that the next
strategy can try to handle the merge.
Coming up with a testcase for this is somewhat difficult, since
recursive and ort both handle nearly any two-headed merge (there is
a separate code path that checks for non-two-headed merges and
already returns "2" for them). So use a somewhat synthetic testcase
of having the index not match HEAD before the merge starts, since all
merge strategies will abort for that.
Signed-off-by: Elijah Newren <newren@gmail.com>
---
builtin/merge.c | 6 ++++--
t/t6402-merge-rename.sh | 2 +-
t/t6424-merge-unrelated-index-changes.sh | 16 ++++++++++++++++
t/t6439-merge-co-error-msgs.sh | 1 +
4 files changed, 22 insertions(+), 3 deletions(-)
diff --git a/builtin/merge.c b/builtin/merge.c
index 13884b8e836..dec7375bf2a 100644
--- a/builtin/merge.c
+++ b/builtin/merge.c
@@ -754,8 +754,10 @@ static int try_merge_strategy(const char *strategy, struct commit_list *common,
else
clean = merge_recursive(&o, head, remoteheads->item,
reversed, &result);
- if (clean < 0)
- exit(128);
+ if (clean < 0) {
+ rollback_lock_file(&lock);
+ return 2;
+ }
if (write_locked_index(&the_index, &lock,
COMMIT_LOCK | SKIP_IF_UNCHANGED))
die(_("unable to write %s"), get_index_file());
diff --git a/t/t6402-merge-rename.sh b/t/t6402-merge-rename.sh
index 3a32b1a45cf..772238e582c 100755
--- a/t/t6402-merge-rename.sh
+++ b/t/t6402-merge-rename.sh
@@ -210,7 +210,7 @@ test_expect_success 'updated working tree file should prevent the merge' '
echo >>M one line addition &&
cat M >M.saved &&
git update-index M &&
- test_expect_code 128 git pull --no-rebase . yellow &&
+ test_expect_code 2 git pull --no-rebase . yellow &&
test_cmp M M.saved &&
rm -f M.saved
'
diff --git a/t/t6424-merge-unrelated-index-changes.sh b/t/t6424-merge-unrelated-index-changes.sh
index f35d3182b86..8b749e19083 100755
--- a/t/t6424-merge-unrelated-index-changes.sh
+++ b/t/t6424-merge-unrelated-index-changes.sh
@@ -268,4 +268,20 @@ test_expect_success 'subtree' '
test_path_is_missing .git/MERGE_HEAD
'
+test_expect_success 'resolve && recursive && ort' '
+ git reset --hard &&
+ git checkout B^0 &&
+
+ test_seq 0 10 >a &&
+ git add a &&
+
+ sane_unset GIT_TEST_MERGE_ALGORITHM &&
+ test_must_fail git merge -s resolve -s recursive -s ort C^0 >output 2>&1 &&
+
+ grep "Trying merge strategy resolve..." output &&
+ grep "Trying merge strategy recursive..." output &&
+ grep "Trying merge strategy ort..." output &&
+ grep "No merge strategy handled the merge." output
+'
+
test_done
diff --git a/t/t6439-merge-co-error-msgs.sh b/t/t6439-merge-co-error-msgs.sh
index 5bfb027099a..52cf0c87690 100755
--- a/t/t6439-merge-co-error-msgs.sh
+++ b/t/t6439-merge-co-error-msgs.sh
@@ -47,6 +47,7 @@ test_expect_success 'untracked files overwritten by merge (fast and non-fast for
export GIT_MERGE_VERBOSITY &&
test_must_fail git merge branch 2>out2
) &&
+ echo "Merge with strategy ${GIT_TEST_MERGE_ALGORITHM:-ort} failed." >>expect &&
test_cmp out2 expect &&
git reset --hard HEAD^
'
--
gitgitgadget
^ permalink raw reply related [relevance 2%]
* [PATCH v4 2/7] merge-resolve: abort if index does not match HEAD
2022-07-22 5:15 3% ` [PATCH v4 0/7] Fix merge restore state Elijah Newren via GitGitGadget
@ 2022-07-22 5:15 2% ` Elijah Newren via GitGitGadget
2022-07-22 10:27 0% ` Ævar Arnfjörð Bjarmason
2022-07-22 5:15 2% ` [PATCH v4 3/7] merge: do not abort early if one strategy fails to handle the merge Elijah Newren via GitGitGadget
` (2 subsequent siblings)
3 siblings, 1 reply; 200+ results
From: Elijah Newren via GitGitGadget @ 2022-07-22 5:15 UTC (permalink / raw)
To: git
Cc: ZheNing Hu, Eric Sunshine, Junio C Hamano, Elijah Newren,
Elijah Newren, Elijah Newren
From: Elijah Newren <newren@gmail.com>
As noted in commit 9822175d2b ("Ensure index matches head before
invoking merge machinery, round N", 2019-08-17), we have had a very
long history of problems with failing to enforce the requirement that
index matches HEAD when starting a merge. One of the commits
referenced in the long tale of issues arising from lax enforcement of
this requirement was commit 55f39cf755 ("merge: fix misleading
pre-merge check documentation", 2018-06-30), which tried to document
the requirement and noted there were some exceptions. As mentioned in
that commit message, the `resolve` strategy was the one strategy that
did not have an explicit index matching HEAD check, and the reason it
didn't was that I wasn't able to discover any cases where the
implementation would fail to catch the problem and abort, and didn't
want to introduce unnecessary performance overhead of adding another
check.
Well, today I discovered a testcase where the implementation does not
catch the problem and so an explicit check is needed. Add a testcase
that previously would have failed, and update git-merge-resolve.sh to
have an explicit check. Note that the code is copied from 3ec62ad9ff
("merge-octopus: abort if index does not match HEAD", 2016-04-09), so
that we reuse the same message and avoid making translators need to
translate some new message.
Signed-off-by: Elijah Newren <newren@gmail.com>
---
builtin/merge.c | 20 ++++++++++++++++++
git-merge-resolve.sh | 10 +++++++++
t/t6424-merge-unrelated-index-changes.sh | 26 ++++++++++++++++++++++++
3 files changed, 56 insertions(+)
diff --git a/builtin/merge.c b/builtin/merge.c
index 23170f2d2a6..13884b8e836 100644
--- a/builtin/merge.c
+++ b/builtin/merge.c
@@ -1599,6 +1599,26 @@ int cmd_merge(int argc, const char **argv, const char *prefix)
*/
refresh_cache(REFRESH_QUIET);
if (allow_trivial && fast_forward != FF_ONLY) {
+ /*
+ * Must first ensure that index matches HEAD before
+ * attempting a trivial merge.
+ */
+ struct tree *head_tree = get_commit_tree(head_commit);
+ struct strbuf sb = STRBUF_INIT;
+
+ if (repo_index_has_changes(the_repository, head_tree,
+ &sb)) {
+ struct strbuf err = STRBUF_INIT;
+ strbuf_addstr(&err, "error: ");
+ strbuf_addf(&err, _("Your local changes to the following files would be overwritten by merge:\n %s"),
+ sb.buf);
+ strbuf_addch(&err, '\n');
+ fputs(err.buf, stderr);
+ strbuf_release(&err);
+ strbuf_release(&sb);
+ return -1;
+ }
+
/* See if it is really trivial. */
git_committer_info(IDENT_STRICT);
printf(_("Trying really trivial in-index merge...\n"));
diff --git a/git-merge-resolve.sh b/git-merge-resolve.sh
index 343fe7bccd0..77e93121bf8 100755
--- a/git-merge-resolve.sh
+++ b/git-merge-resolve.sh
@@ -5,6 +5,16 @@
#
# Resolve two trees, using enhanced multi-base read-tree.
+. git-sh-setup
+
+# Abort if index does not match HEAD
+if ! git diff-index --quiet --cached HEAD --
+then
+ gettextln "Error: Your local changes to the following files would be overwritten by merge"
+ git diff-index --cached --name-only HEAD -- | sed -e 's/^/ /'
+ exit 2
+fi
+
# The first parameters up to -- are merge bases; the rest are heads.
bases= head= remotes= sep_seen=
for arg
diff --git a/t/t6424-merge-unrelated-index-changes.sh b/t/t6424-merge-unrelated-index-changes.sh
index b6e424a427b..f35d3182b86 100755
--- a/t/t6424-merge-unrelated-index-changes.sh
+++ b/t/t6424-merge-unrelated-index-changes.sh
@@ -114,6 +114,32 @@ test_expect_success 'resolve, non-trivial' '
test_path_is_missing .git/MERGE_HEAD
'
+test_expect_success 'resolve, trivial, related file removed' '
+ git reset --hard &&
+ git checkout B^0 &&
+
+ git rm a &&
+ test_path_is_missing a &&
+
+ test_must_fail git merge -s resolve C^0 &&
+
+ test_path_is_missing a &&
+ test_path_is_missing .git/MERGE_HEAD
+'
+
+test_expect_success 'resolve, non-trivial, related file removed' '
+ git reset --hard &&
+ git checkout B^0 &&
+
+ git rm a &&
+ test_path_is_missing a &&
+
+ test_must_fail git merge -s resolve D^0 &&
+
+ test_path_is_missing a &&
+ test_path_is_missing .git/MERGE_HEAD
+'
+
test_expect_success 'recursive' '
git reset --hard &&
git checkout B^0 &&
--
gitgitgadget
^ permalink raw reply related [relevance 2%]
* [PATCH v3 0/7] Fix merge restore state
2022-06-19 6:50 3% ` [PATCH v2 0/6] " Elijah Newren via GitGitGadget
2022-06-19 6:50 2% ` [PATCH v2 3/6] merge: fix save_state() to work when there are racy-dirty files Elijah Newren via GitGitGadget
@ 2022-07-21 8:16 3% ` Elijah Newren via GitGitGadget
2022-07-21 8:16 2% ` [PATCH v3 2/7] merge-resolve: abort if index does not match HEAD Elijah Newren via GitGitGadget
` (3 more replies)
2 siblings, 4 replies; 200+ results
From: Elijah Newren via GitGitGadget @ 2022-07-21 8:16 UTC (permalink / raw)
To: git
Cc: ZheNing Hu, Eric Sunshine, Junio C Hamano,
Ævar Arnfjörð Bjarmason, Elijah Newren,
Elijah Newren
NOTE: Rebased on master, yet again, because (1) Junio merged his commit to
master separately, and (2) Ævar's intentional duplication of my second
patch[1] later conflicted with other changes I had to make in the same area.
(Which isn't a big deal, but for future reference, it would be nicer to
avoid conflicts by omitting the fixup I had already submitted[2] instead of
intentionally duplicating it).
This started as a simple series to fix restore_state() in builtin/merge.c,
fixing an issue reported by ZheNing Hu[3]. It's grown so much it's hard to
call it simple. Anyway...
Changes since v2:
* Removed the first two patches, as noted above in the comment about
rebasing.
* Inserted new patches 3, 4, and 5 to fix some related bugs. Folks are more
likely to object to patch 5 than the others; people should probably take
a look at that one if they have limited time.
* Dramatically reworded commit messages given the misunderstandings of what
was being addressed and done. Hopefully it is much clearer what the last
three patches are doing and what they are not doing, and why.
* Added several new testcases
[1]
https://lore.kernel.org/git/patch-1.1-7d90f26b73f-20220520T115426Z-avarab@gmail.com/
[2] https://lore.kernel.org/git/xmqqedyyghsc.fsf@gitster.g/ [3]
https://lore.kernel.org/git/CAOLTT8R7QmpvaFPTRs3xTpxr7eiuxF-ZWtvUUSC0-JOo9Y+SqA@mail.gmail.com/
Elijah Newren (7):
merge-ort-wrappers: make printed message match the one from recursive
merge-resolve: abort if index does not match HEAD
merge: do not abort early if one strategy fails to handle the merge
merge: fix save_state() to work when there are stat-dirty files
merge: make restore_state() restore staged state too
merge: ensure we can actually restore pre-merge state
merge: do not exit restore_state() prematurely
builtin/merge.c | 59 ++++++++++++++++++------
git-merge-resolve.sh | 10 ++++
merge-ort-wrappers.c | 7 ++-
t/t6402-merge-rename.sh | 2 +-
t/t6424-merge-unrelated-index-changes.sh | 58 +++++++++++++++++++++++
t/t6439-merge-co-error-msgs.sh | 1 +
t/t7607-merge-state.sh | 32 +++++++++++++
7 files changed, 154 insertions(+), 15 deletions(-)
create mode 100755 t/t7607-merge-state.sh
base-commit: e72d93e88cb20b06e88e6e7d81bd1dc4effe453f
Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-1231%2Fnewren%2Ffix-merge-restore-state-v3
Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-1231/newren/fix-merge-restore-state-v3
Pull-Request: https://github.com/gitgitgadget/git/pull/1231
Range-diff vs v2:
1: 6147e72c309 < -: ----------- t6424: make sure a failed merge preserves local changes
2: 230d84f09c8 < -: ----------- merge: remove unused variable
-: ----------- > 1: e39b2e15ece merge-ort-wrappers: make printed message match the one from recursive
-: ----------- > 2: 2810dec7608 merge-resolve: abort if index does not match HEAD
-: ----------- > 3: b41853e3f99 merge: do not abort early if one strategy fails to handle the merge
3: 89e5e633241 ! 4: 64700338a28 merge: fix save_state() to work when there are racy-dirty files
@@ Metadata
Author: Elijah Newren <newren@gmail.com>
## Commit message ##
- merge: fix save_state() to work when there are racy-dirty files
+ merge: fix save_state() to work when there are stat-dirty files
- When there are racy-dirty files, but no files are modified,
+ When there are stat-dirty files, but no files are modified,
`git stash create` exits with unsuccessful status. This causes merge
- to fail. Refresh the index first to avoid this problem.
+ to fail. Copy some code from sequencer.c's create_autostash to refresh
+ the index first to avoid this problem.
Signed-off-by: Elijah Newren <newren@gmail.com>
@@ builtin/merge.c: static int save_state(struct object_id *stash)
strvec_pushl(&cp.args, "stash", "create", NULL);
cp.out = -1;
cp.git_cmd = 1;
+
+ ## t/t6424-merge-unrelated-index-changes.sh ##
+@@ t/t6424-merge-unrelated-index-changes.sh: test_expect_success 'subtree' '
+ test_path_is_missing .git/MERGE_HEAD
+ '
+
++test_expect_success 'avoid failure due to stat-dirty files' '
++ git reset --hard &&
++ git checkout B^0 &&
++
++ # Make "a" be stat-dirty
++ test-tool chmtime =+1 a &&
++
++ # stat-dirty file should not prevent stash creation in builtin/merge.c
++ git merge -s resolve -s recursive D^0
++'
++
+ test_expect_success 'resolve && recursive && ort' '
+ git reset --hard &&
+ git checkout B^0 &&
4: 4a8b7c9e06d ! 5: 91c495c770e merge: make restore_state() restore staged state too
@@ Metadata
## Commit message ##
merge: make restore_state() restore staged state too
- merge can be invoked with uncommitted changes, including staged changes.
- merge is responsible for restoring this state if some of the merge
- strategies make changes. However, it was not restoring staged changes
- due to the lack of the "--index" option to "git stash apply". Add the
- option to fix this shortcoming.
+ There are multiple issues at play here:
+
+ 1) If `git merge` is invoked with staged changes, it should abort
+ without doing any merging, and the user's working tree and index
+ should be the same as before merge was invoked.
+ 2) Merge strategies are responsible for enforcing the index == HEAD
+ requirement. (See 9822175d2b ("Ensure index matches head before
+ invoking merge machinery, round N", 2019-08-17) for some history
+ around this.)
+ 3) Merge strategies can bail saying they are not an appropriate
+ handler for the merge in question (possibly allowing other
+ strategies to be used instead).
+ 4) Merge strategies can make changes to the index and working tree,
+ and have no expectation to clean up after themselves, *even* if
+ they bail out and say they are not an appropriate handler for
+ the merge in question. (The `octopus` merge strategy does this,
+ for example.)
+ 5) Because of (3) and (4), builtin/merge.c stashes state before
+ trying merge strategies and restores it afterward.
+
+ Unfortunately, if users had staged changes before calling `git merge`,
+ builtin/merge.c could do the following:
+
+ * stash the changes, in order to clean up after the strategies
+ * try all the merge strategies in turn, each of which report they
+ cannot function due to the index not matching HEAD
+ * restore the changes via "git stash apply"
+
+ But that last step would have the net effect of unstaging the user's
+ changes. Fix this by adding the "--index" option to "git stash apply".
+ While at it, also squelch the stash apply output; we already report
+ "Rewinding the tree to pristine..." and don't need a detailed `git
+ status` report afterwards.
Signed-off-by: Elijah Newren <newren@gmail.com>
@@ builtin/merge.c: static void reset_hard(const struct object_id *oid, int verbose
const struct object_id *stash)
{
- const char *args[] = { "stash", "apply", NULL, NULL };
-+ const char *args[] = { "stash", "apply", "--index", NULL, NULL };
++ const char *args[] = { "stash", "apply", "--index", "--quiet",
++ NULL, NULL };
if (is_null_oid(stash))
return;
@@ builtin/merge.c: static void reset_hard(const struct object_id *oid, int verbose
reset_hard(head, 1);
- args[2] = oid_to_hex(stash);
-+ args[3] = oid_to_hex(stash);
++ args[4] = oid_to_hex(stash);
/*
* It is OK to ignore error here, for example when there was
+
+ ## t/t6424-merge-unrelated-index-changes.sh ##
+@@ t/t6424-merge-unrelated-index-changes.sh: test_expect_success 'resolve && recursive && ort' '
+
+ test_seq 0 10 >a &&
+ git add a &&
++ git rev-parse :a >expect &&
+
+ sane_unset GIT_TEST_MERGE_ALGORITHM &&
+ test_must_fail git merge -s resolve -s recursive -s ort C^0 >output 2>&1 &&
+@@ t/t6424-merge-unrelated-index-changes.sh: test_expect_success 'resolve && recursive && ort' '
+ grep "Trying merge strategy resolve..." output &&
+ grep "Trying merge strategy recursive..." output &&
+ grep "Trying merge strategy ort..." output &&
+- grep "No merge strategy handled the merge." output
++ grep "No merge strategy handled the merge." output &&
++
++ # Changes to "a" should remain staged
++ git rev-parse :a >actual &&
++ test_cmp expect actual
+ '
+
+ test_done
5: a03075167c1 ! 6: 887967c1f3f merge: ensure we can actually restore pre-merge state
@@ Metadata
## Commit message ##
merge: ensure we can actually restore pre-merge state
- Merge strategies can fail -- not just have conflicts, but give up and
- say that they are unable to handle the current type of merge. However,
- they can also make changes to the index and working tree before giving
- up; merge-octopus does this, for example. Currently, we do not expect
- the individual strategies to clean up after themselves, but instead
- expect builtin/merge.c to do so. For it to be able to, it needs to save
- the state before trying the merge strategy so it can have something to
- restore to. Therefore, remove the shortcut bypassing the save_state()
- call.
+ Merge strategies can:
+ * succeed with a clean merge
+ * succeed with a conflicted merge
+ * fail to handle the given type of merge
+
+ If one is thinking in terms of automatic mergeability, they would use
+ the word "fail" instead of "succeed" for the second bullet, but I am
+ focusing here on ability of the merge strategy to handle the given
+ inputs, not on whether the given inputs are mergeable. The third
+ category is about the merge strategy failing to know how to handle the
+ given data; examples include:
+
+ * Passing more than 2 branches to 'recursive' or 'ort'
+ * Passing 2 or fewer branches to 'octopus'
+ * Trying to do more complicated merges with 'resolve' (I believe
+ directory/file conflicts will cause it to bail.)
+ * Octopus running into a merge conflict for any branch OTHER than
+ the final one (see the "exit 2" codepath of commit 98efc8f3d8
+ ("octopus: allow manual resolve on the last round.", 2006-01-13))
+
+ That final one is particularly interesting, because it shows that the
+ merge strategy can muck with the index and working tree, and THEN bail
+ and say "sorry, this strategy cannot handle this type of merge; use
+ something else".
+
+ Further, we do not currently expect the individual strategies to clean
+ up after themselves, but instead expect builtin/merge.c to do so. For
+ it to be able to, it needs to save the state before trying the merge
+ strategy so it can have something to restore to. Therefore, remove the
+ shortcut bypassing the save_state() call.
+
+ There is another bug on the restore_state() side of things, so no
+ testcase will be added until the next commit when we have addressed that
+ issue as well.
Signed-off-by: Elijah Newren <newren@gmail.com>
@@ builtin/merge.c: int cmd_merge(int argc, const char **argv, const char *prefix)
* sync with the head commit. The strategies are responsible
* to ensure this.
+ *
-+ * Stash away the local changes so that we can try more than one.
++ * Stash away the local changes so that we can try more than one
++ * and/or recover from merge strategies bailing while leaving the
++ * index and working tree polluted.
*/
- if (use_strategies_nr == 1 ||
- /*
6: 0783b48c121 ! 7: 81c40492a62 merge: do not exit restore_state() prematurely
@@ Commit message
appropriate function to do the work which would update the in-memory
index automatically. For now, just do the simple fix.)
+ Also, add a testcase checking this, one for which the octopus strategy
+ fails on the first commit it attempts to merge, and thus which it
+ cannot handle at all and must completely bail on (as per the "exit 2"
+ code path of commit 98efc8f3d8 ("octopus: allow manual resolve on the
+ last round.", 2006-01-13)).
+
Reported-by: ZheNing Hu <adlternative@gmail.com>
Signed-off-by: Elijah Newren <newren@gmail.com>
## builtin/merge.c ##
@@ builtin/merge.c: static void restore_state(const struct object_id *head,
- {
- const char *args[] = { "stash", "apply", "--index", NULL, NULL };
+ const char *args[] = { "stash", "apply", "--index", "--quiet",
+ NULL, NULL };
- if (is_null_oid(stash))
- return;
@@ builtin/merge.c: static void restore_state(const struct object_id *head,
+ if (is_null_oid(stash))
+ goto refresh_cache;
+
- args[3] = oid_to_hex(stash);
+ args[4] = oid_to_hex(stash);
/*
@@ builtin/merge.c: static void restore_state(const struct object_id *head,
@@ t/t7607-merge-state.sh (new)
+
+test_expect_success 'set up custom strategy' '
+ test_commit --no-tag "Initial" base base &&
-+git show-ref &&
+
+ for b in branch1 branch2 branch3
+ do
+ git checkout -b $b main &&
-+ test_commit --no-tag "Change on $b" base $b
++ test_commit --no-tag "Change on $b" base $b || return 1
+ done &&
+
+ git checkout branch1 &&
-+ test_must_fail git merge branch2 branch3 &&
++ # This is a merge that octopus cannot handle. Note, that it does not
++ # just hit conflicts, it completely fails and says that it cannot
++ # handle this type of merge.
++ test_expect_code 2 git merge branch2 branch3 >output 2>&1 &&
++ grep "fatal: merge program failed" output &&
++ grep "Should not be doing an octopus" output &&
++
++ # Make sure we did not leave stray changes around when no appropriate
++ # merge strategy was found
+ git diff --exit-code --name-status &&
+ test_path_is_missing .git/MERGE_HEAD
+'
--
gitgitgadget
^ permalink raw reply [relevance 3%]
* [PATCH v3 4/7] merge: fix save_state() to work when there are stat-dirty files
2022-07-21 8:16 3% ` [PATCH v3 0/7] Fix merge restore state Elijah Newren via GitGitGadget
2022-07-21 8:16 2% ` [PATCH v3 2/7] merge-resolve: abort if index does not match HEAD Elijah Newren via GitGitGadget
2022-07-21 8:16 2% ` [PATCH v3 3/7] merge: do not abort early if one strategy fails to handle the merge Elijah Newren via GitGitGadget
@ 2022-07-21 8:16 2% ` Elijah Newren via GitGitGadget
2022-07-22 5:15 3% ` [PATCH v4 0/7] Fix merge restore state Elijah Newren via GitGitGadget
3 siblings, 0 replies; 200+ results
From: Elijah Newren via GitGitGadget @ 2022-07-21 8:16 UTC (permalink / raw)
To: git
Cc: ZheNing Hu, Eric Sunshine, Junio C Hamano,
Ævar Arnfjörð Bjarmason, Elijah Newren,
Elijah Newren, Elijah Newren
From: Elijah Newren <newren@gmail.com>
When there are stat-dirty files, but no files are modified,
`git stash create` exits with unsuccessful status. This causes merge
to fail. Copy some code from sequencer.c's create_autostash to refresh
the index first to avoid this problem.
Signed-off-by: Elijah Newren <newren@gmail.com>
---
builtin/merge.c | 8 ++++++++
t/t6424-merge-unrelated-index-changes.sh | 11 +++++++++++
2 files changed, 19 insertions(+)
diff --git a/builtin/merge.c b/builtin/merge.c
index dec7375bf2a..4170c30317e 100644
--- a/builtin/merge.c
+++ b/builtin/merge.c
@@ -313,8 +313,16 @@ static int save_state(struct object_id *stash)
int len;
struct child_process cp = CHILD_PROCESS_INIT;
struct strbuf buffer = STRBUF_INIT;
+ struct lock_file lock_file = LOCK_INIT;
+ int fd;
int rc = -1;
+ fd = repo_hold_locked_index(the_repository, &lock_file, 0);
+ refresh_cache(REFRESH_QUIET);
+ if (0 <= fd)
+ repo_update_index_if_able(the_repository, &lock_file);
+ rollback_lock_file(&lock_file);
+
strvec_pushl(&cp.args, "stash", "create", NULL);
cp.out = -1;
cp.git_cmd = 1;
diff --git a/t/t6424-merge-unrelated-index-changes.sh b/t/t6424-merge-unrelated-index-changes.sh
index 8b749e19083..3019d030e07 100755
--- a/t/t6424-merge-unrelated-index-changes.sh
+++ b/t/t6424-merge-unrelated-index-changes.sh
@@ -268,6 +268,17 @@ test_expect_success 'subtree' '
test_path_is_missing .git/MERGE_HEAD
'
+test_expect_success 'avoid failure due to stat-dirty files' '
+ git reset --hard &&
+ git checkout B^0 &&
+
+ # Make "a" be stat-dirty
+ test-tool chmtime =+1 a &&
+
+ # stat-dirty file should not prevent stash creation in builtin/merge.c
+ git merge -s resolve -s recursive D^0
+'
+
test_expect_success 'resolve && recursive && ort' '
git reset --hard &&
git checkout B^0 &&
--
gitgitgadget
^ permalink raw reply related [relevance 2%]
* [PATCH v3 3/7] merge: do not abort early if one strategy fails to handle the merge
2022-07-21 8:16 3% ` [PATCH v3 0/7] Fix merge restore state Elijah Newren via GitGitGadget
2022-07-21 8:16 2% ` [PATCH v3 2/7] merge-resolve: abort if index does not match HEAD Elijah Newren via GitGitGadget
@ 2022-07-21 8:16 2% ` Elijah Newren via GitGitGadget
2022-07-25 10:38 0% ` Ævar Arnfjörð Bjarmason
2022-07-21 8:16 2% ` [PATCH v3 4/7] merge: fix save_state() to work when there are stat-dirty files Elijah Newren via GitGitGadget
2022-07-22 5:15 3% ` [PATCH v4 0/7] Fix merge restore state Elijah Newren via GitGitGadget
3 siblings, 1 reply; 200+ results
From: Elijah Newren via GitGitGadget @ 2022-07-21 8:16 UTC (permalink / raw)
To: git
Cc: ZheNing Hu, Eric Sunshine, Junio C Hamano,
Ævar Arnfjörð Bjarmason, Elijah Newren,
Elijah Newren, Elijah Newren
From: Elijah Newren <newren@gmail.com>
builtin/merge is setup to allow multiple strategies to be specified,
and it will find the "best" result and use it. This is defeated if
some of the merge strategies abort early when they cannot handle the
merge. Fix the logic that calls recursive and ort to not do such an
early abort, but instead return "2" or "unhandled" so that the next
strategy can try to handle the merge.
Coming up with a testcase for this is somewhat difficult, since
recursive and ort both handle nearly any two-headed merge (there is
a separate code path that checks for non-two-headed merges and
already returns "2" for them). So use a somewhat synthetic testcase
of having the index not match HEAD before the merge starts, since all
merge strategies will abort for that.
Signed-off-by: Elijah Newren <newren@gmail.com>
---
builtin/merge.c | 6 ++++--
t/t6402-merge-rename.sh | 2 +-
t/t6424-merge-unrelated-index-changes.sh | 16 ++++++++++++++++
t/t6439-merge-co-error-msgs.sh | 1 +
4 files changed, 22 insertions(+), 3 deletions(-)
diff --git a/builtin/merge.c b/builtin/merge.c
index 13884b8e836..dec7375bf2a 100644
--- a/builtin/merge.c
+++ b/builtin/merge.c
@@ -754,8 +754,10 @@ static int try_merge_strategy(const char *strategy, struct commit_list *common,
else
clean = merge_recursive(&o, head, remoteheads->item,
reversed, &result);
- if (clean < 0)
- exit(128);
+ if (clean < 0) {
+ rollback_lock_file(&lock);
+ return 2;
+ }
if (write_locked_index(&the_index, &lock,
COMMIT_LOCK | SKIP_IF_UNCHANGED))
die(_("unable to write %s"), get_index_file());
diff --git a/t/t6402-merge-rename.sh b/t/t6402-merge-rename.sh
index 3a32b1a45cf..772238e582c 100755
--- a/t/t6402-merge-rename.sh
+++ b/t/t6402-merge-rename.sh
@@ -210,7 +210,7 @@ test_expect_success 'updated working tree file should prevent the merge' '
echo >>M one line addition &&
cat M >M.saved &&
git update-index M &&
- test_expect_code 128 git pull --no-rebase . yellow &&
+ test_expect_code 2 git pull --no-rebase . yellow &&
test_cmp M M.saved &&
rm -f M.saved
'
diff --git a/t/t6424-merge-unrelated-index-changes.sh b/t/t6424-merge-unrelated-index-changes.sh
index f35d3182b86..8b749e19083 100755
--- a/t/t6424-merge-unrelated-index-changes.sh
+++ b/t/t6424-merge-unrelated-index-changes.sh
@@ -268,4 +268,20 @@ test_expect_success 'subtree' '
test_path_is_missing .git/MERGE_HEAD
'
+test_expect_success 'resolve && recursive && ort' '
+ git reset --hard &&
+ git checkout B^0 &&
+
+ test_seq 0 10 >a &&
+ git add a &&
+
+ sane_unset GIT_TEST_MERGE_ALGORITHM &&
+ test_must_fail git merge -s resolve -s recursive -s ort C^0 >output 2>&1 &&
+
+ grep "Trying merge strategy resolve..." output &&
+ grep "Trying merge strategy recursive..." output &&
+ grep "Trying merge strategy ort..." output &&
+ grep "No merge strategy handled the merge." output
+'
+
test_done
diff --git a/t/t6439-merge-co-error-msgs.sh b/t/t6439-merge-co-error-msgs.sh
index 5bfb027099a..52cf0c87690 100755
--- a/t/t6439-merge-co-error-msgs.sh
+++ b/t/t6439-merge-co-error-msgs.sh
@@ -47,6 +47,7 @@ test_expect_success 'untracked files overwritten by merge (fast and non-fast for
export GIT_MERGE_VERBOSITY &&
test_must_fail git merge branch 2>out2
) &&
+ echo "Merge with strategy ${GIT_TEST_MERGE_ALGORITHM:-ort} failed." >>expect &&
test_cmp out2 expect &&
git reset --hard HEAD^
'
--
gitgitgadget
^ permalink raw reply related [relevance 2%]
* [PATCH v3 2/7] merge-resolve: abort if index does not match HEAD
2022-07-21 8:16 3% ` [PATCH v3 0/7] Fix merge restore state Elijah Newren via GitGitGadget
@ 2022-07-21 8:16 2% ` Elijah Newren via GitGitGadget
2022-07-21 8:16 2% ` [PATCH v3 3/7] merge: do not abort early if one strategy fails to handle the merge Elijah Newren via GitGitGadget
` (2 subsequent siblings)
3 siblings, 0 replies; 200+ results
From: Elijah Newren via GitGitGadget @ 2022-07-21 8:16 UTC (permalink / raw)
To: git
Cc: ZheNing Hu, Eric Sunshine, Junio C Hamano,
Ævar Arnfjörð Bjarmason, Elijah Newren,
Elijah Newren, Elijah Newren
From: Elijah Newren <newren@gmail.com>
As noted in commit 9822175d2b ("Ensure index matches head before
invoking merge machinery, round N", 2019-08-17), we have had a very
long history of problems with failing to enforce the requirement that
index matches HEAD when starting a merge. One of the commits
referenced in the long tale of issues arising from lax enforcement of
this requirement was commit 55f39cf755 ("merge: fix misleading
pre-merge check documentation", 2018-06-30), which tried to document
the requirement and noted there were some exceptions. As mentioned in
that commit message, the `resolve` strategy was the one strategy that
did not have an explicit index matching HEAD check, and the reason it
didn't was that I wasn't able to discover any cases where the
implementation would fail to catch the problem and abort, and didn't
want to introduce unnecessary performance overhead of adding another
check.
Well, today I discovered a testcase where the implementation does not
catch the problem and so an explicit check is needed. Add a testcase
that previously would have failed, and update git-merge-resolve.sh to
have an explicit check. Note that the code is copied from 3ec62ad9ff
("merge-octopus: abort if index does not match HEAD", 2016-04-09), so
that we reuse the same message and avoid making translators need to
translate some new message.
Signed-off-by: Elijah Newren <newren@gmail.com>
---
builtin/merge.c | 20 ++++++++++++++++++
git-merge-resolve.sh | 10 +++++++++
t/t6424-merge-unrelated-index-changes.sh | 26 ++++++++++++++++++++++++
3 files changed, 56 insertions(+)
diff --git a/builtin/merge.c b/builtin/merge.c
index 23170f2d2a6..13884b8e836 100644
--- a/builtin/merge.c
+++ b/builtin/merge.c
@@ -1599,6 +1599,26 @@ int cmd_merge(int argc, const char **argv, const char *prefix)
*/
refresh_cache(REFRESH_QUIET);
if (allow_trivial && fast_forward != FF_ONLY) {
+ /*
+ * Must first ensure that index matches HEAD before
+ * attempting a trivial merge.
+ */
+ struct tree *head_tree = get_commit_tree(head_commit);
+ struct strbuf sb = STRBUF_INIT;
+
+ if (repo_index_has_changes(the_repository, head_tree,
+ &sb)) {
+ struct strbuf err = STRBUF_INIT;
+ strbuf_addstr(&err, "error: ");
+ strbuf_addf(&err, _("Your local changes to the following files would be overwritten by merge:\n %s"),
+ sb.buf);
+ strbuf_addch(&err, '\n');
+ fputs(err.buf, stderr);
+ strbuf_release(&err);
+ strbuf_release(&sb);
+ return -1;
+ }
+
/* See if it is really trivial. */
git_committer_info(IDENT_STRICT);
printf(_("Trying really trivial in-index merge...\n"));
diff --git a/git-merge-resolve.sh b/git-merge-resolve.sh
index 343fe7bccd0..77e93121bf8 100755
--- a/git-merge-resolve.sh
+++ b/git-merge-resolve.sh
@@ -5,6 +5,16 @@
#
# Resolve two trees, using enhanced multi-base read-tree.
+. git-sh-setup
+
+# Abort if index does not match HEAD
+if ! git diff-index --quiet --cached HEAD --
+then
+ gettextln "Error: Your local changes to the following files would be overwritten by merge"
+ git diff-index --cached --name-only HEAD -- | sed -e 's/^/ /'
+ exit 2
+fi
+
# The first parameters up to -- are merge bases; the rest are heads.
bases= head= remotes= sep_seen=
for arg
diff --git a/t/t6424-merge-unrelated-index-changes.sh b/t/t6424-merge-unrelated-index-changes.sh
index b6e424a427b..f35d3182b86 100755
--- a/t/t6424-merge-unrelated-index-changes.sh
+++ b/t/t6424-merge-unrelated-index-changes.sh
@@ -114,6 +114,32 @@ test_expect_success 'resolve, non-trivial' '
test_path_is_missing .git/MERGE_HEAD
'
+test_expect_success 'resolve, trivial, related file removed' '
+ git reset --hard &&
+ git checkout B^0 &&
+
+ git rm a &&
+ test_path_is_missing a &&
+
+ test_must_fail git merge -s resolve C^0 &&
+
+ test_path_is_missing a &&
+ test_path_is_missing .git/MERGE_HEAD
+'
+
+test_expect_success 'resolve, non-trivial, related file removed' '
+ git reset --hard &&
+ git checkout B^0 &&
+
+ git rm a &&
+ test_path_is_missing a &&
+
+ test_must_fail git merge -s resolve D^0 &&
+
+ test_path_is_missing a &&
+ test_path_is_missing .git/MERGE_HEAD
+'
+
test_expect_success 'recursive' '
git reset --hard &&
git checkout B^0 &&
--
gitgitgadget
^ permalink raw reply related [relevance 2%]
* Re: [PATCH v2 4/6] merge: make restore_state() restore staged state too
@ 2022-07-21 1:37 3% ` Elijah Newren
0 siblings, 0 replies; 200+ results
From: Elijah Newren @ 2022-07-21 1:37 UTC (permalink / raw)
To: Junio C Hamano
Cc: Elijah Newren via GitGitGadget, Git Mailing List, ZheNing Hu
On Tue, Jul 19, 2022 at 4:28 PM Junio C Hamano <gitster@pobox.com> wrote:
>
> Junio C Hamano <gitster@pobox.com> writes:
>
> > "Elijah Newren via GitGitGadget" <gitgitgadget@gmail.com> writes:
> >
> >> From: Elijah Newren <newren@gmail.com>
> >>
> >> merge can be invoked with uncommitted changes, including staged changes.
> >> merge is responsible for restoring this state if some of the merge
> >> strategies make changes. However, it was not restoring staged changes
> >> due to the lack of the "--index" option to "git stash apply". Add the
> >> option to fix this shortcoming.
> >
> > Shouldn't this be testable?
Yes, I will add a test.
> I actually take this part (which implied that the change is a good
> idea) back. I think we have clearly documented for the past 17
> years that you can have local changes but your index must match the
> HEAD before you start your merge.
Actually, we don't enforce that the index must match HEAD in all
cases, as noted in commit 55f39cf755 ("merge: fix misleading pre-merge
check documentation", 2018-06-30). That commit also pointed out how
the documentation was a bit unclear in this area.
We also apparently fail to enforce the condition in at least two cases
that weren't a valid exception, which I just found while working on a
testcase for this patch. (Thus, we have one more sordid tale to add
to the saga in commit 9822175d2b ("Ensure index matches head before
invoking merge machinery, round N", 2019-08-17))
However, the failed enforcement and the "valid" special exceptions
aren't too relevant here, so...
> If "stash apply" vs "stash apply --index" makes any difference,
> there is something wrong. We should be aborting the "git merge"
> even before we even start mucking with the working tree and the
> index with strategies, no? I think it is the bug, if this change
> makes any difference, to be fixed---we shouldn't be proceeding to
> even create a stash with index changes to begin with.
I agree with you that generally if the index does not match HEAD, then
(A) we should abort the merge, and (B) the working tree and index need
to be left intact when the merge aborts.
But I don't think your conclusion follows from those two items,
because of the last sentence of this comment:
/*
* At this point, we need a real merge. No matter what strategy
* we use, it would operate on the index, possibly affecting the
* working tree, and when resolved cleanly, have the desired
* tree in the index -- this means that the index must be in
* sync with the head commit. The strategies are responsible
* to ensure this.
*/
Due to this requirement, if a user has staged changes before starting
the merge, builtin/merge.c will:
* stash the changes
* try all the merge strategies in turn, each of which report they
cannot function due to index not matching HEAD
* restore the changes via "git stash apply"
This sequence has the net effect of not quite cleanly aborting the
merge -- it also unstashes the user's changes.
One way to fix this problem is the simple patch I proposed. An
alternative fix would be to rip out the extra code from all the merge
strategies that enforces the index matches HEAD requirement, and then
adding enforcement of that condition early in builtin/merge.c. That
alternative fix probably would have saved us from a lot of the
headache detailed in commit 9822175d2b above, but it may also make
recursive and ort a bit slower (which had relied on unpack-trees to do
some of this checking, and thus they'd have some redundant checks).
^ permalink raw reply [relevance 3%]
* Re: [PATCH v2 3/6] merge: fix save_state() to work when there are racy-dirty files
2022-07-19 22:49 2% ` Junio C Hamano
@ 2022-07-21 1:09 2% ` Elijah Newren
0 siblings, 0 replies; 200+ results
From: Elijah Newren @ 2022-07-21 1:09 UTC (permalink / raw)
To: Junio C Hamano; +Cc: ZheNing Hu, Elijah Newren via GitGitGadget, Git List
On Tue, Jul 19, 2022 at 3:49 PM Junio C Hamano <gitster@pobox.com> wrote:
>
> ZheNing Hu <adlternative@gmail.com> writes:
>
> > Elijah Newren via GitGitGadget <gitgitgadget@gmail.com> 于2022年6月19日周日 14:50写道:
> >>
> >> From: Elijah Newren <newren@gmail.com>
> >>
> >> When there are racy-dirty files, but no files are modified,
> >> `git stash create` exits with unsuccessful status. This causes merge
> >> to fail. Refresh the index first to avoid this problem.
>
> Racily dirty? Or just being stat-dirty is sufficient to cause the
> "stash create" to fail?
>
> > I just want to show what sence will meet this errors:
> >
> > 1. touch file
> > 2. git add file
> > 3. git stash push (user may do it before git merge)
> > 4. touch file (update file but not update its content)
> > 5. git merge (call git stash create and return 1)
>
> I think, from the above reproduction recipe, that the breakage does
> not depend on racily-clean index entries (i.e. file touched within
> the same timestamp as the last write of the index without changing
> their size). So s/racy-dirty/stat-dirty/ (both on the title and the
> body) would be a sufficient fix.
Yep, stat-dirty. I'll fix up the title and body; thanks.
^ permalink raw reply [relevance 2%]
* What's cooking in git.git (Jul 2022, #06; Tue, 19)
@ 2022-07-20 1:20 3% Junio C Hamano
0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2022-07-20 1:20 UTC (permalink / raw)
To: git
Here are the topics that have been cooking in my tree. Commits
prefixed with '+' are in 'next' (being in 'next' is a sign that a
topic is stable enough to be used and are candidate to be in a
future release). Commits prefixed with '-' are only in 'seen',
and aren't considered "accepted" at all.
Copies of the source code to Git live in many repositories, and the
following is a list of the ones I push into or their mirrors. Some
repositories have only a subset of branches.
With maint, master, next, seen, todo:
git://git.kernel.org/pub/scm/git/git.git/
git://repo.or.cz/alt-git.git/
https://kernel.googlesource.com/pub/scm/git/git/
https://github.com/git/git/
https://gitlab.com/git-vcs/git/
With all the integration branches and topics broken out:
https://github.com/gitster/git/
Even though the preformatted documentation in HTML and man format
are not sources, they are published in these repositories for
convenience (replace "htmldocs" with "manpages" for the manual
pages):
git://git.kernel.org/pub/scm/git/git-htmldocs.git/
https://github.com/gitster/git-htmldocs.git/
Release tarballs are available at:
https://www.kernel.org/pub/software/scm/git/
--------------------------------------------------
[New Topics]
* ds/midx-with-less-memory (2022-07-19) 3 commits
- midx: reduce memory pressure while writing bitmaps
- midx: extract bitmap write setup
- pack-bitmap-write: use const for hashes
The codepath to write multi-pack index has been taught to release a
large chunk of memory that holds an array of objects in the packs,
as soon as it is done with the array, to reduce memory consumption.
Will merge to 'next'?
source: <pull.1292.v2.git.1658244366.gitgitgadget@gmail.com>
* ma/sparse-checkout-cone-doc-fix (2022-07-18) 1 commit
(merged to 'next' on 2022-07-19 at c259b61b0e)
+ config/core.txt: fix minor issues for `core.sparseCheckoutCone`
Docfix.
Will merge to 'master'.
source: <20220718100530.2068354-1-martin.agren@gmail.com>
* ma/t4200-update (2022-07-18) 1 commit
(merged to 'next' on 2022-07-19 at 710d0cafd9)
+ t4200: drop irrelevant code
Test fix.
Will merge to 'master'.
source: <20220718154322.2177166-1-martin.agren@gmail.com>
* mb/config-document-include (2022-07-17) 1 commit
(merged to 'next' on 2022-07-19 at 8267b80aa2)
+ config.txt: document include, includeIf
Add missing documentation for "include" and "includeIf" features in
"git config" file format, which incidentally teachs the command
line completion to include them in its offerings.
Will merge to 'master'.
source: <pull.1285.v2.git.1658002423864.gitgitgadget@gmail.com>
* sg/index-format-doc-update (2022-07-18) 1 commit
(merged to 'next' on 2022-07-19 at ccc384be5e)
+ index-format.txt: remove outdated list of supported extensions
Docfix.
Will merge to 'master'.
source: <20220718085640.7395-1-szeder.dev@gmail.com>
* tl/pack-bitmap-error-messages (2022-07-18) 6 commits
(merged to 'next' on 2022-07-19 at 3f9565653a)
+ pack-bitmap.c: continue looping when first MIDX bitmap is found
+ pack-bitmap.c: using error() instead of silently returning -1
+ pack-bitmap.c: do not ignore error when opening a bitmap file
+ pack-bitmap.c: rename "idx_name" to "bitmap_name"
+ pack-bitmap.c: mark more strings for translations
+ pack-bitmap.c: fix formatting of error messages
Tweak various messages that come from the pack-bitmap codepaths.
Will merge to 'master'.
source: <cover.1658159745.git.dyroneteng@gmail.com>
* tl/trace2-config-scope (2022-07-18) 1 commit
- tr2: dump names if config exist in multiple scopes
Tweak trace2 output about configuration variables.
Expecting a reroll.
cf. <20220719074053.37282-1-tenglong.tl@tenglongtldeMacBook-Pro.local>
source: <a01ae8478d3a8545241c5b064b6d369a330ee59f.1658159746.git.dyroneteng@gmail.com>
* vd/scalar-doc (2022-07-18) 2 commits
- scalar: convert README.md into a technical design doc
- scalar: reword command documentation to clarify purpose
Doc update.
Will merge to 'next'.
source: <pull.1275.v2.git.1657584367.gitgitgadget@gmail.com>
* cl/rerere-train-with-no-sign (2022-07-19) 1 commit
- contrib/rerere-train: avoid useless gpg sign in training
"rerere-train" script (in contrib/) used to honor commit.gpgSign
while recreating the throw-away merges.
Will merge to 'next'.
source: <PH7PR14MB5594A27B9295E95ACA4D6A69CE8F9@PH7PR14MB5594.namprd14.prod.outlook.com>
* ds/win-syslog-compiler-fix (2022-07-19) 1 commit
- compat/win32: correct for incorrect compiler warning
Workaround for a false positive compiler warning.
Will merge to 'next'.
source: <pull.1294.git.1658256354725.gitgitgadget@gmail.com>
* ld/osx-keychain-usage-fix (2022-07-19) 1 commit
- osx-keychain: fix compiler warning
Workaround for a compiler warning against use of die() in
osx-keychain (in contrib/).
Will merge to 'next'.
source: <pull.1293.git.1658251503775.gitgitgadget@gmail.com>
* ab/submodule-helper-leakfix (2022-07-19) 24 commits
- submodule--helper: fix a configure_added_submodule() leak
- submodule--helper: fix bad config API usage
- submodule--helper: free rest of "displaypath" in "struct update_data"
- submodule--helper: don't exit() on failure, return
- submodule--helper: add skeleton "goto cleanup" to update_submodule()
- submodule--helper: rename "int res" to "int ret"
- submodule--helper: free some "displaypath" in "struct update_data"
- submodule--helper: fix a memory leak in print_status()
- submodule--helper: fix a leak in module_add()
- submodule--helper: fix obscure leak in module_add()
- submodule--helper: fix "reference" leak is "module_clone_data"
- submodule--helper: fix a memory leak in get_default_remote_submodule()
- submodule--helper: fix a leak with repo_clear()
- submodule--helper: fix "sm_path" and other "module_cb_list" leaks
- submodule--helper: fix "errmsg_str" memory leak
- submodule--helper: refactor "errmsg_str" to be a "struct strbuf"
- submodule--helper: add and use *_release() functions
- submodule--helper: add "const" to copy of "update_data"
- submodule--helper: don't leak {run,capture}_command() cp.dir argument
- submodule--helper: "struct pathspec" memory leak in module_update()
- submodule--helper: fix most "struct pathspec" memory leaks
- submodule--helper: fix trivial get_default_remote_submodule() leak
- submodule--helper: fix a leak in "clone_submodule"
- submodule--helper: replace memset() with { 0 }-initialization
Plugging leaks in submodule--helper.
Needs review.
source: <cover-v2-00.24-00000000000-20220719T204458Z-avarab@gmail.com>
--------------------------------------------------
[Graduated to 'master']
* ab/build-gitweb (2022-06-28) 8 commits
(merged to 'next' on 2022-07-11 at 731e354ff0)
+ gitweb/Makefile: add a "NO_GITWEB" parameter
+ Makefile: build 'gitweb' in the default target
+ gitweb/Makefile: include in top-level Makefile
+ gitweb: remove "test" and "test-installed" targets
+ gitweb/Makefile: prepare to merge into top-level Makefile
+ gitweb/Makefile: clear up and de-duplicate the gitweb.{css,js} vars
+ gitweb/Makefile: add a $(GITWEB_ALL) variable
+ gitweb/Makefile: define all .PHONY prerequisites inline
Teach "make all" to build gitweb as well.
source: <cover-v3-0.8-00000000000-20220628T100936Z-avarab@gmail.com>
* ab/cocci-unused (2022-07-06) 6 commits
(merged to 'next' on 2022-07-11 at 7fa60d2a5b)
+ cocci: generalize "unused" rule to cover more than "strbuf"
+ cocci: add and apply a rule to find "unused" strbufs
+ cocci: have "coccicheck{,-pending}" depend on "coccicheck-test"
+ cocci: add a "coccicheck-test" target and test *.cocci rules
+ Makefile & .gitignore: ignore & clean "git.res", not "*.res"
+ Makefile: remove mandatory "spatch" arguments from SPATCH_FLAGS
Add Coccinelle rules to detect the pattern of initializing and then
finalizing a structure without using it in between at all, which
happens after code restructuring and the compilers fail to
recognize as an unused variable.
source: <cover-v4-0.6-00000000000-20220705T134033Z-avarab@gmail.com>
* ab/leakfix (2022-07-01) 11 commits
(merged to 'next' on 2022-07-11 at 0b107fffcf)
+ pull: fix a "struct oid_array" memory leak
+ cat-file: fix a common "struct object_context" memory leak
+ gc: fix a memory leak
+ checkout: avoid "struct unpack_trees_options" leak
+ merge-file: fix memory leaks on error path
+ merge-file: refactor for subsequent memory leak fix
+ cat-file: fix a memory leak in --batch-command mode
+ revert: free "struct replay_opts" members
+ submodule.c: free() memory from xgetcwd()
+ clone: fix memory leak in wanted_peer_refs()
+ check-ref-format: fix trivial memory leak
Plug various memory leaks.
source: <cover-v2-00.11-00000000000-20220701T104017Z-avarab@gmail.com>
* ab/test-tool-leakfix (2022-07-01) 9 commits
(merged to 'next' on 2022-07-11 at db7a724694)
+ test-tool delta: fix a memory leak
+ test-tool ref-store: fix a memory leak
+ test-tool bloom: fix memory leaks
+ test-tool json-writer: fix memory leaks
+ test-tool regex: call regfree(), fix memory leaks
+ test-tool urlmatch-normalization: fix a memory leak
+ test-tool {dump,scrap}-cache-tree: fix memory leaks
+ test-tool path-utils: fix a memory leak
+ test-tool test-hash: fix a memory leak
Plug various memory leaks in test-tool commands.
source: <cover-v2-0.9-00000000000-20220701T103503Z-avarab@gmail.com>
* ab/test-without-templates (2022-06-06) 7 commits
(merged to 'next' on 2022-07-11 at afab6c1918)
+ tests: don't assume a .git/info for .git/info/sparse-checkout
+ tests: don't assume a .git/info for .git/info/exclude
+ tests: don't assume a .git/info for .git/info/refs
+ tests: don't assume a .git/info for .git/info/attributes
+ tests: don't assume a .git/info for .git/info/grafts
+ tests: don't depend on template-created .git/branches
+ t0008: don't rely on default ".git/info/exclude"
Tweak tests so that they still work when the "git init" template
did not create .git/info directory.
source: <cover-v2-0.7-00000000000-20220603T110506Z-avarab@gmail.com>
* bc/nettle-sha256 (2022-07-10) 1 commit
(merged to 'next' on 2022-07-11 at cf9595d8ca)
+ sha256: add support for Nettle
Support for libnettle as SHA256 implementation has been added.
source: <20220710132907.1499365-1-sandals@crustytoothpaste.net>
* en/merge-dual-dir-renames-fix (2022-07-06) 5 commits
(merged to 'next' on 2022-07-11 at 5f8dadf87b)
+ merge-ort: fix issue with dual rename and add/add conflict
+ merge-ort: shuffle the computation and cleanup of potential collisions
+ merge-ort: make a separate function for freeing struct collisions
+ merge-ort: small cleanups of check_for_directory_rename
+ t6423: add tests of dual directory rename plus add/add conflict
Fixes a long-standing corner case bug around directory renames in
the merge-ort strategy.
source: <pull.1268.v4.git.1656984823.gitgitgadget@gmail.com>
* fr/vimdiff-layout-fix (2022-07-08) 1 commit
(merged to 'next' on 2022-07-09 at d8461bd236)
+ vimdiff: make layout engine more robust against user vim settings
Recent update to vimdiff layout code has been made more robust
against different end-user vim settings.
source: <20220708181024.45839-1-greenfoo@u92.eu>
* gc/submodule-use-super-prefix (2022-06-30) 8 commits
(merged to 'next' on 2022-07-11 at 0d9cf172f9)
+ submodule--helper: remove display path helper
+ submodule--helper update: use --super-prefix
+ submodule--helper: remove unused SUPPORT_SUPER_PREFIX flags
+ submodule--helper: use correct display path helper
+ submodule--helper: don't recreate recursive prefix
+ submodule--helper update: use display path helper
+ submodule--helper tests: add missing "display path" coverage
+ Merge branch 'ab/submodule-cleanup' into gc/submodule-use-super-prefix
Another step to rewrite more parts of "git submodule" in C.
source: <20220701021157.88858-1-chooglen@google.com>
* hx/lookup-commit-in-graph-fix (2022-07-12) 2 commits
(merged to 'next' on 2022-07-13 at 4489696814)
+ t5330: remove run_with_limited_processses()
(merged to 'next' on 2022-07-08 at cef32db0b6)
+ commit-graph.c: no lazy fetch in lookup_commit_in_graph()
A corner case bug where lazily fetching objects from a promisor
remote resulted in infinite recursion has been corrected.
source: <cover.1656593279.git.hanxin.hx@bytedance.com>
* jc/builtin-mv-move-array (2022-07-09) 1 commit
(merged to 'next' on 2022-07-09 at 0d3b3f62e5)
+ builtin/mv.c: use the MOVE_ARRAY() macro instead of memmove()
Apply Coccinelle rule to turn raw memmove() into MOVE_ARRAY() cpp
macro, which would improve maintainability and readability.
source: <xmqq4jzpu4xp.fsf_-_@gitster.g>
* jc/resolve-undo (2022-07-11) 2 commits
(merged to 'next' on 2022-07-13 at b9ef9482e8)
+ fsck: do not dereference NULL while checking resolve-undo data
(merged to 'next' on 2022-06-15 at c195e5a2d9)
+ revision: mark blobs needed for resolve-undo as reachable
The resolve-undo information in the index was not protected against
GC, which has been corrected.
source: <xmqq35f7kzad.fsf@gitster.g>
* jd/gpg-interface-trust-level-string (2022-07-10) 1 commit
(merged to 'next' on 2022-07-11 at 7b3cca73a8)
+ gpg-interface: add function for converting trust level to string
The code to convert between GPG trust level strings and internal
constants we use to represent them have been cleaned up.
source: <pull.1281.v4.git.1657515650587.gitgitgadget@gmail.com>
* jk/clone-unborn-confusion (2022-07-11) 4 commits
(merged to 'next' on 2022-07-13 at a7ae8cb4b5)
+ clone: move unborn head creation to update_head()
+ clone: use remote branch if it matches default HEAD
+ clone: propagate empty remote HEAD even with other branches
+ clone: drop extra newline from warning message
"git clone" from a repository with some ref whose HEAD is unborn
did not set the HEAD in the resulting repository correctly, which
has been corrected.
source: <YsdyLS4UFzj0j/wB@coredump.intra.peff.net>
* jk/diff-files-cleanup-fix (2022-07-12) 1 commit
(merged to 'next' on 2022-07-13 at 9db5235d01)
+ diff-files: move misplaced cleanup label
An earlier attempt to plug leaks placed a clean-up label to jump to
at a bogus place, which as been corrected.
source: <Ys0c0ePxPOqZ/5ck@coredump.intra.peff.net>
* jk/ref-filter-discard-commit-buffer (2022-07-11) 1 commit
(merged to 'next' on 2022-07-13 at d1521724db)
+ ref-filter: disable save_commit_buffer while traversing
Will merge to 'master'.
source: <Ysw4JtoHW1vWmqhz@coredump.intra.peff.net>
* ll/curl-accept-language (2022-07-11) 1 commit
(merged to 'next' on 2022-07-13 at 076aba7421)
+ remote-curl: send Accept-Language header to server
Earlier, HTTP transport clients learned to tell the server side
what locale they are in by sending Accept-Language HTTP header, but
this was done only for some requests but not others.
source: <pull.1251.v4.git.1657519134336.gitgitgadget@gmail.com>
* rs/cocci-array-copy (2022-07-10) 1 commit
(merged to 'next' on 2022-07-13 at f21dec0f71)
+ cocci: avoid normalization rules for memcpy
A coccinelle rule (in contrib/) to encourage use of COPY_ARRAY
macro has been improved.
source: <ded153d4-4aea-d4da-11cb-ec66d181e4c9@web.de>
* sg/multi-pack-index-parse-options-fix (2022-07-10) 1 commit
(merged to 'next' on 2022-07-11 at 1e14685680)
+ multi-pack-index: simplify handling of unknown --options
The way "git multi-pack" uses parse-options API has been improved.
source: <20220710151645.GA2038@szeder.dev>
--------------------------------------------------
[Stalled]
* bc/stash-export (2022-04-08) 4 commits
- builtin/stash: provide a way to import stashes from a ref
- builtin/stash: provide a way to export stashes to a ref
- builtin/stash: factor out revision parsing into a function
- object-name: make get_oid quietly return an error
A mechanism to export and import stash entries to and from a normal
commit to transfer it across repositories has been introduced.
Expecting a reroll.
cf. <YnL2d4Vr9Vr7W4Hj@camp.crustytoothpaste.net>
source: <20220407215352.3491567-1-sandals@crustytoothpaste.net>
* cw/remote-object-info (2022-05-06) 11 commits
- SQUASH??? coccicheck
- SQUASH??? ensure that coccicheck is happy
- SQUASH??? compilation fix
- cat-file: add --batch-command remote-object-info command
- cat-file: move parse_cmd and DEFAULT_FORMAT up
- transport: add object-info fallback to fetch
- transport: add client side capability to request object-info
- object-info: send attribute packet regardless of object ids
- object-store: add function to free object_info contents
- fetch-pack: move fetch default settings
- fetch-pack: refactor packet writing
A client component to talk with the object-info endpoint.
Expecting a reroll.
source: <20220502170904.2770649-1-calvinwan@google.com>
--------------------------------------------------
[Cooking]
* js/ci-github-workflow-markup (2022-07-14) 1 commit
(merged to 'next' on 2022-07-15 at 196166f671)
+ tests: fix incorrect --write-junit-xml code
A fix for a regression in test framework.
Will merge to 'master'.
source: <pull.1288.git.1657789234416.gitgitgadget@gmail.com>
* js/shortlog-sort-stably (2022-07-14) 1 commit
(merged to 'next' on 2022-07-15 at 75e4efe678)
+ shortlog: use a stable sort
"git shortlog -n" relied on the underlying qsort() to be stable,
which shouldn't have. Fixed.
Will merge to 'master'.
source: <pull.1290.git.1657813429221.gitgitgadget@gmail.com>
* mt/doc-config (2022-07-14) 3 commits
- doc: notes: unify configuration variables definitions
- doc: apply: unify configuration variables definitions
- doc: grep: unify configuration variables definitions
Unify description of configuration variables used by individual
commands in the documentation of the commands and the documentation
of the "git config".
Will discard (Retracted?).
cf. <CAHd-oW4zHA1YLX-5B1vYTA1f8PocziUCi0WxvSEkFUuf2GqKxg@mail.gmail.com>
source: <cover.1657819649.git.matheus.bernardino@usp.br>
* rs/mingw-tighten-mkstemp (2022-07-14) 1 commit
(merged to 'next' on 2022-07-15 at 4dd4a117ec)
+ mingw: avoid mktemp() in mkstemp() implementation
mkstemp() emulation on Windows has been improved.
Will merge to 'master'.
source: <7265e37f-fd29-3579-b840-19a1df52a59f@web.de>
* jt/fetch-pack-trace2-filter-spec (2022-07-18) 1 commit
- fetch-pack: write effective filter to trace2
"git fetch" client logs the partial clone filter used in the trace2
output.
Will merge to 'next'?
source: <20220718170027.3993042-1-jonathantanmy@google.com>
* mb/doc-rerere-autoupdate (2022-07-15) 1 commit
- cherry-pick doc: clarify no-rerere-autoupdate still allows rerere
Clarifies that the "--no-rerere-autoupdate" option does not disable
the "rerere" mechanism (nor does "--rerere-autoupdate" enable it).
Will merge to 'next'?
source: <20220715092527.1567837-1-mail@beyermatthias.de>
* rs/mergesort (2022-07-17) 10 commits
- mergesort: remove llist_mergesort()
- packfile: use DEFINE_LIST_SORT
- fetch-pack: use DEFINE_LIST_SORT
- commit: use DEFINE_LIST_SORT
- blame: use DEFINE_LIST_SORT
- test-mergesort: use DEFINE_LIST_SORT
- test-mergesort: use DEFINE_LIST_SORT_DEBUG
- mergesort: add macros for typed sort of linked lists
- mergesort: tighten merge loop
- mergesort: unify ranks loops
Make our mergesort implementation type-safe.
Will merge to 'next'?
source: <4d7cd286-398e-215c-f2bd-aa7e8207be4f@web.de>
* cw/submodule-merge-messages (2022-07-18) 1 commit
- submodule merge: update conflict error message
Update the message given when "git merge" sees conflicts at a path
with a submodule while merging a superproject.
Needs review.
source: <20220718214349.3379328-1-calvinwan@google.com>
* ds/doc-wo-whitelist (2022-07-19) 5 commits
- transport.c: avoid "whitelist"
- t: avoid "whitelist"
- git.txt: remove redundant language
- git-cvsserver: clarify directory list
- daemon: clarify directory arguments
Avoid "white/black-list" in documentation and code comments.
Will merge to 'next'.
source: <pull.1274.v3.git.1658255537.gitgitgadget@gmail.com>
* js/vimdiff-quotepath-fix (2022-07-14) 1 commit
(merged to 'next' on 2022-07-15 at 4273bbd4b4)
+ mergetool(vimdiff): allow paths to contain spaces again
Variable quoting fix in the vimdiff driver of "git mergetool"
Will merge to 'master'.
source: <pull.1287.v2.git.1657809063728.gitgitgadget@gmail.com>
* mt/checkout-count-fix (2022-07-14) 3 commits
- checkout: fix two bugs on the final count of updated entries
- checkout: show bug about failed entries being included in final report
- checkout: document bug where delayed checkout counts entries twice
"git checkout" miscounted the paths it updated, which has been
corrected.
Will merge to 'next'?
source: <cover.1657799213.git.matheus.bernardino@usp.br>
* tb/commit-graph-genv2-upgrade-fix (2022-07-15) 3 commits
- commit-graph: fix corrupt upgrade from generation v1 to v2
- commit-graph: introduce `repo_find_commit_pos_in_graph()`
- t5318: demonstrate commit-graph generation v2 corruption
There was a bug in the codepath to upgrade generation information
in commit-graph from v1 to v2 format, which has been corrected.
Will merge to 'next'?
source: <cover.1657667404.git.me@ttaylorr.com>
* js/safe-directory-plus (2022-07-13) 3 commits
- mingw: be more informative when ownership check fails on FAT32
- mingw: handle a file owned by the Administrators group correctly
- Allow debugging unsafe directories' ownership
Needs review.
source: <pull.1286.git.1657700238.gitgitgadget@gmail.com>
* po/doc-add-renormalize (2022-07-09) 1 commit
- doc add: renormalize is not idempotent for CRCRLF
Documentation for "git add --renormalize" has been improved.
Expecting a reroll.
cf. <dfe0c1ab-33f8-f13e-71ce-1829bb0d2d7f@iee.email>
source: <d3b8ed97a105ea1d7e656c964b7eee378e11ede6.1657385781.git.gitgitgadget@gmail.com>
* po/glossary-around-traversal (2022-07-09) 3 commits
- glossary: add reachability bitmap description
- glossary: add commit graph description
- glossary: add Object DataBase (ODB) abbreviation
The glossary entries for "commit-graph file" and "reachability
bitmap" have been added.
Expecting a reroll.
cf. <dfe0c1ab-33f8-f13e-71ce-1829bb0d2d7f@iee.email>
source: <pull.1282.git.1657385781.gitgitgadget@gmail.com>
* ac/bitmap-lookup-table (2022-07-06) 6 commits
- p5310-pack-bitmaps.sh: remove pack.writeReverseIndex
- bitmap-lookup-table: add performance tests for lookup table
- pack-bitmap: prepare to read lookup table extension
- pack-bitmap-write: learn pack.writeBitmapLookupTable and add tests
- pack-bitmap-write.c: write lookup table extension
- Documentation/technical: describe bitmap lookup table extension
The pack bitmap file gained a bitmap-lookup table to speed up
locating the necessary bitmap for a given commit.
Waiting for a more thorough review.
cf. <Ys4DjW9JjQFx5Bhb@nand.local>
source: <pull.1266.v3.git.1656924376.gitgitgadget@gmail.com>
* kk/p4-client-name-encoding-fix (2022-07-08) 1 commit
(merged to 'next' on 2022-07-11 at 9c18616f76)
+ git-p4: fix bug with encoding of p4 client name
"git p4" did not handle non-ASCII client name well, which has been
corrected.
On hold, waiting for a follow-up.
cf. <xmqqcze2s7h0.fsf@gitster.g>
source: <pull.1285.git.git.1657267260405.gitgitgadget@gmail.com>
* sa/cat-file-mailmap (2022-07-18) 4 commits
- cat-file: add mailmap support
- ident: rename commit_rewrite_person() to apply_mailmap_to_header()
- ident: move commit_rewrite_person() to ident.c
- revision: improve commit_rewrite_person()
"git cat-file" learned an option to use the mailmap when showing
commit and tag objects.
Will merge to 'next'?
source: <20220718195102.66321-1-siddharthasthana31@gmail.com>
* ds/rebase-update-ref (2022-07-19) 13 commits
- sequencer: notify user of --update-refs activity
- sequencer: ignore HEAD ref under --update-refs
- rebase: add rebase.updateRefs config option
- sequencer: rewrite update-refs as user edits todo list
- rebase: update refs from 'update-ref' commands
- rebase: add --update-refs option
- sequencer: add update-ref command
- sequencer: define array with enum values
- rebase-interactive: update 'merge' description
- branch: consider refs under 'update-refs'
- t2407: test branches currently using apply backend
- t2407: test bisect and rebase as black-boxes
- Merge branch 'ds/branch-checked-out' into ds/rebase-update-ref
"git rebase -i" learns to update branches whose tip appear in the
rebased range.
Will merge to 'next'?
source: <pull.1247.v5.git.1658255624.gitgitgadget@gmail.com>
* pw/xdiff-alloc (2022-07-08) 4 commits
- xdiff: introduce XDL_ALLOC_GROW()
- xdiff: introduce XDL_CALLOC_ARRAY()
- xdiff: introduce xdl_calloc
- xdiff: introduce XDL_ALLOC_ARRAY()
Add a level of redirection to array allocation API in xdiff part,
to make it easier to share with the libgit2 project.
Will merge to 'next'?
source: <pull.1272.v2.git.1657297519.gitgitgadget@gmail.com>
* ab/squelch-empty-fsync-traces (2022-07-18) 1 commit
(merged to 'next' on 2022-07-19 at f77cd40c29)
+ trace2: only include "fsync" events if we git_fsync()
Omit fsync-related trace2 entries when their values are all zero.
Will merge to 'master'.
source: <patch-v3-1.1-979dea5956a-20220718T102747Z-avarab@gmail.com>
* en/merge-restore-to-pristine (2022-06-21) 6 commits
- merge: do not exit restore_state() prematurely
- merge: ensure we can actually restore pre-merge state
- merge: make restore_state() restore staged state too
- merge: fix save_state() to work when there are racy-dirty files
- merge: remove unused variable
- t6424: make sure a failed merge preserves local changes
When "git merge" finds that it cannot perform a merge, it should
restore the working tree to the state before the command was
initiated, but in some corner cases it didn't.
Under review.
source: <pull.1231.v2.git.1655621424.gitgitgadget@gmail.com>
* tk/apply-case-insensitive (2022-06-21) 3 commits
- apply: support case-only renames in case-insensitive filesystems
- reset: new failing test for reset of case-insensitive duplicate in index
- t4141: test "git apply" with core.ignorecase
"git apply" barfed on a patch that makes a case-only rename on a
case-insensitive filesystem.
Needs review.
source: <pull.1257.v2.git.1655655027.gitgitgadget@gmail.com>
* zh/ls-files-format (2022-07-13) 1 commit
- ls-files: introduce "--format" option
"git ls-files" learns the "--format" option to tweak its output.
Will merge to 'next'?
source: <pull.1262.v7.git.1657692472994.gitgitgadget@gmail.com>
* js/commit-graph-parsing-without-repo-settings (2022-07-14) 1 commit
(merged to 'next' on 2022-07-19 at bcc29d823d)
+ commit-graph: pass repo_settings instead of repository
API tweak to make it easier to run fuzz testing on commit-graph parser.
Will merge to 'master'.
source: <fd70b6119153b165a62ee4f693dbe47031cfb2be.1657834657.git.steadmon@google.com>
* jt/connected-show-missing-from-which-side (2022-06-10) 1 commit
- fetch,fetch-pack: clarify connectivity check error
We may find an object missing after a "git fetch" stores the
objects it obtained from the other side, but it is not necessarily
because the remote failed to send necessary objects. Reword the
messages in an attempt to help users explore other possibilities
when they hit this error.
Expecting a reroll.
source: <20220610195247.1177549-1-jonathantanmy@google.com>
* tb/show-ref-count (2022-06-06) 2 commits
- builtin/show-ref.c: limit output with `--count`
- builtin/show-ref.c: rename `found_match` to `matches_nr`
"git show-ref" learned to stop after emitting N refs with the new
"--count=N" option.
Expecting a reroll.
cf. <xmqqczfl4ce1.fsf@gitster.g>
source: <cover.1654552560.git.me@ttaylorr.com>
* ds/bundle-uri-more (2022-06-06) 6 commits
- fetch: add 'refs/bundle/' to log.excludeDecoration
- bundle-uri: add support for http(s):// and file://
- fetch: add --bundle-uri option
- bundle-uri: create basic file-copy logic
- remote-curl: add 'get' capability
- docs: document bundle URI standard
The "bundle URI" topic.
Needs review.
source: <pull.1248.git.1654545325.gitgitgadget@gmail.com>
* js/bisect-in-c (2022-06-27) 16 commits
- bisect: no longer try to clean up left-over `.git/head-name` files
- bisect: remove Cogito-related code
- Turn `git bisect` into a full built-in
- bisect: move even the command-line parsing to `bisect--helper`
- bisect: teach the `bisect--helper` command to show the correct usage strings
- bisect--helper: return only correct exit codes in `cmd_*()`
- bisect--helper: move the `BISECT_STATE` case to the end
- bisect--helper: make `--bisect-state` optional
- bisect--helper: align the sub-command order with git-bisect.sh
- bisect--helper: using `--bisect-state` without an argument is a bug
- bisect--helper: really retire `--bisect-autostart`
- bisect--helper: really retire --bisect-next-check
- bisect--helper: retire the --no-log option
- bisect: avoid double-quoting when printing the failed command
- bisect run: fix the error message
- bisect: verify that a bogus option won't try to start a bisection
Final bits of "git bisect.sh" have been rewritten in C.
Expecting a (hopefully final) reroll.
cf. <20627.86ilolhnnn.gmgdl@evledraar.gmail.com>
source: <pull.1132.v4.git.1656354677.gitgitgadget@gmail.com>
* gc/bare-repo-discovery (2022-07-14) 5 commits
(merged to 'next' on 2022-07-15 at 5206577852)
+ setup.c: create `safe.bareRepository`
+ safe.directory: use git_protected_config()
+ config: learn `git_protected_config()`
+ Documentation: define protected configuration
+ Documentation/git-config.txt: add SCOPES section
Introduce a discovery.barerepository configuration variable that
allows users to forbid discovery of bare repositories.
Will merge to 'master'.
source: <pull.1261.v8.git.git.1657834081.gitgitgadget@gmail.com>
--------------------------------------------------
[Discarded]
* ar/send-email-confirm-by-default (2022-04-22) 1 commit
. send-email: always confirm by default
"git send-email" is changed so that by default it asks for
confirmation before sending each message out.
Discarded.
I wanted to like this, and had it in the version of Git I use
myself for daily work, but the prompting turned out to be somewhat
distracting.
source: <20220422083629.1404989-1-hi@alyssa.is>
^ permalink raw reply [relevance 3%]
* Re: [PATCH v2 3/6] merge: fix save_state() to work when there are racy-dirty files
2022-07-17 16:28 2% ` ZheNing Hu
@ 2022-07-19 22:49 2% ` Junio C Hamano
2022-07-21 1:09 2% ` Elijah Newren
0 siblings, 1 reply; 200+ results
From: Junio C Hamano @ 2022-07-19 22:49 UTC (permalink / raw)
To: ZheNing Hu; +Cc: Elijah Newren via GitGitGadget, Git List, Elijah Newren
ZheNing Hu <adlternative@gmail.com> writes:
> Elijah Newren via GitGitGadget <gitgitgadget@gmail.com> 于2022年6月19日周日 14:50写道:
>>
>> From: Elijah Newren <newren@gmail.com>
>>
>> When there are racy-dirty files, but no files are modified,
>> `git stash create` exits with unsuccessful status. This causes merge
>> to fail. Refresh the index first to avoid this problem.
Racily dirty? Or just being stat-dirty is sufficient to cause the
"stash create" to fail?
> I just want to show what sence will meet this errors:
>
> 1. touch file
> 2. git add file
> 3. git stash push (user may do it before git merge)
> 4. touch file (update file but not update its content)
> 5. git merge (call git stash create and return 1)
I think, from the above reproduction recipe, that the breakage does
not depend on racily-clean index entries (i.e. file touched within
the same timestamp as the last write of the index without changing
their size). So s/racy-dirty/stat-dirty/ (both on the title and the
body) would be a sufficient fix.
Thanks.
^ permalink raw reply [relevance 2%]
* Re: [PATCH v2 3/6] merge: fix save_state() to work when there are racy-dirty files
2022-06-19 6:50 2% ` [PATCH v2 3/6] merge: fix save_state() to work when there are racy-dirty files Elijah Newren via GitGitGadget
2022-07-17 16:28 2% ` ZheNing Hu
@ 2022-07-19 22:43 2% ` Junio C Hamano
1 sibling, 0 replies; 200+ results
From: Junio C Hamano @ 2022-07-19 22:43 UTC (permalink / raw)
To: Elijah Newren via GitGitGadget; +Cc: git, ZheNing Hu, Elijah Newren
"Elijah Newren via GitGitGadget" <gitgitgadget@gmail.com> writes:
> From: Elijah Newren <newren@gmail.com>
>
> When there are racy-dirty files, but no files are modified,
> `git stash create` exits with unsuccessful status. This causes merge
> to fail. Refresh the index first to avoid this problem.
>
> Signed-off-by: Elijah Newren <newren@gmail.com>
> ---
> builtin/merge.c | 8 ++++++++
> 1 file changed, 8 insertions(+)
>
> diff --git a/builtin/merge.c b/builtin/merge.c
> index 00de224a2da..8ce4336dd3f 100644
> --- a/builtin/merge.c
> +++ b/builtin/merge.c
> @@ -313,8 +313,16 @@ static int save_state(struct object_id *stash)
> int len;
> struct child_process cp = CHILD_PROCESS_INIT;
> struct strbuf buffer = STRBUF_INIT;
> + struct lock_file lock_file = LOCK_INIT;
> + int fd;
> int rc = -1;
>
> + fd = repo_hold_locked_index(the_repository, &lock_file, 0);
> + refresh_cache(REFRESH_QUIET);
> + if (0 <= fd)
> + repo_update_index_if_able(the_repository, &lock_file);
> + rollback_lock_file(&lock_file);
I might have added "else" but rolling back a lock file that was
already committed or rolled back is a safe no-op, so this is OK.
The pattern already appears elsewhere twice, anyway.
Is it sufficient to be opportunistic? IOW, if we fail to refresh
the index or write the refreshed result to disk, can we be silent
here and rely on "stash create" and things that follow to safely
fail as necessary, or should we also be detecting errors?
> strvec_pushl(&cp.args, "stash", "create", NULL);
> cp.out = -1;
> cp.git_cmd = 1;
^ permalink raw reply [relevance 2%]
* What's cooking in git.git (Jul 2022, #05; Sun, 17)
@ 2022-07-18 3:14 3% Junio C Hamano
0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2022-07-18 3:14 UTC (permalink / raw)
To: git
Here are the topics that have been cooking in my tree. Commits
prefixed with '+' are in 'next' (being in 'next' is a sign that a
topic is stable enough to be used and are candidate to be in a
future release). Commits prefixed with '-' are only in 'seen',
and aren't considered "accepted" at all.
Copies of the source code to Git live in many repositories, and the
following is a list of the ones I push into or their mirrors. Some
repositories have only a subset of branches.
With maint, master, next, seen, todo:
git://git.kernel.org/pub/scm/git/git.git/
git://repo.or.cz/alt-git.git/
https://kernel.googlesource.com/pub/scm/git/git/
https://github.com/git/git/
https://gitlab.com/git-vcs/git/
With all the integration branches and topics broken out:
https://github.com/gitster/git/
Even though the preformatted documentation in HTML and man format
are not sources, they are published in these repositories for
convenience (replace "htmldocs" with "manpages" for the manual
pages):
git://git.kernel.org/pub/scm/git/git-htmldocs.git/
https://github.com/gitster/git-htmldocs.git/
Release tarballs are available at:
https://www.kernel.org/pub/software/scm/git/
--------------------------------------------------
[Graduated to 'master']
* ab/submodule-cleanup (2022-06-28) 12 commits
(merged to 'next' on 2022-07-08 at 6f3886aa03)
+ git-sh-setup.sh: remove "say" function, change last users
+ git-submodule.sh: use "$quiet", not "$GIT_QUIET"
+ submodule--helper: eliminate internal "--update" option
+ submodule--helper: understand --checkout, --merge and --rebase synonyms
+ submodule--helper: report "submodule" as our name in some "-h" output
+ submodule--helper: rename "absorb-git-dirs" to "absorbgitdirs"
+ submodule update: remove "-v" option
+ submodule--helper: have --require-init imply --init
+ git-submodule.sh: remove unused top-level "--branch" argument
+ git-submodule.sh: make the "$cached" variable a boolean
+ git-submodule.sh: remove unused $prefix variable
+ git-submodule.sh: remove unused sanitize_submodule_env()
(this branch is used by gc/submodule-use-super-prefix.)
Further preparation to turn git-submodule.sh into a builtin.
source: <cover-v4-00.12-00000000000-20220628T095914Z-avarab@gmail.com>
* en/merge-tree (2022-06-22) 17 commits
(merged to 'next' on 2022-07-08 at a29b4896ab)
+ git-merge-tree.txt: add a section on potentional usage mistakes
+ merge-tree: add a --allow-unrelated-histories flag
+ merge-tree: allow `ls-files -u` style info to be NUL terminated
+ merge-ort: optionally produce machine-readable output
+ merge-ort: store more specific conflict information
+ merge-ort: make `path_messages` a strmap to a string_list
+ merge-ort: store messages in a list, not in a single strbuf
+ merge-tree: provide easy access to `ls-files -u` style info
+ merge-tree: provide a list of which files have conflicts
+ merge-ort: remove command-line-centric submodule message from merge-ort
+ merge-ort: provide a merge_get_conflicted_files() helper function
+ merge-tree: support including merge messages in output
+ merge-ort: split out a separate display_update_messages() function
+ merge-tree: implement real merges
+ merge-tree: add option parsing and initial shell for real merge function
+ merge-tree: move logic for existing merge into new function
+ merge-tree: rename merge_trees() to trivial_merge_trees()
"git merge-tree" learned a new mode where it takes two commits and
computes a tree that would result in the merge commit, if the
histories leading to these two commits were to be merged.
source: <pull.1122.v7.git.1655511660.gitgitgadget@gmail.com>
* gg/worktree-from-the-above (2022-06-21) 2 commits
(merged to 'next' on 2022-07-08 at fa0e71ba39)
+ dir: minor refactoring / clean-up
+ dir: traverse into repository
In a non-bare repository, the behavior of Git when the
core.worktree configuration variable points at a directory that has
a repository as its subdirectory, regressed in Git 2.27 days.
source: <20220616234433.225-1-gg.oss@outlook.com>
source: <20220616231956.154-1-gg.oss@outlook.com>
* hx/unpack-streaming (2022-06-13) 6 commits
(merged to 'next' on 2022-07-08 at 4eb375ec2f)
+ unpack-objects: use stream_loose_object() to unpack large objects
+ core doc: modernize core.bigFileThreshold documentation
+ object-file.c: add "stream_loose_object()" to handle large object
+ object-file.c: factor out deflate part of write_loose_object()
+ object-file.c: refactor write_loose_object() to several steps
+ unpack-objects: low memory footprint for get_data() in dry_run mode
Allow large objects read from a packstream to be streamed into a
loose object file straight, without having to keep it in-core as a
whole.
source: <cover.1654914555.git.chiyutianyi@gmail.com>
* sy/mv-out-of-cone (2022-07-01) 8 commits
(merged to 'next' on 2022-07-08 at 654970fdb7)
+ mv: add check_dir_in_index() and solve general dir check issue
+ mv: use flags mode for update_mode
+ mv: check if <destination> exists in index to handle overwriting
+ mv: check if out-of-cone file exists in index with SKIP_WORKTREE bit
+ mv: decouple if/else-if checks using goto
+ mv: update sparsity after moving from out-of-cone to in-cone
+ t1092: mv directory from out-of-cone to in-cone
+ t7002: add tests for moving out-of-cone file/directory
"git mv A B" in a sparsely populated working tree can be asked to
move a path between directories that are "in cone" (i.e. expected
to be materialized in the working tree) and "out of cone"
(i.e. expected to be hidden). The handling of such cases has been
improved.
source: <20220630023737.473690-1-shaoxuan.yuan02@gmail.com>
--------------------------------------------------
[New Topics]
* js/ci-github-workflow-markup (2022-07-14) 1 commit
(merged to 'next' on 2022-07-15 at 196166f671)
+ tests: fix incorrect --write-junit-xml code
A fix for a regression in test framework.
Will merge to 'master'.
source: <pull.1288.git.1657789234416.gitgitgadget@gmail.com>
* js/shortlog-sort-stably (2022-07-14) 1 commit
(merged to 'next' on 2022-07-15 at 75e4efe678)
+ shortlog: use a stable sort
"git shortlog -n" relied on the underlying qsort() to be stable,
which shouldn't have. Fixed.
Will merge to 'master'.
source: <pull.1290.git.1657813429221.gitgitgadget@gmail.com>
* mt/doc-config (2022-07-14) 3 commits
- doc: notes: unify configuration variables definitions
- doc: apply: unify configuration variables definitions
- doc: grep: unify configuration variables definitions
Unify description of configuration variables used by individual
commands in the documentation of the commands and the documentation
of the "git config".
Retracted?.
cf. <CAHd-oW4zHA1YLX-5B1vYTA1f8PocziUCi0WxvSEkFUuf2GqKxg@mail.gmail.com>
source: <cover.1657819649.git.matheus.bernardino@usp.br>
* rs/mingw-tighten-mkstemp (2022-07-14) 1 commit
(merged to 'next' on 2022-07-15 at 4dd4a117ec)
+ mingw: avoid mktemp() in mkstemp() implementation
mkstemp() emulation on Windows has been improved.
Will merge to 'master'.
source: <7265e37f-fd29-3579-b840-19a1df52a59f@web.de>
* jt/fetch-pack-trace2-filter-spec (2022-07-15) 1 commit
- fetch-pack: write effective filter to trace2
"git fetch" client logs the partial clone filter used in the trace2
output.
Will merge to 'next'?
source: <20220715172943.2681492-1-jonathantanmy@google.com>
* mb/doc-rerere-autoupdate (2022-07-15) 1 commit
- cherry-pick doc: clarify no-rerere-autoupdate still allows rerere
Clarifies that the "--no-rerere-autoupdate" option does not disable
the "rerere" mechanism (nor does "--rerere-autoupdate" enable it).
Will merge to 'next'?
source: <20220715092527.1567837-1-mail@beyermatthias.de>
* rs/mergesort (2022-07-17) 10 commits
- mergesort: remove llist_mergesort()
- packfile: use DEFINE_LIST_SORT
- fetch-pack: use DEFINE_LIST_SORT
- commit: use DEFINE_LIST_SORT
- blame: use DEFINE_LIST_SORT
- test-mergesort: use DEFINE_LIST_SORT
- test-mergesort: use DEFINE_LIST_SORT_DEBUG
- mergesort: add macros for typed sort of linked lists
- mergesort: tighten merge loop
- mergesort: unify ranks loops
source: <4d7cd286-398e-215c-f2bd-aa7e8207be4f@web.de>
--------------------------------------------------
[Stalled]
* ll/curl-accept-language (2022-07-11) 1 commit
(merged to 'next' on 2022-07-13 at 076aba7421)
+ remote-curl: send Accept-Language header to server
Earlier, HTTP transport clients learned to tell the server side
what locale they are in by sending Accept-Language HTTP header, but
this was done only for some requests but not others.
Will merge to 'master'.
source: <pull.1251.v4.git.1657519134336.gitgitgadget@gmail.com>
* bc/stash-export (2022-04-08) 4 commits
- builtin/stash: provide a way to import stashes from a ref
- builtin/stash: provide a way to export stashes to a ref
- builtin/stash: factor out revision parsing into a function
- object-name: make get_oid quietly return an error
A mechanism to export and import stash entries to and from a normal
commit to transfer it across repositories has been introduced.
Expecting a reroll.
cf. <YnL2d4Vr9Vr7W4Hj@camp.crustytoothpaste.net>
source: <20220407215352.3491567-1-sandals@crustytoothpaste.net>
* cw/remote-object-info (2022-05-06) 11 commits
- SQUASH??? coccicheck
- SQUASH??? ensure that coccicheck is happy
- SQUASH??? compilation fix
- cat-file: add --batch-command remote-object-info command
- cat-file: move parse_cmd and DEFAULT_FORMAT up
- transport: add object-info fallback to fetch
- transport: add client side capability to request object-info
- object-info: send attribute packet regardless of object ids
- object-store: add function to free object_info contents
- fetch-pack: move fetch default settings
- fetch-pack: refactor packet writing
A client component to talk with the object-info endpoint.
Expecting a reroll.
source: <20220502170904.2770649-1-calvinwan@google.com>
--------------------------------------------------
[Cooking]
* jk/diff-files-cleanup-fix (2022-07-12) 1 commit
(merged to 'next' on 2022-07-13 at 9db5235d01)
+ diff-files: move misplaced cleanup label
An earlier attempt to plug leaks placed a clean-up label to jump to
at a bogus place, which as been corrected.
Will merge to 'master'.
source: <Ys0c0ePxPOqZ/5ck@coredump.intra.peff.net>
* cw/submodule-merge-messages (2022-07-13) 1 commit
- submodule merge: update conflict error message
Update the message given when "git merge" sees conflicts at a path
with a submodule while merging a superproject.
Needs review.
source: <20220712231935.2979727-1-calvinwan@google.com>
* ds/doc-wo-whitelist (2022-07-14) 3 commits
- *: avoid "whitelist"
- t/*: avoid "whitelist"
- Documentation: remove use of whitelist
Avoid "white/black-list" in documentation and code comments.
Will merge to 'next'?
source: <pull.1274.v2.git.1657852722.gitgitgadget@gmail.com>
* js/vimdiff-quotepath-fix (2022-07-14) 1 commit
(merged to 'next' on 2022-07-15 at 4273bbd4b4)
+ mergetool(vimdiff): allow paths to contain spaces again
Variable quoting fix in the vimdiff driver of "git mergetool"
Will merge to 'master'.
source: <pull.1287.v2.git.1657809063728.gitgitgadget@gmail.com>
* mt/checkout-count-fix (2022-07-14) 3 commits
- checkout: fix two bugs on the final count of updated entries
- checkout: show bug about failed entries being included in final report
- checkout: document bug where delayed checkout counts entries twice
"git checkout" miscounted the paths it updated, which has been
corrected.
Will merge to 'next'?
source: <cover.1657799213.git.matheus.bernardino@usp.br>
* tb/commit-graph-genv2-upgrade-fix (2022-07-15) 3 commits
- commit-graph: fix corrupt upgrade from generation v1 to v2
- commit-graph: introduce `repo_find_commit_pos_in_graph()`
- t5318: demonstrate commit-graph generation v2 corruption
There was a bug in the codepath to upgrade generation information
in commit-graph from v1 to v2 format, which has been corrected.
Will merge to 'next'?
source: <cover.1657667404.git.me@ttaylorr.com>
* js/safe-directory-plus (2022-07-13) 3 commits
- mingw: be more informative when ownership check fails on FAT32
- mingw: handle a file owned by the Administrators group correctly
- Allow debugging unsafe directories' ownership
Needs review.
source: <pull.1286.git.1657700238.gitgitgadget@gmail.com>
* po/doc-add-renormalize (2022-07-09) 1 commit
- doc add: renormalize is not idempotent for CRCRLF
Documentation for "git add --renormalize" has been improved.
Expecting a reroll.
cf. <dfe0c1ab-33f8-f13e-71ce-1829bb0d2d7f@iee.email>
source: <d3b8ed97a105ea1d7e656c964b7eee378e11ede6.1657385781.git.gitgitgadget@gmail.com>
* po/glossary-around-traversal (2022-07-09) 3 commits
- glossary: add reachability bitmap description
- glossary: add commit graph description
- glossary: add Object DataBase (ODB) abbreviation
The glossary entries for "commit-graph file" and "reachability
bitmap" have been added.
Expecting a reroll.
cf. <dfe0c1ab-33f8-f13e-71ce-1829bb0d2d7f@iee.email>
source: <pull.1282.git.1657385781.gitgitgadget@gmail.com>
* rs/cocci-array-copy (2022-07-10) 1 commit
(merged to 'next' on 2022-07-13 at f21dec0f71)
+ cocci: avoid normalization rules for memcpy
A coccinelle rule (in contrib/) to encourage use of COPY_ARRAY
macro has been improved.
Will merge to 'master'.
source: <ded153d4-4aea-d4da-11cb-ec66d181e4c9@web.de>
* sg/multi-pack-index-parse-options-fix (2022-07-10) 1 commit
(merged to 'next' on 2022-07-11 at 1e14685680)
+ multi-pack-index: simplify handling of unknown --options
The way "git multi-pack" uses parse-options API has been improved.
Will merge to 'master'.
source: <20220710151645.GA2038@szeder.dev>
* jk/ref-filter-discard-commit-buffer (2022-07-11) 1 commit
(merged to 'next' on 2022-07-13 at d1521724db)
+ ref-filter: disable save_commit_buffer while traversing
Will merge to 'master'.
source: <Ysw4JtoHW1vWmqhz@coredump.intra.peff.net>
* ab/cocci-unused (2022-07-06) 6 commits
(merged to 'next' on 2022-07-11 at 7fa60d2a5b)
+ cocci: generalize "unused" rule to cover more than "strbuf"
+ cocci: add and apply a rule to find "unused" strbufs
+ cocci: have "coccicheck{,-pending}" depend on "coccicheck-test"
+ cocci: add a "coccicheck-test" target and test *.cocci rules
+ Makefile & .gitignore: ignore & clean "git.res", not "*.res"
+ Makefile: remove mandatory "spatch" arguments from SPATCH_FLAGS
Add Coccinelle rules to detect the pattern of initializing and then
finalizing a structure without using it in between at all, which
happens after code restructuring and the compilers fail to
recognize as an unused varilable.
Will merge to 'master'.
source: <cover-v4-0.6-00000000000-20220705T134033Z-avarab@gmail.com>
* jk/clone-unborn-confusion (2022-07-11) 4 commits
(merged to 'next' on 2022-07-13 at a7ae8cb4b5)
+ clone: move unborn head creation to update_head()
+ clone: use remote branch if it matches default HEAD
+ clone: propagate empty remote HEAD even with other branches
+ clone: drop extra newline from warning message
"git clone" from a repository with some ref whose HEAD is unborn
did not set the HEAD in the resulting repository correctly, which
has been corrected.
Will merge to 'master'.
source: <YsdyLS4UFzj0j/wB@coredump.intra.peff.net>
* ac/bitmap-lookup-table (2022-07-06) 6 commits
- p5310-pack-bitmaps.sh: remove pack.writeReverseIndex
- bitmap-lookup-table: add performance tests for lookup table
- pack-bitmap: prepare to read lookup table extension
- pack-bitmap-write: learn pack.writeBitmapLookupTable and add tests
- pack-bitmap-write.c: write lookup table extension
- Documentation/technical: describe bitmap lookup table extension
The pack bitmap file gained a bitmap-lookup table to speed up
locating the necessary bitmap for a given commit.
Waiting for a more thorough review.
cf. <Ys4DjW9JjQFx5Bhb@nand.local>
source: <pull.1266.v3.git.1656924376.gitgitgadget@gmail.com>
* bc/nettle-sha256 (2022-07-10) 1 commit
(merged to 'next' on 2022-07-11 at cf9595d8ca)
+ sha256: add support for Nettle
Support for libnettle as SHA256 implementation has been added.
Will merge to 'master'.
source: <20220710132907.1499365-1-sandals@crustytoothpaste.net>
* jc/builtin-mv-move-array (2022-07-09) 1 commit
(merged to 'next' on 2022-07-09 at 0d3b3f62e5)
+ builtin/mv.c: use the MOVE_ARRAY() macro instead of memmove()
Apply Coccinelle rule to turn raw memmove() into MOVE_ARRAY() cpp
macro, which would improve maintainability and readability.
Will merge to 'master'.
source: <xmqq4jzpu4xp.fsf_-_@gitster.g>
* jd/gpg-interface-trust-level-string (2022-07-10) 1 commit
(merged to 'next' on 2022-07-11 at 7b3cca73a8)
+ gpg-interface: add function for converting trust level to string
The code to convert between GPG trust level strings and internal
constants we use to represent them have been cleaned up.
Will merge to 'master'.
source: <pull.1281.v4.git.1657515650587.gitgitgadget@gmail.com>
* kk/p4-client-name-encoding-fix (2022-07-08) 1 commit
(merged to 'next' on 2022-07-11 at 9c18616f76)
+ git-p4: fix bug with encoding of p4 client name
"git p4" did not handle non-ASCII client name well, which has been
corrected.
Will merge to 'master'.
source: <pull.1285.git.git.1657267260405.gitgitgadget@gmail.com>
* sa/cat-file-mailmap (2022-07-17) 4 commits
- cat-file: add mailmap support
- ident: rename commit_rewrite_person() to apply_mailmap_to_header()
- ident: move commit_rewrite_person() to ident.c
- revision: improve commit_rewrite_person()
"git cat-file" learned an option to use the mailmap when showing
commit and tag objects.
Expecting a reroll; I think this is almost there.
cf. <xmqqo7xnv17x.fsf@gitster.g>
source: <20220716074055.1786231-1-siddharthasthana31@gmail.com>
* fr/vimdiff-layout-fix (2022-07-08) 1 commit
(merged to 'next' on 2022-07-09 at d8461bd236)
+ vimdiff: make layout engine more robust against user vim settings
Recent update to vimdiff layout code has been made more robust
against different end-user vim settings.
Will merge to 'master'.
source: <20220708181024.45839-1-greenfoo@u92.eu>
* ds/rebase-update-ref (2022-07-12) 13 commits
- sequencer: notify user of --update-refs activity
- sequencer: ignore HEAD ref under --update-refs
- rebase: add rebase.updateRefs config option
- sequencer: rewrite update-refs as user edits todo list
- rebase: update refs from 'update-ref' commands
- rebase: add --update-refs option
- sequencer: add update-ref command
- sequencer: define array with enum values
- rebase-interactive: update 'merge' description
- branch: consider refs under 'update-refs'
- t2407: test branches currently using apply backend
- t2407: test bisect and rebase as black-boxes
- Merge branch 'ds/branch-checked-out' into ds/rebase-update-ref
"git rebase -i" learns to update branches whose tip appear in the
rebased range.
Will merge to 'next'?
source: <pull.1247.v4.git.1657631225.gitgitgadget@gmail.com>
* ab/leakfix (2022-07-01) 11 commits
(merged to 'next' on 2022-07-11 at 0b107fffcf)
+ pull: fix a "struct oid_array" memory leak
+ cat-file: fix a common "struct object_context" memory leak
+ gc: fix a memory leak
+ checkout: avoid "struct unpack_trees_options" leak
+ merge-file: fix memory leaks on error path
+ merge-file: refactor for subsequent memory leak fix
+ cat-file: fix a memory leak in --batch-command mode
+ revert: free "struct replay_opts" members
+ submodule.c: free() memory from xgetcwd()
+ clone: fix memory leak in wanted_peer_refs()
+ check-ref-format: fix trivial memory leak
Plug various memory leaks.
Will merge to 'master'.
source: <cover-v2-00.11-00000000000-20220701T104017Z-avarab@gmail.com>
* ab/test-tool-leakfix (2022-07-01) 9 commits
(merged to 'next' on 2022-07-11 at db7a724694)
+ test-tool delta: fix a memory leak
+ test-tool ref-store: fix a memory leak
+ test-tool bloom: fix memory leaks
+ test-tool json-writer: fix memory leaks
+ test-tool regex: call regfree(), fix memory leaks
+ test-tool urlmatch-normalization: fix a memory leak
+ test-tool {dump,scrap}-cache-tree: fix memory leaks
+ test-tool path-utils: fix a memory leak
+ test-tool test-hash: fix a memory leak
Plug various memory leaks in test-tool commands.
Will merge to 'master'.
source: <cover-v2-0.9-00000000000-20220701T103503Z-avarab@gmail.com>
* gc/submodule-use-super-prefix (2022-06-30) 8 commits
(merged to 'next' on 2022-07-11 at 0d9cf172f9)
+ submodule--helper: remove display path helper
+ submodule--helper update: use --super-prefix
+ submodule--helper: remove unused SUPPORT_SUPER_PREFIX flags
+ submodule--helper: use correct display path helper
+ submodule--helper: don't recreate recursive prefix
+ submodule--helper update: use display path helper
+ submodule--helper tests: add missing "display path" coverage
+ Merge branch 'ab/submodule-cleanup' into gc/submodule-use-super-prefix
Another step to rewrite more parts of "git submodule" in C.
Will merge to 'master'.
source: <20220701021157.88858-1-chooglen@google.com>
* hx/lookup-commit-in-graph-fix (2022-07-12) 2 commits
(merged to 'next' on 2022-07-13 at 4489696814)
+ t5330: remove run_with_limited_processses()
(merged to 'next' on 2022-07-08 at cef32db0b6)
+ commit-graph.c: no lazy fetch in lookup_commit_in_graph()
A corner case bug where lazily fetching objects from a promisor
remote resulted in infinite recursion has been corrected.
Will merge to 'master'.
source: <cover.1656593279.git.hanxin.hx@bytedance.com>
* pw/xdiff-alloc (2022-07-08) 4 commits
- xdiff: introduce XDL_ALLOC_GROW()
- xdiff: introduce XDL_CALLOC_ARRAY()
- xdiff: introduce xdl_calloc
- xdiff: introduce XDL_ALLOC_ARRAY()
Add a level of redirection to array allocation API in xdiff part,
to make it easier to share with the libgit2 project.
Will merge to 'next'?
source: <pull.1272.v2.git.1657297519.gitgitgadget@gmail.com>
* ab/squelch-empty-fsync-traces (2022-06-30) 1 commit
. trace2: don't include "fsync" events in all trace2 logs
Omit fsync-related trace2 entries when their values are all zero.
Breaks tests in hx/unpack-streaming with an interesting interaction.
source: <patch-v2-1.1-a1fc37de947-20220630T084607Z-avarab@gmail.com>
* en/merge-restore-to-pristine (2022-06-21) 6 commits
- merge: do not exit restore_state() prematurely
- merge: ensure we can actually restore pre-merge state
- merge: make restore_state() restore staged state too
- merge: fix save_state() to work when there are racy-dirty files
- merge: remove unused variable
- t6424: make sure a failed merge preserves local changes
When "git merge" finds that it cannot perform a merge, it should
restore the working tree to the state before the command was
initiated, but in some corner cases it didn't.
Needs review.
source: <pull.1231.v2.git.1655621424.gitgitgadget@gmail.com>
* tk/apply-case-insensitive (2022-06-21) 3 commits
- apply: support case-only renames in case-insensitive filesystems
- reset: new failing test for reset of case-insensitive duplicate in index
- t4141: test "git apply" with core.ignorecase
"git apply" barfed on a patch that makes a case-only rename on a
case-insensitive filesystem.
Needs review.
source: <pull.1257.v2.git.1655655027.gitgitgadget@gmail.com>
* zh/ls-files-format (2022-07-13) 1 commit
- ls-files: introduce "--format" option
"git ls-files" learns the "--format" option to tweak its output.
Will merge to 'next'?
source: <pull.1262.v7.git.1657692472994.gitgitgadget@gmail.com>
* en/merge-dual-dir-renames-fix (2022-07-06) 5 commits
(merged to 'next' on 2022-07-11 at 5f8dadf87b)
+ merge-ort: fix issue with dual rename and add/add conflict
+ merge-ort: shuffle the computation and cleanup of potential collisions
+ merge-ort: make a separate function for freeing struct collisions
+ merge-ort: small cleanups of check_for_directory_rename
+ t6423: add tests of dual directory rename plus add/add conflict
Fixes a long-standing corner case bug around directory renames in
the merge-ort strategy.
Will merge to 'master'.
source: <pull.1268.v4.git.1656984823.gitgitgadget@gmail.com>
* js/commit-graph-parsing-without-repo-settings (2022-07-14) 1 commit
- commit-graph: pass repo_settings instead of repository
API tweak to make it easier to run fuzz testing on commit-graph parser.
Will merge to 'next'.
source: <fd70b6119153b165a62ee4f693dbe47031cfb2be.1657834657.git.steadmon@google.com>
* jt/connected-show-missing-from-which-side (2022-06-10) 1 commit
- fetch,fetch-pack: clarify connectivity check error
We may find an object missing after a "git fetch" stores the
objects it obtained from the other side, but it is not necessarily
because the remote failed to send necessary objects. Reword the
messages in an attempt to help users explore other possibilities
when they hit this error.
Expecting a reroll.
source: <20220610195247.1177549-1-jonathantanmy@google.com>
* jc/resolve-undo (2022-07-11) 2 commits
(merged to 'next' on 2022-07-13 at b9ef9482e8)
+ fsck: do not dereference NULL while checking resolve-undo data
(merged to 'next' on 2022-06-15 at c195e5a2d9)
+ revision: mark blobs needed for resolve-undo as reachable
The resolve-undo information in the index was not protected against
GC, which has been corrected.
Will merge to 'master'.
source: <xmqq35f7kzad.fsf@gitster.g>
* ab/build-gitweb (2022-06-28) 8 commits
(merged to 'next' on 2022-07-11 at 731e354ff0)
+ gitweb/Makefile: add a "NO_GITWEB" parameter
+ Makefile: build 'gitweb' in the default target
+ gitweb/Makefile: include in top-level Makefile
+ gitweb: remove "test" and "test-installed" targets
+ gitweb/Makefile: prepare to merge into top-level Makefile
+ gitweb/Makefile: clear up and de-duplicate the gitweb.{css,js} vars
+ gitweb/Makefile: add a $(GITWEB_ALL) variable
+ gitweb/Makefile: define all .PHONY prerequisites inline
Teach "make all" to build gitweb as well.
Will merge to 'master'.
source: <cover-v3-0.8-00000000000-20220628T100936Z-avarab@gmail.com>
* ab/test-without-templates (2022-06-06) 7 commits
(merged to 'next' on 2022-07-11 at afab6c1918)
+ tests: don't assume a .git/info for .git/info/sparse-checkout
+ tests: don't assume a .git/info for .git/info/exclude
+ tests: don't assume a .git/info for .git/info/refs
+ tests: don't assume a .git/info for .git/info/attributes
+ tests: don't assume a .git/info for .git/info/grafts
+ tests: don't depend on template-created .git/branches
+ t0008: don't rely on default ".git/info/exclude"
Tweak tests so that they still work when the "git init" template
did not create .git/info directory.
Will merge to 'master'.
source: <cover-v2-0.7-00000000000-20220603T110506Z-avarab@gmail.com>
* tb/show-ref-count (2022-06-06) 2 commits
- builtin/show-ref.c: limit output with `--count`
- builtin/show-ref.c: rename `found_match` to `matches_nr`
"git show-ref" learned to stop after emitting N refs with the new
"--count=N" option.
Expecting a reroll.
cf. <xmqqczfl4ce1.fsf@gitster.g>
source: <cover.1654552560.git.me@ttaylorr.com>
* ds/bundle-uri-more (2022-06-06) 6 commits
- fetch: add 'refs/bundle/' to log.excludeDecoration
- bundle-uri: add support for http(s):// and file://
- fetch: add --bundle-uri option
- bundle-uri: create basic file-copy logic
- remote-curl: add 'get' capability
- docs: document bundle URI standard
The "bundle URI" topic.
Needs review.
source: <pull.1248.git.1654545325.gitgitgadget@gmail.com>
* js/bisect-in-c (2022-06-27) 16 commits
- bisect: no longer try to clean up left-over `.git/head-name` files
- bisect: remove Cogito-related code
- Turn `git bisect` into a full built-in
- bisect: move even the command-line parsing to `bisect--helper`
- bisect: teach the `bisect--helper` command to show the correct usage strings
- bisect--helper: return only correct exit codes in `cmd_*()`
- bisect--helper: move the `BISECT_STATE` case to the end
- bisect--helper: make `--bisect-state` optional
- bisect--helper: align the sub-command order with git-bisect.sh
- bisect--helper: using `--bisect-state` without an argument is a bug
- bisect--helper: really retire `--bisect-autostart`
- bisect--helper: really retire --bisect-next-check
- bisect--helper: retire the --no-log option
- bisect: avoid double-quoting when printing the failed command
- bisect run: fix the error message
- bisect: verify that a bogus option won't try to start a bisection
Final bits of "git bisect.sh" have been rewritten in C.
Expecting a (hopefully final) reroll.
cf. <20627.86ilolhnnn.gmgdl@evledraar.gmail.com>
source: <pull.1132.v4.git.1656354677.gitgitgadget@gmail.com>
* gc/bare-repo-discovery (2022-07-14) 5 commits
(merged to 'next' on 2022-07-15 at 5206577852)
+ setup.c: create `safe.bareRepository`
+ safe.directory: use git_protected_config()
+ config: learn `git_protected_config()`
+ Documentation: define protected configuration
+ Documentation/git-config.txt: add SCOPES section
Introduce a discovery.barerepository configuration variable that
allows users to forbid discovery of bare repositories.
Will merge to 'master'.
source: <pull.1261.v8.git.git.1657834081.gitgitgadget@gmail.com>
--------------------------------------------------
[Discarded]
* ar/send-email-confirm-by-default (2022-04-22) 1 commit
. send-email: always confirm by default
"git send-email" is changed so that by default it asks for
confirmation before sending each message out.
Discarded.
I wanted to like this, and had it in the version of Git I use
myself for daily work, but the prompting turned out to be somewhat
distracting.
source: <20220422083629.1404989-1-hi@alyssa.is>
^ permalink raw reply [relevance 3%]
* Re: en/merge-restore-to-pristine (Was: Re: What's cooking in git.git (Jul 2022, #04; Wed, 13))
2022-07-17 3:46 0% ` en/merge-restore-to-pristine (Was: Re: What's cooking in git.git (Jul 2022, #04; Wed, 13)) Elijah Newren
@ 2022-07-17 16:58 0% ` ZheNing Hu
0 siblings, 0 replies; 200+ results
From: ZheNing Hu @ 2022-07-17 16:58 UTC (permalink / raw)
To: Elijah Newren; +Cc: Git Mailing List, Junio C Hamano
Elijah Newren <newren@gmail.com> 于2022年7月17日周日 11:46写道:
>
> Hi ZheNing,
>
> On Wed, Jul 13, 2022 at 7:36 PM Junio C Hamano <gitster@pobox.com> wrote:
> >
> > * en/merge-restore-to-pristine (2022-06-21) 6 commits
> > - merge: do not exit restore_state() prematurely
> > - merge: ensure we can actually restore pre-merge state
> > - merge: make restore_state() restore staged state too
> > - merge: fix save_state() to work when there are racy-dirty files
> > - merge: remove unused variable
> > - t6424: make sure a failed merge preserves local changes
> >
> > When "git merge" finds that it cannot perform a merge, it should
> > restore the working tree to the state before the command was
> > initiated, but in some corner cases it didn't.
> >
> > Needs review.
> > source: <pull.1231.v2.git.1655621424.gitgitgadget@gmail.com>
>
> Looks like other reviewers aren't stepping forward (this has been in
> "Needs review" for the last 6 "What's cooking" reports), which may
> suggest others aren't as interested in this fix. Since this was for
> an issue you reported, and which you even volunteered to help
> shepherd[1], perhaps you could step forward as a reviewer even if
> you're not that familiar with the code? Some things to look at and
> report on:
>
Sorry that I missed patch update before. And this is my first time
as a reviewer. I may leak some experience :)
> * Does it fix the issue? (You reported that v1 did, again at [1],
> but perhaps you could retest for v2?)
Yes, I have checked the test, it is good enough to solve my problem.
> * Does it appear I've addressed the issues Junio brought up about v1?
Yes, Junio said restore_state() will not be called correctly because
we are using
only one merge strategy, which has been solved by the patch: "merge:
ensure we can
actually restore pre-merge state".
> * Even if you can't analyze the changes deeply, you can respond to
> my patches with a "walk through" where you try to explain what the
> different hunks of the patches are doing in your own words. Even
> folks unfamiliar with code areas can sometimes catch simple mistakes
> that way, and even if you catch nothing, it means there's another
> person more familiar with that code area.
>
I have checked(walk through) them carefully. Look at them :)
> I've had a little more time lately, so if you or someone does catch
> something in the review, I can try to update the series.
>
> [1] https://lore.kernel.org/git/CAOLTT8RpGGioOyaMw5tkeWXmHpOaBW9UH8JghUvBRQ50ZcDdYQ@mail.gmail.com/
Thanks
ZheNing Hu
^ permalink raw reply [relevance 0%]
* Re: [PATCH v2 3/6] merge: fix save_state() to work when there are racy-dirty files
2022-06-19 6:50 2% ` [PATCH v2 3/6] merge: fix save_state() to work when there are racy-dirty files Elijah Newren via GitGitGadget
@ 2022-07-17 16:28 2% ` ZheNing Hu
2022-07-19 22:49 2% ` Junio C Hamano
2022-07-19 22:43 2% ` Junio C Hamano
1 sibling, 1 reply; 200+ results
From: ZheNing Hu @ 2022-07-17 16:28 UTC (permalink / raw)
To: Elijah Newren via GitGitGadget; +Cc: Git List, Elijah Newren
Elijah Newren via GitGitGadget <gitgitgadget@gmail.com> 于2022年6月19日周日 14:50写道:
>
> From: Elijah Newren <newren@gmail.com>
>
> When there are racy-dirty files, but no files are modified,
> `git stash create` exits with unsuccessful status. This causes merge
> to fail. Refresh the index first to avoid this problem.
>
> Signed-off-by: Elijah Newren <newren@gmail.com>
> ---
> builtin/merge.c | 8 ++++++++
> 1 file changed, 8 insertions(+)
>
> diff --git a/builtin/merge.c b/builtin/merge.c
> index 00de224a2da..8ce4336dd3f 100644
> --- a/builtin/merge.c
> +++ b/builtin/merge.c
> @@ -313,8 +313,16 @@ static int save_state(struct object_id *stash)
> int len;
> struct child_process cp = CHILD_PROCESS_INIT;
> struct strbuf buffer = STRBUF_INIT;
> + struct lock_file lock_file = LOCK_INIT;
> + int fd;
> int rc = -1;
>
> + fd = repo_hold_locked_index(the_repository, &lock_file, 0);
> + refresh_cache(REFRESH_QUIET);
> + if (0 <= fd)
> + repo_update_index_if_able(the_repository, &lock_file);
> + rollback_lock_file(&lock_file);
> +
> strvec_pushl(&cp.args, "stash", "create", NULL);
> cp.out = -1;
> cp.git_cmd = 1;
> --
> gitgitgadget
>
I just want to show what sence will meet this errors:
1. touch file
2. git add file
3. git stash push (user may do it before git merge)
4. touch file (update file but not update its content)
5. git merge (call git stash create and return 1)
So I have knew about what's the meaning of this patch:
If user do the git stash manually and update file timestamp
before git merge, it may make next git stash failed. And
refresh index can make index entry sync with the work tree
file status.
Thanks.
ZheNing Hu
^ permalink raw reply [relevance 2%]
* en/merge-restore-to-pristine (Was: Re: What's cooking in git.git (Jul 2022, #04; Wed, 13))
2022-07-14 1:32 3% What's cooking in git.git (Jul 2022, #04; Wed, 13) Junio C Hamano
@ 2022-07-17 3:46 0% ` Elijah Newren
2022-07-17 16:58 0% ` ZheNing Hu
0 siblings, 1 reply; 200+ results
From: Elijah Newren @ 2022-07-17 3:46 UTC (permalink / raw)
To: ZheNing Hu; +Cc: Git Mailing List, Junio C Hamano
Hi ZheNing,
On Wed, Jul 13, 2022 at 7:36 PM Junio C Hamano <gitster@pobox.com> wrote:
>
> * en/merge-restore-to-pristine (2022-06-21) 6 commits
> - merge: do not exit restore_state() prematurely
> - merge: ensure we can actually restore pre-merge state
> - merge: make restore_state() restore staged state too
> - merge: fix save_state() to work when there are racy-dirty files
> - merge: remove unused variable
> - t6424: make sure a failed merge preserves local changes
>
> When "git merge" finds that it cannot perform a merge, it should
> restore the working tree to the state before the command was
> initiated, but in some corner cases it didn't.
>
> Needs review.
> source: <pull.1231.v2.git.1655621424.gitgitgadget@gmail.com>
Looks like other reviewers aren't stepping forward (this has been in
"Needs review" for the last 6 "What's cooking" reports), which may
suggest others aren't as interested in this fix. Since this was for
an issue you reported, and which you even volunteered to help
shepherd[1], perhaps you could step forward as a reviewer even if
you're not that familiar with the code? Some things to look at and
report on:
* Does it fix the issue? (You reported that v1 did, again at [1],
but perhaps you could retest for v2?)
* Does it appear I've addressed the issues Junio brought up about v1?
* Even if you can't analyze the changes deeply, you can respond to
my patches with a "walk through" where you try to explain what the
different hunks of the patches are doing in your own words. Even
folks unfamiliar with code areas can sometimes catch simple mistakes
that way, and even if you catch nothing, it means there's another
person more familiar with that code area.
I've had a little more time lately, so if you or someone does catch
something in the review, I can try to update the series.
[1] https://lore.kernel.org/git/CAOLTT8RpGGioOyaMw5tkeWXmHpOaBW9UH8JghUvBRQ50ZcDdYQ@mail.gmail.com/
^ permalink raw reply [relevance 0%]
* What's cooking in git.git (Jul 2022, #04; Wed, 13)
@ 2022-07-14 1:32 3% Junio C Hamano
2022-07-17 3:46 0% ` en/merge-restore-to-pristine (Was: Re: What's cooking in git.git (Jul 2022, #04; Wed, 13)) Elijah Newren
0 siblings, 1 reply; 200+ results
From: Junio C Hamano @ 2022-07-14 1:32 UTC (permalink / raw)
To: git
Here are the topics that have been cooking in my tree. Commits
prefixed with '+' are in 'next' (being in 'next' is a sign that a
topic is stable enough to be used and are candidate to be in a
future release). Commits prefixed with '-' are only in 'seen',
and aren't considered "accepted" at all.
Copies of the source code to Git live in many repositories, and the
following is a list of the ones I push into or their mirrors. Some
repositories have only a subset of branches.
With maint, master, next, seen, todo:
git://git.kernel.org/pub/scm/git/git.git/
git://repo.or.cz/alt-git.git/
https://kernel.googlesource.com/pub/scm/git/git/
https://github.com/git/git/
https://gitlab.com/git-vcs/git/
With all the integration branches and topics broken out:
https://github.com/gitster/git/
Even though the preformatted documentation in HTML and man format
are not sources, they are published in these repositories for
convenience (replace "htmldocs" with "manpages" for the manual
pages):
git://git.kernel.org/pub/scm/git/git-htmldocs.git/
https://github.com/gitster/git-htmldocs.git/
Release tarballs are available at:
https://www.kernel.org/pub/software/scm/git/
--------------------------------------------------
[Graduated to 'master']
* ab/test-quoting-fix (2022-06-30) 3 commits
(merged to 'next' on 2022-07-06 at 0aa78fd9db)
+ config tests: fix harmless but broken "rm -r" cleanup
+ test-lib.sh: fix prepend_var() quoting issue
+ tests: add missing double quotes to included library paths
Fixes for tests when the source directory has unusual characters in
its path, e.g. whitespaces, double-quotes, etc.
source: <cover-v2-0.3-00000000000-20220630T101646Z-avarab@gmail.com>
* cl/grep-max-count (2022-06-22) 1 commit
(merged to 'next' on 2022-07-08 at 646199ab4c)
+ grep: add --max-count command line option
"git grep -m<max-hits>" is a way to limit the hits shown per file.
source: <pull.1278.v4.git.git.1655927252899.gitgitgadget@gmail.com>
* dr/i18n-die-warn-error-usage (2022-06-21) 1 commit
(merged to 'next' on 2022-07-08 at 6f639750a1)
+ i18n: mark message helpers prefix for translation
Give _() markings to fatal/warning/usage: labels that are shown in
front of these messages.
source: <pull.1279.v2.git.git.1655819877758.gitgitgadget@gmail.com>
* ds/git-rebase-doc-markup (2022-06-30) 1 commit
(merged to 'next' on 2022-07-08 at 24a0b80b71)
+ git-rebase.txt: use back-ticks consistently
References to commands-to-be-typed-literally in "git rebase"
documentation mark-up have been corrected.
source: <pull.1270.v3.git.1656508868146.gitgitgadget@gmail.com>
* ds/t5510-brokequote (2022-06-21) 1 commit
(merged to 'next' on 2022-07-06 at 2776bed385)
+ t5510: replace 'origin' with URL more carefully
Test fix.
source: <484a330e-0902-6e1b-8189-63c72dcea494@github.com>
* en/t6429-test-must-be-empty-fix (2022-06-30) 1 commit
(merged to 'next' on 2022-07-06 at 627c51773c)
+ t6429: fix use of non-existent function
A test fix.
source: <pull.1276.git.1656652799863.gitgitgadget@gmail.com>
* jk/remote-show-with-negative-refspecs (2022-06-17) 1 commit
(merged to 'next' on 2022-07-08 at d4e49ad22a)
+ remote: handle negative refspecs in git remote show
(this branch is used by jk/t5505-restructure.)
"git remote show [-n] frotz" now pays attention to negative
pathspec.
source: <20220617002036.1577-2-jacob.keller@gmail.com>
* ll/ls-files-tests-update (2022-07-06) 1 commit
(merged to 'next' on 2022-07-06 at 444d1eabd0)
+ ls-files: update test style
Test update.
source: <pull.1269.v6.git.1656863349926.gitgitgadget@gmail.com>
* ro/mktree-allow-missing-fix (2022-06-21) 1 commit
(merged to 'next' on 2022-07-08 at 599ed6fb84)
+ mktree: do not check type of remote objects
"git mktree --missing" lazily fetched objects that are missing from
the local object store, which was totally unnecessary for the purpose
of creating the tree object(s) from its input.
source: <748f39a9-65aa-2110-cf92-7ddf81b5f507@roku.com>
* tb/pack-objects-remove-pahole-comment (2022-06-28) 1 commit
(merged to 'next' on 2022-07-06 at d7494fbdef)
+ pack-objects.h: remove outdated pahole results
Comment fix.
source: <1379af2e9d271b501ef3942398e7f159a9c77973.1656440978.git.me@ttaylorr.com>
* tk/rev-parse-doc-clarify-at-u (2022-06-23) 1 commit
(merged to 'next' on 2022-07-08 at 1075452f32)
+ rev-parse: documentation adjustment - mention remote tracking with @{u}
Doc update.
source: <pull.1265.v2.git.1655960512385.gitgitgadget@gmail.com>
* zk/push-use-bitmaps (2022-06-17) 1 commit
(merged to 'next' on 2022-07-08 at 8aa1f94fad)
+ send-pack.c: add config push.useBitmaps
"git push" sometimes perform poorly when reachability bitmaps are
used, even in a repository where other operations are helped by
bitmaps. The push.useBitmaps configuration variable is introduced
to allow disabling use of reachability bitmaps only for "git push".
source: <pull.1263.v4.git.1655492779228.gitgitgadget@gmail.com>
--------------------------------------------------
[New Topics]
* jk/diff-files-cleanup-fix (2022-07-12) 1 commit
(merged to 'next' on 2022-07-13 at 9db5235d01)
+ diff-files: move misplaced cleanup label
An earlier attempt to plug leaks placed a clean-up label to jump to
at a bogus place, which as been corrected.
Will merge to 'master'.
source: <Ys0c0ePxPOqZ/5ck@coredump.intra.peff.net>
* cw/submodule-merge-messages (2022-07-13) 1 commit
- submodule merge: update conflict error message
Update the message given when "git merge" sees conflicts at a path
with a submodule while merging a superproject.
Needs review.
source: <20220712231935.2979727-1-calvinwan@google.com>
* ds/doc-allowlist (2022-07-13) 3 commits
- *: use allowlist and denylist
- t/*: use allowlist
- Documentation: use allowlist and denylist
Mechanical replacement of s/whitelist/allowlist/.
Expecting a reroll.
source: <pull.1274.git.1657718450.gitgitgadget@gmail.com>
* js/vimdiff-quotepath-fix (2022-07-13) 2 commits
- SQUASH???
- mergetool(vimdiff): allow paths to contain spaces again
Variable quoting fix in the vimdiff driver of "git mergetool"
Expecting a reroll.
cf. <xmqqa69cabhq.fsf@gitster.g>
source: <pull.1287.git.1657726969774.gitgitgadget@gmail.com>
* mt/checkout-count-fix (2022-07-13) 3 commits
- checkout: fix two bugs on the final count of updated entries
- checkout: show bug about failed entries being included in final report
- checkout: document bug where delayed checkout counts entries twice
"git checkout" miscounted the paths it updated, which has been
corrected.
Will merge to 'next'?
source: <cover.1657685948.git.matheus.bernardino@usp.br>
* tb/commit-graph-genv2-upgrade-fix (2022-07-13) 3 commits
- commit-graph: fix corrupt upgrade from generation v1 to v2
- commit-graph: introduce `repo_find_commit_pos_in_graph()`
- t5318: demonstrate commit-graph generation v2 corruption
There was a bug in the codepath to upgrade generation information
in commit-graph from v1 to v2 format, which has been corrected.
Needs review.
source: <cover.1657667404.git.me@ttaylorr.com>
* js/safe-directory-plus (2022-07-13) 3 commits
- mingw: be more informative when ownership check fails on FAT32
- mingw: handle a file owned by the Administrators group correctly
- Allow debugging unsafe directories' ownership
Needs review.
source: <pull.1286.git.1657700238.gitgitgadget@gmail.com>
--------------------------------------------------
[Stalled]
* ll/curl-accept-language (2022-07-11) 1 commit
(merged to 'next' on 2022-07-13 at 076aba7421)
+ remote-curl: send Accept-Language header to server
Earlier, HTTP transport clients learned to tell the server side
what locale they are in by sending Accept-Language HTTP header, but
this was done only for some requests but not others.
Will merge to 'master'.
source: <pull.1251.v4.git.1657519134336.gitgitgadget@gmail.com>
* bc/stash-export (2022-04-08) 4 commits
- builtin/stash: provide a way to import stashes from a ref
- builtin/stash: provide a way to export stashes to a ref
- builtin/stash: factor out revision parsing into a function
- object-name: make get_oid quietly return an error
A mechanism to export and import stash entries to and from a normal
commit to transfer it across repositories has been introduced.
Expecting a reroll.
cf. <YnL2d4Vr9Vr7W4Hj@camp.crustytoothpaste.net>
source: <20220407215352.3491567-1-sandals@crustytoothpaste.net>
* cw/remote-object-info (2022-05-06) 11 commits
- SQUASH??? coccicheck
- SQUASH??? ensure that coccicheck is happy
- SQUASH??? compilation fix
- cat-file: add --batch-command remote-object-info command
- cat-file: move parse_cmd and DEFAULT_FORMAT up
- transport: add object-info fallback to fetch
- transport: add client side capability to request object-info
- object-info: send attribute packet regardless of object ids
- object-store: add function to free object_info contents
- fetch-pack: move fetch default settings
- fetch-pack: refactor packet writing
A client component to talk with the object-info endpoint.
Expecting a reroll.
source: <20220502170904.2770649-1-calvinwan@google.com>
--------------------------------------------------
[Cooking]
* po/doc-add-renormalize (2022-07-09) 1 commit
- doc add: renormalize is not idempotent for CRCRLF
Documentation for "git add --renormalize" has been improved.
Expecting a reroll.
cf. <dfe0c1ab-33f8-f13e-71ce-1829bb0d2d7f@iee.email>
source: <d3b8ed97a105ea1d7e656c964b7eee378e11ede6.1657385781.git.gitgitgadget@gmail.com>
* po/glossary-around-traversal (2022-07-09) 3 commits
- glossary: add reachability bitmap description
- glossary: add commit graph description
- glossary: add Object DataBase (ODB) abbreviation
The glossary entries for "commit-graph file" and "reachability
bitmap" have been added.
Expecting a reroll.
cf. <dfe0c1ab-33f8-f13e-71ce-1829bb0d2d7f@iee.email>
source: <pull.1282.git.1657385781.gitgitgadget@gmail.com>
* rs/cocci-array-copy (2022-07-10) 1 commit
(merged to 'next' on 2022-07-13 at f21dec0f71)
+ cocci: avoid normalization rules for memcpy
A coccinelle rule (in contrib/) to encourage use of COPY_ARRAY
macro has been improved.
Will merge to 'master'.
source: <ded153d4-4aea-d4da-11cb-ec66d181e4c9@web.de>
* sg/multi-pack-index-parse-options-fix (2022-07-10) 1 commit
(merged to 'next' on 2022-07-11 at 1e14685680)
+ multi-pack-index: simplify handling of unknown --options
The way "git multi-pack" uses parse-options API has been improved.
Will merge to 'master'.
source: <20220710151645.GA2038@szeder.dev>
* jk/ref-filter-discard-commit-buffer (2022-07-11) 1 commit
(merged to 'next' on 2022-07-13 at d1521724db)
+ ref-filter: disable save_commit_buffer while traversing
Will merge to 'master'.
source: <Ysw4JtoHW1vWmqhz@coredump.intra.peff.net>
* ab/cocci-unused (2022-07-06) 6 commits
(merged to 'next' on 2022-07-11 at 7fa60d2a5b)
+ cocci: generalize "unused" rule to cover more than "strbuf"
+ cocci: add and apply a rule to find "unused" strbufs
+ cocci: have "coccicheck{,-pending}" depend on "coccicheck-test"
+ cocci: add a "coccicheck-test" target and test *.cocci rules
+ Makefile & .gitignore: ignore & clean "git.res", not "*.res"
+ Makefile: remove mandatory "spatch" arguments from SPATCH_FLAGS
Add Coccinelle rules to detect the pattern of initializing and then
finalizing a structure without using it in between at all, which
happens after code restructuring and the compilers fail to
recognize as an unused varilable.
Will merge to 'master'.
source: <cover-v4-0.6-00000000000-20220705T134033Z-avarab@gmail.com>
* jk/clone-unborn-confusion (2022-07-11) 4 commits
(merged to 'next' on 2022-07-13 at a7ae8cb4b5)
+ clone: move unborn head creation to update_head()
+ clone: use remote branch if it matches default HEAD
+ clone: propagate empty remote HEAD even with other branches
+ clone: drop extra newline from warning message
"git clone" from a repository with some ref whose HEAD is unborn
did not set the HEAD in the resulting repository correctly, which
has been corrected.
Will merge to 'master'.
source: <YsdyLS4UFzj0j/wB@coredump.intra.peff.net>
* ac/bitmap-lookup-table (2022-07-06) 6 commits
- p5310-pack-bitmaps.sh: remove pack.writeReverseIndex
- bitmap-lookup-table: add performance tests for lookup table
- pack-bitmap: prepare to read lookup table extension
- pack-bitmap-write: learn pack.writeBitmapLookupTable and add tests
- pack-bitmap-write.c: write lookup table extension
- Documentation/technical: describe bitmap lookup table extension
The pack bitmap file gained a bitmap-lookup table to speed up
locating the necessary bitmap for a given commit.
Waiting for a more thorough review.
cf. <Ys4DjW9JjQFx5Bhb@nand.local>
source: <pull.1266.v3.git.1656924376.gitgitgadget@gmail.com>
* bc/nettle-sha256 (2022-07-10) 1 commit
(merged to 'next' on 2022-07-11 at cf9595d8ca)
+ sha256: add support for Nettle
Support for libnettle as SHA256 implementation has been added.
Will merge to 'master'.
source: <20220710132907.1499365-1-sandals@crustytoothpaste.net>
* jc/builtin-mv-move-array (2022-07-09) 1 commit
(merged to 'next' on 2022-07-09 at 0d3b3f62e5)
+ builtin/mv.c: use the MOVE_ARRAY() macro instead of memmove()
Apply Coccinelle rule to turn raw memmove() into MOVE_ARRAY() cpp
macro, which would improve maintainability and readability.
Will merge to 'master'.
source: <xmqq4jzpu4xp.fsf_-_@gitster.g>
* jd/gpg-interface-trust-level-string (2022-07-10) 1 commit
(merged to 'next' on 2022-07-11 at 7b3cca73a8)
+ gpg-interface: add function for converting trust level to string
The code to convert between GPG trust level strings and internal
constants we use to represent them have been cleaned up.
Will merge to 'master'.
source: <pull.1281.v4.git.1657515650587.gitgitgadget@gmail.com>
* kk/p4-client-name-encoding-fix (2022-07-08) 1 commit
(merged to 'next' on 2022-07-11 at 9c18616f76)
+ git-p4: fix bug with encoding of p4 client name
"git p4" did not handle non-ASCII client name well, which has been
corrected.
Will merge to 'master'.
source: <pull.1285.git.git.1657267260405.gitgitgadget@gmail.com>
* sa/cat-file-mailmap (2022-07-13) 4 commits
- cat-file: add mailmap support
- ident: rename commit_rewrite_person() to apply_mailmap_to_header()
- ident: move commit_rewrite_person() to ident.c
- revision: improve commit_rewrite_person()
"git cat-file" learned an option to use the mailmap when showing
commit and tag objects.
Will merge to 'next'?
source: <20220712160634.213956-1-siddharthasthana31@gmail.com>
* fr/vimdiff-layout-fix (2022-07-08) 1 commit
(merged to 'next' on 2022-07-09 at d8461bd236)
+ vimdiff: make layout engine more robust against user vim settings
Recent update to vimdiff layout code has been made more robust
against different end-user vim settings.
Will merge to 'master'.
source: <20220708181024.45839-1-greenfoo@u92.eu>
* ds/rebase-update-ref (2022-07-12) 13 commits
- sequencer: notify user of --update-refs activity
- sequencer: ignore HEAD ref under --update-refs
- rebase: add rebase.updateRefs config option
- sequencer: rewrite update-refs as user edits todo list
- rebase: update refs from 'update-ref' commands
- rebase: add --update-refs option
- sequencer: add update-ref command
- sequencer: define array with enum values
- rebase-interactive: update 'merge' description
- branch: consider refs under 'update-refs'
- t2407: test branches currently using apply backend
- t2407: test bisect and rebase as black-boxes
- Merge branch 'ds/branch-checked-out' into ds/rebase-update-ref
"git rebase -i" learns to update branches whose tip appear in the
rebased range.
Expecting a reroll.
cf. <15631ea2-6722-fd24-c8a6-0cee638b0602@github.com>
source: <pull.1247.v4.git.1657631225.gitgitgadget@gmail.com>
* ab/leakfix (2022-07-01) 11 commits
(merged to 'next' on 2022-07-11 at 0b107fffcf)
+ pull: fix a "struct oid_array" memory leak
+ cat-file: fix a common "struct object_context" memory leak
+ gc: fix a memory leak
+ checkout: avoid "struct unpack_trees_options" leak
+ merge-file: fix memory leaks on error path
+ merge-file: refactor for subsequent memory leak fix
+ cat-file: fix a memory leak in --batch-command mode
+ revert: free "struct replay_opts" members
+ submodule.c: free() memory from xgetcwd()
+ clone: fix memory leak in wanted_peer_refs()
+ check-ref-format: fix trivial memory leak
Plug various memory leaks.
Will merge to 'master'.
source: <cover-v2-00.11-00000000000-20220701T104017Z-avarab@gmail.com>
* ab/test-tool-leakfix (2022-07-01) 9 commits
(merged to 'next' on 2022-07-11 at db7a724694)
+ test-tool delta: fix a memory leak
+ test-tool ref-store: fix a memory leak
+ test-tool bloom: fix memory leaks
+ test-tool json-writer: fix memory leaks
+ test-tool regex: call regfree(), fix memory leaks
+ test-tool urlmatch-normalization: fix a memory leak
+ test-tool {dump,scrap}-cache-tree: fix memory leaks
+ test-tool path-utils: fix a memory leak
+ test-tool test-hash: fix a memory leak
Plug various memory leaks in test-tool commands.
Will merge to 'master'.
source: <cover-v2-0.9-00000000000-20220701T103503Z-avarab@gmail.com>
* gc/submodule-use-super-prefix (2022-06-30) 8 commits
(merged to 'next' on 2022-07-11 at 0d9cf172f9)
+ submodule--helper: remove display path helper
+ submodule--helper update: use --super-prefix
+ submodule--helper: remove unused SUPPORT_SUPER_PREFIX flags
+ submodule--helper: use correct display path helper
+ submodule--helper: don't recreate recursive prefix
+ submodule--helper update: use display path helper
+ submodule--helper tests: add missing "display path" coverage
+ Merge branch 'ab/submodule-cleanup' into gc/submodule-use-super-prefix
(this branch uses ab/submodule-cleanup.)
Another step to rewrite more parts of "git submodule" in C.
Will merge to 'master'.
source: <20220701021157.88858-1-chooglen@google.com>
* hx/lookup-commit-in-graph-fix (2022-07-12) 2 commits
(merged to 'next' on 2022-07-13 at 4489696814)
+ t5330: remove run_with_limited_processses()
(merged to 'next' on 2022-07-08 at cef32db0b6)
+ commit-graph.c: no lazy fetch in lookup_commit_in_graph()
A corner case bug where lazily fetching objects from a promisor
remote resulted in infinite recursion has been corrected.
Will merge to 'master'.
source: <cover.1656593279.git.hanxin.hx@bytedance.com>
* pw/xdiff-alloc (2022-07-08) 4 commits
- xdiff: introduce XDL_ALLOC_GROW()
- xdiff: introduce XDL_CALLOC_ARRAY()
- xdiff: introduce xdl_calloc
- xdiff: introduce XDL_ALLOC_ARRAY()
Add a level of redirection to array allocation API in xdiff part,
to make it easier to share with the libgit2 project.
Will merge to 'next'?
source: <pull.1272.v2.git.1657297519.gitgitgadget@gmail.com>
* sy/mv-out-of-cone (2022-07-01) 8 commits
(merged to 'next' on 2022-07-08 at 654970fdb7)
+ mv: add check_dir_in_index() and solve general dir check issue
+ mv: use flags mode for update_mode
+ mv: check if <destination> exists in index to handle overwriting
+ mv: check if out-of-cone file exists in index with SKIP_WORKTREE bit
+ mv: decouple if/else-if checks using goto
+ mv: update sparsity after moving from out-of-cone to in-cone
+ t1092: mv directory from out-of-cone to in-cone
+ t7002: add tests for moving out-of-cone file/directory
"git mv A B" in a sparsely populated working tree can be asked to
move a path between directories that are "in cone" (i.e. expected
to be materialized in the working tree) and "out of cone"
(i.e. expected to be hidden). The handling of such cases has been
improved.
Will merge to 'master'.
source: <20220630023737.473690-1-shaoxuan.yuan02@gmail.com>
* ab/squelch-empty-fsync-traces (2022-06-30) 1 commit
. trace2: don't include "fsync" events in all trace2 logs
Omit fsync-related trace2 entries when their values are all zero.
Breaks tests in hx/unpack-streaming with an interesting interaction.
source: <patch-v2-1.1-a1fc37de947-20220630T084607Z-avarab@gmail.com>
* en/merge-tree (2022-06-22) 17 commits
(merged to 'next' on 2022-07-08 at a29b4896ab)
+ git-merge-tree.txt: add a section on potentional usage mistakes
+ merge-tree: add a --allow-unrelated-histories flag
+ merge-tree: allow `ls-files -u` style info to be NUL terminated
+ merge-ort: optionally produce machine-readable output
+ merge-ort: store more specific conflict information
+ merge-ort: make `path_messages` a strmap to a string_list
+ merge-ort: store messages in a list, not in a single strbuf
+ merge-tree: provide easy access to `ls-files -u` style info
+ merge-tree: provide a list of which files have conflicts
+ merge-ort: remove command-line-centric submodule message from merge-ort
+ merge-ort: provide a merge_get_conflicted_files() helper function
+ merge-tree: support including merge messages in output
+ merge-ort: split out a separate display_update_messages() function
+ merge-tree: implement real merges
+ merge-tree: add option parsing and initial shell for real merge function
+ merge-tree: move logic for existing merge into new function
+ merge-tree: rename merge_trees() to trivial_merge_trees()
A new command is introduced that takes two commits and computes a
tree that would be contained in the resulting merge commit, if the
histories leading to these two commits were to be merged, and is
added as a new mode of "git merge-tree" subcommand.
Will merge to 'master'.
source: <pull.1122.v7.git.1655511660.gitgitgadget@gmail.com>
* en/merge-restore-to-pristine (2022-06-21) 6 commits
- merge: do not exit restore_state() prematurely
- merge: ensure we can actually restore pre-merge state
- merge: make restore_state() restore staged state too
- merge: fix save_state() to work when there are racy-dirty files
- merge: remove unused variable
- t6424: make sure a failed merge preserves local changes
When "git merge" finds that it cannot perform a merge, it should
restore the working tree to the state before the command was
initiated, but in some corner cases it didn't.
Needs review.
source: <pull.1231.v2.git.1655621424.gitgitgadget@gmail.com>
* tk/apply-case-insensitive (2022-06-21) 3 commits
- apply: support case-only renames in case-insensitive filesystems
- reset: new failing test for reset of case-insensitive duplicate in index
- t4141: test "git apply" with core.ignorecase
"git apply" barfed on a patch that makes a case-only rename on a
case-insensitive filesystem.
Needs review.
source: <pull.1257.v2.git.1655655027.gitgitgadget@gmail.com>
* zh/ls-files-format (2022-07-13) 1 commit
- ls-files: introduce "--format" option
"git ls-files" learns the "--format" option to tweak its output.
Will merge to 'next'?
source: <pull.1262.v7.git.1657692472994.gitgitgadget@gmail.com>
* en/merge-dual-dir-renames-fix (2022-07-06) 5 commits
(merged to 'next' on 2022-07-11 at 5f8dadf87b)
+ merge-ort: fix issue with dual rename and add/add conflict
+ merge-ort: shuffle the computation and cleanup of potential collisions
+ merge-ort: make a separate function for freeing struct collisions
+ merge-ort: small cleanups of check_for_directory_rename
+ t6423: add tests of dual directory rename plus add/add conflict
Fixes a long-standing corner case bug around directory renames in
the merge-ort strategy.
Will merge to 'master'.
source: <pull.1268.v4.git.1656984823.gitgitgadget@gmail.com>
* js/commit-graph-parsing-without-repo-settings (2022-06-15) 1 commit
- commit-graph: refactor to avoid prepare_repo_settings
Expecting a reroll.
source: <9b56496b0809cc8a25af877ea97042e2cb7f2af6.1655246092.git.steadmon@google.com>
* jt/connected-show-missing-from-which-side (2022-06-10) 1 commit
- fetch,fetch-pack: clarify connectivity check error
We may find an object missing after a "git fetch" stores the
objects it obtained from the other side, but it is not necessarily
because the remote failed to send necessary objects. Reword the
messages in an attempt to help users explore other possibilities
when they hit this error.
Expecting a reroll.
source: <20220610195247.1177549-1-jonathantanmy@google.com>
* ab/submodule-cleanup (2022-06-28) 12 commits
(merged to 'next' on 2022-07-08 at 6f3886aa03)
+ git-sh-setup.sh: remove "say" function, change last users
+ git-submodule.sh: use "$quiet", not "$GIT_QUIET"
+ submodule--helper: eliminate internal "--update" option
+ submodule--helper: understand --checkout, --merge and --rebase synonyms
+ submodule--helper: report "submodule" as our name in some "-h" output
+ submodule--helper: rename "absorb-git-dirs" to "absorbgitdirs"
+ submodule update: remove "-v" option
+ submodule--helper: have --require-init imply --init
+ git-submodule.sh: remove unused top-level "--branch" argument
+ git-submodule.sh: make the "$cached" variable a boolean
+ git-submodule.sh: remove unused $prefix variable
+ git-submodule.sh: remove unused sanitize_submodule_env()
(this branch is used by gc/submodule-use-super-prefix.)
Further preparation to turn git-submodule.sh into a builtin.
Will merge to 'master'.
source: <cover-v4-00.12-00000000000-20220628T095914Z-avarab@gmail.com>
* jc/resolve-undo (2022-07-11) 2 commits
(merged to 'next' on 2022-07-13 at b9ef9482e8)
+ fsck: do not dereference NULL while checking resolve-undo data
(merged to 'next' on 2022-06-15 at c195e5a2d9)
+ revision: mark blobs needed for resolve-undo as reachable
The resolve-undo information in the index was not protected against
GC, which has been corrected.
Will merge to 'master'.
source: <xmqq35f7kzad.fsf@gitster.g>
* ab/build-gitweb (2022-06-28) 8 commits
(merged to 'next' on 2022-07-11 at 731e354ff0)
+ gitweb/Makefile: add a "NO_GITWEB" parameter
+ Makefile: build 'gitweb' in the default target
+ gitweb/Makefile: include in top-level Makefile
+ gitweb: remove "test" and "test-installed" targets
+ gitweb/Makefile: prepare to merge into top-level Makefile
+ gitweb/Makefile: clear up and de-duplicate the gitweb.{css,js} vars
+ gitweb/Makefile: add a $(GITWEB_ALL) variable
+ gitweb/Makefile: define all .PHONY prerequisites inline
Teach "make all" to build gitweb as well.
Will merge to 'master'.
source: <cover-v3-0.8-00000000000-20220628T100936Z-avarab@gmail.com>
* ab/test-without-templates (2022-06-06) 7 commits
(merged to 'next' on 2022-07-11 at afab6c1918)
+ tests: don't assume a .git/info for .git/info/sparse-checkout
+ tests: don't assume a .git/info for .git/info/exclude
+ tests: don't assume a .git/info for .git/info/refs
+ tests: don't assume a .git/info for .git/info/attributes
+ tests: don't assume a .git/info for .git/info/grafts
+ tests: don't depend on template-created .git/branches
+ t0008: don't rely on default ".git/info/exclude"
Tweak tests so that they still work when the "git init" template
did not create .git/info directory.
Will merge to 'master'.
source: <cover-v2-0.7-00000000000-20220603T110506Z-avarab@gmail.com>
* hx/unpack-streaming (2022-06-13) 6 commits
(merged to 'next' on 2022-07-08 at 4eb375ec2f)
+ unpack-objects: use stream_loose_object() to unpack large objects
+ core doc: modernize core.bigFileThreshold documentation
+ object-file.c: add "stream_loose_object()" to handle large object
+ object-file.c: factor out deflate part of write_loose_object()
+ object-file.c: refactor write_loose_object() to several steps
+ unpack-objects: low memory footprint for get_data() in dry_run mode
Allow large objects read from a packstream to be streamed into a
loose object file straight, without having to keep it in-core as a
whole.
Will merge to 'master'.
source: <cover.1654914555.git.chiyutianyi@gmail.com>
* tb/show-ref-count (2022-06-06) 2 commits
- builtin/show-ref.c: limit output with `--count`
- builtin/show-ref.c: rename `found_match` to `matches_nr`
"git show-ref" learned to stop after emitting N refs with the new
"--count=N" option.
Expecting a reroll.
cf. <xmqqczfl4ce1.fsf@gitster.g>
source: <cover.1654552560.git.me@ttaylorr.com>
* ds/bundle-uri-more (2022-06-06) 6 commits
- fetch: add 'refs/bundle/' to log.excludeDecoration
- bundle-uri: add support for http(s):// and file://
- fetch: add --bundle-uri option
- bundle-uri: create basic file-copy logic
- remote-curl: add 'get' capability
- docs: document bundle URI standard
The "bundle URI" topic.
Needs review.
source: <pull.1248.git.1654545325.gitgitgadget@gmail.com>
* js/bisect-in-c (2022-06-27) 16 commits
- bisect: no longer try to clean up left-over `.git/head-name` files
- bisect: remove Cogito-related code
- Turn `git bisect` into a full built-in
- bisect: move even the command-line parsing to `bisect--helper`
- bisect: teach the `bisect--helper` command to show the correct usage strings
- bisect--helper: return only correct exit codes in `cmd_*()`
- bisect--helper: move the `BISECT_STATE` case to the end
- bisect--helper: make `--bisect-state` optional
- bisect--helper: align the sub-command order with git-bisect.sh
- bisect--helper: using `--bisect-state` without an argument is a bug
- bisect--helper: really retire `--bisect-autostart`
- bisect--helper: really retire --bisect-next-check
- bisect--helper: retire the --no-log option
- bisect: avoid double-quoting when printing the failed command
- bisect run: fix the error message
- bisect: verify that a bogus option won't try to start a bisection
Final bits of "git bisect.sh" have been rewritten in C.
Expecting a (hopefully final) reroll.
cf. <20627.86ilolhnnn.gmgdl@evledraar.gmail.com>
source: <pull.1132.v4.git.1656354677.gitgitgadget@gmail.com>
* gc/bare-repo-discovery (2022-07-07) 5 commits
- setup.c: create `discovery.bare`
- safe.directory: use git_protected_config()
- config: learn `git_protected_config()`
- Documentation: define protected configuration
- Documentation/git-config.txt: add SCOPES section
Introduce a discovery.barerepository configuration variable that
allows users to forbid discovery of bare repositories.
Expecting a reroll.
cf. <kl6lpmia55ys.fsf@chooglen-macbookpro.roam.corp.google.com>
source: <pull.1261.v7.git.git.1657234914.gitgitgadget@gmail.com>
* gg/worktree-from-the-above (2022-06-21) 2 commits
(merged to 'next' on 2022-07-08 at fa0e71ba39)
+ dir: minor refactoring / clean-up
+ dir: traverse into repository
In a non-bare repository, the behavior of Git when the
core.worktree configuration variable points at a directory that has
a repository as its subdirectory, regressed in Git 2.27 days.
Will merge to 'master'.
source: <20220616234433.225-1-gg.oss@outlook.com>
source: <20220616231956.154-1-gg.oss@outlook.com>
--------------------------------------------------
[Discarded]
* ar/send-email-confirm-by-default (2022-04-22) 1 commit
. send-email: always confirm by default
"git send-email" is changed so that by default it asks for
confirmation before sending each message out.
Discarded.
I wanted to like this, and had it in the version of Git I use
myself for daily work, but the prompting turned out to be somewhat
distracting.
source: <20220422083629.1404989-1-hi@alyssa.is>
^ permalink raw reply [relevance 3%]
* What's cooking in git.git (Jul 2022, #03; Mon, 11)
@ 2022-07-12 17:07 3% Junio C Hamano
0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2022-07-12 17:07 UTC (permalink / raw)
To: git
Here are the topics that have been cooking in my tree. Commits
prefixed with '+' are in 'next' (being in 'next' is a sign that a
topic is stable enough to be used and are candidate to be in a
future release). Commits prefixed with '-' are only in 'seen',
and aren't considered "accepted" at all.
Maintenance releases v2.37.1 and others have been tagged. They are
to address CVE-2022-29187, a vulnerability related to CVE-2022-24765
that was fixed earlier. Big thanks to Carlo Arenas and Johannes
Schindelin for fixing the issue and helping the releases out.
Copies of the source code to Git live in many repositories, and the
following is a list of the ones I push into or their mirrors. Some
repositories have only a subset of branches.
With maint, master, next, seen, todo:
git://git.kernel.org/pub/scm/git/git.git/
git://repo.or.cz/alt-git.git/
https://kernel.googlesource.com/pub/scm/git/git/
https://github.com/git/git/
https://gitlab.com/git-vcs/git/
With all the integration branches and topics broken out:
https://github.com/gitster/git/
Even though the preformatted documentation in HTML and man format
are not sources, they are published in these repositories for
convenience (replace "htmldocs" with "manpages" for the manual
pages):
git://git.kernel.org/pub/scm/git/git-htmldocs.git/
https://github.com/gitster/git-htmldocs.git/
Release tarballs are available at:
https://www.kernel.org/pub/software/scm/git/
--------------------------------------------------
[Graduated to 'master']
* ac/bitmap-format-doc (2022-06-16) 3 commits
(merged to 'next' on 2022-06-16 at 5591d11601)
+ bitmap-format.txt: add information for trailing checksum
+ bitmap-format.txt: fix some formatting issues
+ bitmap-format.txt: feed the file to asciidoc to generate html
Adjust technical/bitmap-format to be formatted by AsciiDoc, and
add some missing information to the documentation.
source: <pull.1246.v4.git.1655355834.gitgitgadget@gmail.com>
* cr/setup-bug-typo (2022-06-17) 1 commit
(merged to 'next' on 2022-06-17 at 8834ffe0ab)
+ setup: fix function name in a BUG() message
Typofix in a BUG() message.
source: <pull.1255.git.1654782920256.gitgitgadget@gmail.com>
* ds/branch-checked-out (2022-06-21) 7 commits
(merged to 'next' on 2022-06-21 at e42bc4566f)
+ branch: drop unused worktrees variable
+ fetch: stop passing around unused worktrees variable
(merged to 'next' on 2022-06-17 at c881874257)
+ branch: fix branch_checked_out() leaks
+ branch: use branch_checked_out() when deleting refs
+ fetch: use new branch_checked_out() and add tests
+ branch: check for bisects and rebases
+ branch: add branch_checked_out() helper
(this branch is used by ds/rebase-update-ref.)
Introduce a helper to see if a branch is already being worked on
(hence should not be newly checked out in a working tree), which
performs much better than the existing find_shared_symref() to
replace many uses of the latter.
source: <pull.1254.v2.git.1655234853.gitgitgadget@gmail.com>
* ds/vscode-settings (2022-06-27) 1 commit
(merged to 'next' on 2022-07-02 at fcbd2e7aca)
+ vscode: improve tab size and wrapping
Will merge to 'master'.
source: <pull.1271.git.1656354587496.gitgitgadget@gmail.com>
* jk/optim-promisor-object-enumeration (2022-06-16) 1 commit
(merged to 'next' on 2022-06-16 at ce0712a74c)
+ is_promisor_object(): walk promisor packs in pack-order
Collection of what is referenced by objects in promisor packs have
been optimized to inspect these objects in the in-pack order.
source: <YqrTsbXbEjx0Pabn@coredump.intra.peff.net>
* jk/revisions-doc-markup-fix (2022-06-22) 1 commit
(merged to 'next' on 2022-07-02 at e25dbe8cfb)
+ revisions.txt: escape "..." to avoid asciidoc horizontal ellipsis
Documentation mark-up fix.
source: <YrOmsA04FZae89be@coredump.intra.peff.net>
* pb/diff-doc-raw-format (2022-06-13) 3 commits
(merged to 'next' on 2022-07-02 at 198480cbc6)
+ diff-index.txt: update raw output format in examples
+ diff-format.txt: correct misleading wording
+ diff-format.txt: dst can be 0* SHA-1 when path is deleted, too
Update "git diff/log --raw" format documentation.
source: <pull.1259.git.1655123383.gitgitgadget@gmail.com>
* rs/archive-with-internal-gzip (2022-06-15) 6 commits
(merged to 'next' on 2022-06-17 at ab5af6acd1)
+ archive-tar: use internal gzip by default
+ archive-tar: use OS_CODE 3 (Unix) for internal gzip
+ archive-tar: add internal gzip implementation
+ archive-tar: factor out write_block()
+ archive: rename archiver data field to filter_command
+ archive: update format documentation
Teach "git archive" to (optionally and then by default) avoid
spawning an external "gzip" process when creating ".tar.gz" (and
".tgz") archives.
source: <9df761c3-355a-ede9-7971-b32687fe9abb@web.de>
* rs/combine-diff-with-incompatible-options (2022-06-21) 2 commits
(merged to 'next' on 2022-07-02 at 0fe8b80a3e)
+ combine-diff: abort if --output is given
+ combine-diff: abort if --ignore-matching-lines is given
Certain diff options are currently ignored when combined-diff is
shown; mark them as incompatible with the feature.
source: <220524.86v8tuvfl1.gmgdl@evledraar.gmail.com>
--------------------------------------------------
[New Topics]
* po/doc-add-renormalize (2022-07-09) 1 commit
- doc add: renormalize is not idempotent for CRCRLF
Documentation for "git add --renormalize" has been improved.
Will merge to 'next'?
source: <d3b8ed97a105ea1d7e656c964b7eee378e11ede6.1657385781.git.gitgitgadget@gmail.com>
* po/glossary-around-traversal (2022-07-09) 3 commits
- glossary: add reachability bitmap description
- glossary: add commit graph description
- glossary: add Object DataBase (ODB) abbreviation
The glossary entries for "commit-graph file" and "reachability
bitmap" have been added.
Will merge to 'next'?
source: <pull.1282.git.1657385781.gitgitgadget@gmail.com>
* rs/cocci-array-copy (2022-07-10) 1 commit
- cocci: avoid normalization rules for memcpy
A coccinelle rule (in contrib/) to encourage use of COPY_ARRAY
macro has been improved.
Will merge to 'next'.
source: <ded153d4-4aea-d4da-11cb-ec66d181e4c9@web.de>
* sg/multi-pack-index-parse-options-fix (2022-07-10) 1 commit
(merged to 'next' on 2022-07-11 at 1e14685680)
+ multi-pack-index: simplify handling of unknown --options
The way "git multi-pack" uses parse-options API has been improved.
Will merge to 'master'.
source: <20220710151645.GA2038@szeder.dev>
* jk/ref-filter-discard-commit-buffer (2022-07-11) 1 commit
- ref-filter: disable save_commit_buffer while traversing
source: <Ysw4JtoHW1vWmqhz@coredump.intra.peff.net>
--------------------------------------------------
[Stalled]
* ll/curl-accept-language (2022-07-11) 1 commit
- remote-curl: send Accept-Language header to server
Earlier, HTTP transport clients learned to tell the server side
what locale they are in by sending Accept-Language HTTP header, but
this was done only for some requests but not others.
Will merge to 'next'.
source: <pull.1251.v4.git.1657519134336.gitgitgadget@gmail.com>
* bc/stash-export (2022-04-08) 4 commits
- builtin/stash: provide a way to import stashes from a ref
- builtin/stash: provide a way to export stashes to a ref
- builtin/stash: factor out revision parsing into a function
- object-name: make get_oid quietly return an error
A mechanism to export and import stash entries to and from a normal
commit to transfer it across repositories has been introduced.
Expecting a reroll.
cf. <YnL2d4Vr9Vr7W4Hj@camp.crustytoothpaste.net>
source: <20220407215352.3491567-1-sandals@crustytoothpaste.net>
* cw/remote-object-info (2022-05-06) 11 commits
- SQUASH??? coccicheck
- SQUASH??? ensure that coccicheck is happy
- SQUASH??? compilation fix
- cat-file: add --batch-command remote-object-info command
- cat-file: move parse_cmd and DEFAULT_FORMAT up
- transport: add object-info fallback to fetch
- transport: add client side capability to request object-info
- object-info: send attribute packet regardless of object ids
- object-store: add function to free object_info contents
- fetch-pack: move fetch default settings
- fetch-pack: refactor packet writing
A client component to talk with the object-info endpoint.
Expecting a reroll.
source: <20220502170904.2770649-1-calvinwan@google.com>
--------------------------------------------------
[Cooking]
* ab/cocci-unused (2022-07-06) 6 commits
(merged to 'next' on 2022-07-11 at 7fa60d2a5b)
+ cocci: generalize "unused" rule to cover more than "strbuf"
+ cocci: add and apply a rule to find "unused" strbufs
+ cocci: have "coccicheck{,-pending}" depend on "coccicheck-test"
+ cocci: add a "coccicheck-test" target and test *.cocci rules
+ Makefile & .gitignore: ignore & clean "git.res", not "*.res"
+ Makefile: remove mandatory "spatch" arguments from SPATCH_FLAGS
Add Coccinelle rules to detect the pattern of initializing and then
finalizing a structure without using it in between at all, which
happens after code restructuring and the compilers fail to
recognize as an unused varilable.
Will merge to 'master'.
source: <cover-v4-0.6-00000000000-20220705T134033Z-avarab@gmail.com>
* jk/clone-unborn-confusion (2022-07-11) 4 commits
- clone: move unborn head creation to update_head()
- clone: use remote branch if it matches default HEAD
- clone: propagate empty remote HEAD even with other branches
- clone: drop extra newline from warning message
"git clone" from a repository with some ref whose HEAD is unborn
did not set the HEAD in the resulting repository correctly, which
has been corrected.
Will merge to 'next'.
source: <YsdyLS4UFzj0j/wB@coredump.intra.peff.net>
source: <YsvrsOH1jg559yVt@coredump.intra.peff.net>
* ac/bitmap-lookup-table (2022-07-06) 6 commits
- p5310-pack-bitmaps.sh: remove pack.writeReverseIndex
- bitmap-lookup-table: add performance tests for lookup table
- pack-bitmap: prepare to read lookup table extension
- pack-bitmap-write: learn pack.writeBitmapLookupTable and add tests
- pack-bitmap-write.c: write lookup table extension
- Documentation/technical: describe bitmap lookup table extension
The pack bitmap file gained a bitmap-lookup table to speed up
locating the necessary bitmap for a given commit.
Will merge to 'next'?
source: <pull.1266.v3.git.1656924376.gitgitgadget@gmail.com>
* bc/nettle-sha256 (2022-07-10) 1 commit
(merged to 'next' on 2022-07-11 at cf9595d8ca)
+ sha256: add support for Nettle
Support for libnettle as SHA256 implementation has been added.
Will merge to 'master'.
source: <20220710132907.1499365-1-sandals@crustytoothpaste.net>
* jc/builtin-mv-move-array (2022-07-09) 1 commit
(merged to 'next' on 2022-07-09 at 0d3b3f62e5)
+ builtin/mv.c: use the MOVE_ARRAY() macro instead of memmove()
Apply Coccinelle rule to turn raw memmove() into MOVE_ARRAY() cpp
macro, which would improve maintainability and readability.
Will merge to 'master'.
source: <xmqq4jzpu4xp.fsf_-_@gitster.g>
* jd/gpg-interface-trust-level-string (2022-07-10) 1 commit
(merged to 'next' on 2022-07-11 at 7b3cca73a8)
+ gpg-interface: add function for converting trust level to string
The code to convert between GPG trust level strings and internal
constants we use to represent them have been cleaned up.
Will merge to 'master'.
source: <pull.1281.v4.git.1657515650587.gitgitgadget@gmail.com>
* kk/p4-client-name-encoding-fix (2022-07-08) 1 commit
(merged to 'next' on 2022-07-11 at 9c18616f76)
+ git-p4: fix bug with encoding of p4 client name
"git p4" did not handle non-ASCII client name well, which has been
corrected.
Will merge to 'master'.
source: <pull.1285.git.git.1657267260405.gitgitgadget@gmail.com>
* sa/cat-file-mailmap (2022-07-09) 4 commits
- cat-file: add mailmap support
- ident: rename commit_rewrite_person() to apply_mailmap_to_header()
- ident: move commit_rewrite_person() to ident.c
- revision: improve commit_rewrite_person()
"git cat-file" learned an option to use the mailmap when showing
commit and tag objects.
source: <20220709154149.165524-1-siddharthasthana31@gmail.com>
* fr/vimdiff-layout-fix (2022-07-08) 1 commit
(merged to 'next' on 2022-07-09 at d8461bd236)
+ vimdiff: make layout engine more robust against user vim settings
Recent update to vimdiff layout code has been made more robust
against different end-user vim settings.
Will merge to 'master'.
source: <20220708181024.45839-1-greenfoo@u92.eu>
* ds/git-rebase-doc-markup (2022-06-30) 1 commit
(merged to 'next' on 2022-07-08 at 24a0b80b71)
+ git-rebase.txt: use back-ticks consistently
References to commands-to-be-typed-literally in "git rebase"
documentation mark-up have been corrected.
Will merge to 'master'.
source: <pull.1270.v3.git.1656508868146.gitgitgadget@gmail.com>
* ds/rebase-update-ref (2022-06-28) 8 commits
- rebase: add rebase.updateRefs config option
- rebase: update refs from 'update-ref' commands
- rebase: add --update-refs option
- sequencer: add update-ref command
- sequencer: define array with enum values
- rebase-interactive: update 'merge' description
- branch: consider refs under 'update-refs'
- t2407: test branches currently using apply backend
"git rebase -i" learns to update branches whose tip appear in the
rebased range.
Expecting a reroll.
cf. <15631ea2-6722-fd24-c8a6-0cee638b0602@github.com>
source: <pull.1247.v3.git.1656422759.gitgitgadget@gmail.com>
* tb/pack-objects-remove-pahole-comment (2022-06-28) 1 commit
(merged to 'next' on 2022-07-06 at d7494fbdef)
+ pack-objects.h: remove outdated pahole results
Comment fix.
Will merge to 'master'.
source: <1379af2e9d271b501ef3942398e7f159a9c77973.1656440978.git.me@ttaylorr.com>
* ab/leakfix (2022-07-01) 11 commits
(merged to 'next' on 2022-07-11 at 0b107fffcf)
+ pull: fix a "struct oid_array" memory leak
+ cat-file: fix a common "struct object_context" memory leak
+ gc: fix a memory leak
+ checkout: avoid "struct unpack_trees_options" leak
+ merge-file: fix memory leaks on error path
+ merge-file: refactor for subsequent memory leak fix
+ cat-file: fix a memory leak in --batch-command mode
+ revert: free "struct replay_opts" members
+ submodule.c: free() memory from xgetcwd()
+ clone: fix memory leak in wanted_peer_refs()
+ check-ref-format: fix trivial memory leak
Plug various memory leaks.
Will merge to 'master'.
source: <cover-v2-00.11-00000000000-20220701T104017Z-avarab@gmail.com>
* ab/test-tool-leakfix (2022-07-01) 9 commits
(merged to 'next' on 2022-07-11 at db7a724694)
+ test-tool delta: fix a memory leak
+ test-tool ref-store: fix a memory leak
+ test-tool bloom: fix memory leaks
+ test-tool json-writer: fix memory leaks
+ test-tool regex: call regfree(), fix memory leaks
+ test-tool urlmatch-normalization: fix a memory leak
+ test-tool {dump,scrap}-cache-tree: fix memory leaks
+ test-tool path-utils: fix a memory leak
+ test-tool test-hash: fix a memory leak
Plug various memory leaks in test-tool commands.
Will merge to 'master'.
source: <cover-v2-0.9-00000000000-20220701T103503Z-avarab@gmail.com>
* en/t6429-test-must-be-empty-fix (2022-06-30) 1 commit
(merged to 'next' on 2022-07-06 at 627c51773c)
+ t6429: fix use of non-existent function
A test fix.
Will merge to 'master'.
source: <pull.1276.git.1656652799863.gitgitgadget@gmail.com>
* gc/submodule-use-super-prefix (2022-06-30) 8 commits
(merged to 'next' on 2022-07-11 at 0d9cf172f9)
+ submodule--helper: remove display path helper
+ submodule--helper update: use --super-prefix
+ submodule--helper: remove unused SUPPORT_SUPER_PREFIX flags
+ submodule--helper: use correct display path helper
+ submodule--helper: don't recreate recursive prefix
+ submodule--helper update: use display path helper
+ submodule--helper tests: add missing "display path" coverage
+ Merge branch 'ab/submodule-cleanup' into gc/submodule-use-super-prefix
(this branch uses ab/submodule-cleanup.)
Another step to rewrite more parts of "git submodule" in C.
Will merge to 'master'.
source: <20220701021157.88858-1-chooglen@google.com>
* hx/lookup-commit-in-graph-fix (2022-06-30) 1 commit
(merged to 'next' on 2022-07-08 at cef32db0b6)
+ commit-graph.c: no lazy fetch in lookup_commit_in_graph()
A corner case bug where lazily fetching objects from a promisor
remote resulted in infinite recursion has been corrected.
Will merge to 'master'.
source: <96d4bb71505d87ed501c058bbd89bfc13d08b24a.1656593279.git.hanxin.hx@bytedance.com>
* ll/ls-files-tests-update (2022-07-06) 1 commit
(merged to 'next' on 2022-07-06 at 444d1eabd0)
+ ls-files: update test style
Test update.
Will merge to 'master'.
source: <pull.1269.v6.git.1656863349926.gitgitgadget@gmail.com>
* pw/xdiff-alloc (2022-07-08) 4 commits
- xdiff: introduce XDL_ALLOC_GROW()
- xdiff: introduce XDL_CALLOC_ARRAY()
- xdiff: introduce xdl_calloc
- xdiff: introduce XDL_ALLOC_ARRAY()
Add a level of redirection to array allocation API in xdiff part,
to make it easier to share with the libgit2 project.
Will merge to 'next'?
source: <pull.1272.v2.git.1657297519.gitgitgadget@gmail.com>
* sy/mv-out-of-cone (2022-07-01) 8 commits
(merged to 'next' on 2022-07-08 at 654970fdb7)
+ mv: add check_dir_in_index() and solve general dir check issue
+ mv: use flags mode for update_mode
+ mv: check if <destination> exists in index to handle overwriting
+ mv: check if out-of-cone file exists in index with SKIP_WORKTREE bit
+ mv: decouple if/else-if checks using goto
+ mv: update sparsity after moving from out-of-cone to in-cone
+ t1092: mv directory from out-of-cone to in-cone
+ t7002: add tests for moving out-of-cone file/directory
"git mv A B" in a sparsely populated working tree can be asked to
move a path between directories that are "in cone" (i.e. expected
to be materialized in the working tree) and "out of cone"
(i.e. expected to be hidden). The handling of such cases has been
improved.
Will merge to 'master'.
source: <20220630023737.473690-1-shaoxuan.yuan02@gmail.com>
* ab/squelch-empty-fsync-traces (2022-06-30) 1 commit
. trace2: don't include "fsync" events in all trace2 logs
Omit fsync-related trace2 entries when their values are all zero.
Breaks tests in hx/unpack-streaming with an interesting interaction.
source: <patch-v2-1.1-a1fc37de947-20220630T084607Z-avarab@gmail.com>
* cl/grep-max-count (2022-06-22) 1 commit
(merged to 'next' on 2022-07-08 at 646199ab4c)
+ grep: add --max-count command line option
"git grep -m<max-hits>" is a way to limit the hits shown per file.
Will merge to 'master'.
source: <pull.1278.v4.git.git.1655927252899.gitgitgadget@gmail.com>
* tk/rev-parse-doc-clarify-at-u (2022-06-23) 1 commit
(merged to 'next' on 2022-07-08 at 1075452f32)
+ rev-parse: documentation adjustment - mention remote tracking with @{u}
Doc update.
Will merge to 'master'.
source: <pull.1265.v2.git.1655960512385.gitgitgadget@gmail.com>
* en/merge-tree (2022-06-22) 17 commits
(merged to 'next' on 2022-07-08 at a29b4896ab)
+ git-merge-tree.txt: add a section on potentional usage mistakes
+ merge-tree: add a --allow-unrelated-histories flag
+ merge-tree: allow `ls-files -u` style info to be NUL terminated
+ merge-ort: optionally produce machine-readable output
+ merge-ort: store more specific conflict information
+ merge-ort: make `path_messages` a strmap to a string_list
+ merge-ort: store messages in a list, not in a single strbuf
+ merge-tree: provide easy access to `ls-files -u` style info
+ merge-tree: provide a list of which files have conflicts
+ merge-ort: remove command-line-centric submodule message from merge-ort
+ merge-ort: provide a merge_get_conflicted_files() helper function
+ merge-tree: support including merge messages in output
+ merge-ort: split out a separate display_update_messages() function
+ merge-tree: implement real merges
+ merge-tree: add option parsing and initial shell for real merge function
+ merge-tree: move logic for existing merge into new function
+ merge-tree: rename merge_trees() to trivial_merge_trees()
A new command is introduced that takes two commits and computes a
tree that would be contained in the resulting merge commit, if the
histories leading to these two commits were to be merged, and is
added as a new mode of "git merge-tree" subcommand.
Will merge to 'master'.
source: <pull.1122.v7.git.1655511660.gitgitgadget@gmail.com>
* dr/i18n-die-warn-error-usage (2022-06-21) 1 commit
(merged to 'next' on 2022-07-08 at 6f639750a1)
+ i18n: mark message helpers prefix for translation
Give _() markings to fatal/warning/usage: labels that are shown in
front of these messages.
Will merge to 'master'.
source: <pull.1279.v2.git.git.1655819877758.gitgitgadget@gmail.com>
* ds/t5510-brokequote (2022-06-21) 1 commit
(merged to 'next' on 2022-07-06 at 2776bed385)
+ t5510: replace 'origin' with URL more carefully
Test fix.
Will merge to 'master'.
source: <484a330e-0902-6e1b-8189-63c72dcea494@github.com>
* en/merge-restore-to-pristine (2022-06-21) 6 commits
- merge: do not exit restore_state() prematurely
- merge: ensure we can actually restore pre-merge state
- merge: make restore_state() restore staged state too
- merge: fix save_state() to work when there are racy-dirty files
- merge: remove unused variable
- t6424: make sure a failed merge preserves local changes
When "git merge" finds that it cannot perform a merge, it should
restore the working tree to the state before the command was
initiated, but in some corner cases it didn't.
Needs review.
source: <pull.1231.v2.git.1655621424.gitgitgadget@gmail.com>
* tk/apply-case-insensitive (2022-06-21) 3 commits
- apply: support case-only renames in case-insensitive filesystems
- reset: new failing test for reset of case-insensitive duplicate in index
- t4141: test "git apply" with core.ignorecase
"git apply" barfed on a patch that makes a case-only rename on a
case-insensitive filesystem.
Needs review.
source: <pull.1257.v2.git.1655655027.gitgitgadget@gmail.com>
* zh/ls-files-format (2022-07-11) 1 commit
- ls-files: introduce "--format" option
"git ls-files" learns the "--format" option to tweak its output.
Getting closer to finish?
cf. <xmqqleszl2p0.fsf@gitster.g>
source: <pull.1262.v6.git.1657558435532.gitgitgadget@gmail.com>
* ab/test-quoting-fix (2022-06-30) 3 commits
(merged to 'next' on 2022-07-06 at 0aa78fd9db)
+ config tests: fix harmless but broken "rm -r" cleanup
+ test-lib.sh: fix prepend_var() quoting issue
+ tests: add missing double quotes to included library paths
Fixes for tests when the source directory has unusual characters in
its path, e.g. whitespaces, double-quotes, etc.
Will merge to 'master'.
source: <cover-v2-0.3-00000000000-20220630T101646Z-avarab@gmail.com>
* en/merge-dual-dir-renames-fix (2022-07-06) 5 commits
(merged to 'next' on 2022-07-11 at 5f8dadf87b)
+ merge-ort: fix issue with dual rename and add/add conflict
+ merge-ort: shuffle the computation and cleanup of potential collisions
+ merge-ort: make a separate function for freeing struct collisions
+ merge-ort: small cleanups of check_for_directory_rename
+ t6423: add tests of dual directory rename plus add/add conflict
Fixes a long-standing corner case bug around directory renames in
the merge-ort strategy.
Will merge to 'master'.
source: <pull.1268.v4.git.1656984823.gitgitgadget@gmail.com>
* zk/push-use-bitmaps (2022-06-17) 1 commit
(merged to 'next' on 2022-07-08 at 8aa1f94fad)
+ send-pack.c: add config push.useBitmaps
"git push" sometimes perform poorly when reachability bitmaps are
used, even in a repository where other operations are helped by
bitmaps. The push.useBitmaps configuration variable is introduced
to allow disabling use of reachability bitmaps only for "git push".
Will merge to 'master'.
source: <pull.1263.v4.git.1655492779228.gitgitgadget@gmail.com>
* jk/remote-show-with-negative-refspecs (2022-06-17) 1 commit
(merged to 'next' on 2022-07-08 at d4e49ad22a)
+ remote: handle negative refspecs in git remote show
(this branch is used by jk/t5505-restructure.)
"git remote show [-n] frotz" now pays attention to negative
pathspecs.
Will merge to 'master'.
source: <20220617002036.1577-2-jacob.keller@gmail.com>
* js/commit-graph-parsing-without-repo-settings (2022-06-15) 1 commit
- commit-graph: refactor to avoid prepare_repo_settings
Expecting a reroll.
source: <9b56496b0809cc8a25af877ea97042e2cb7f2af6.1655246092.git.steadmon@google.com>
* ro/mktree-allow-missing-fix (2022-06-21) 1 commit
(merged to 'next' on 2022-07-08 at 599ed6fb84)
+ mktree: do not check type of remote objects
"git mktree --missing" lazily fetched objects that are missing from
the local object store, which was totally unnecessary for the purpose
of creating the tree object(s) from its input.
Will merge to 'master'.
source: <748f39a9-65aa-2110-cf92-7ddf81b5f507@roku.com>
* jt/connected-show-missing-from-which-side (2022-06-10) 1 commit
- fetch,fetch-pack: clarify connectivity check error
We may find an object missing after a "git fetch" stores the
objects it obtained from the other side, but it is not necessarily
because the remote failed to send necessary objects. Reword the
messages in an attempt to help users explore other possibilities
when they hit this error.
Expecting a reroll.
source: <20220610195247.1177549-1-jonathantanmy@google.com>
* ab/submodule-cleanup (2022-06-28) 12 commits
(merged to 'next' on 2022-07-08 at 6f3886aa03)
+ git-sh-setup.sh: remove "say" function, change last users
+ git-submodule.sh: use "$quiet", not "$GIT_QUIET"
+ submodule--helper: eliminate internal "--update" option
+ submodule--helper: understand --checkout, --merge and --rebase synonyms
+ submodule--helper: report "submodule" as our name in some "-h" output
+ submodule--helper: rename "absorb-git-dirs" to "absorbgitdirs"
+ submodule update: remove "-v" option
+ submodule--helper: have --require-init imply --init
+ git-submodule.sh: remove unused top-level "--branch" argument
+ git-submodule.sh: make the "$cached" variable a boolean
+ git-submodule.sh: remove unused $prefix variable
+ git-submodule.sh: remove unused sanitize_submodule_env()
(this branch is used by gc/submodule-use-super-prefix.)
Further preparation to turn git-submodule.sh into a builtin.
Will merge to 'master'.
source: <cover-v4-00.12-00000000000-20220628T095914Z-avarab@gmail.com>
* jc/resolve-undo (2022-07-11) 2 commits
- fsck: do not dereference NULL while checking resolve-undo data
(merged to 'next' on 2022-06-15 at c195e5a2d9)
+ revision: mark blobs needed for resolve-undo as reachable
The resolve-undo information in the index was not protected against
GC, which has been corrected.
Will merge to 'next'.
source: <xmqqfskdieqz.fsf@gitster.g>
* ab/build-gitweb (2022-06-28) 8 commits
(merged to 'next' on 2022-07-11 at 731e354ff0)
+ gitweb/Makefile: add a "NO_GITWEB" parameter
+ Makefile: build 'gitweb' in the default target
+ gitweb/Makefile: include in top-level Makefile
+ gitweb: remove "test" and "test-installed" targets
+ gitweb/Makefile: prepare to merge into top-level Makefile
+ gitweb/Makefile: clear up and de-duplicate the gitweb.{css,js} vars
+ gitweb/Makefile: add a $(GITWEB_ALL) variable
+ gitweb/Makefile: define all .PHONY prerequisites inline
Teach "make all" to build gitweb as well.
Will merge to 'master'.
source: <cover-v3-0.8-00000000000-20220628T100936Z-avarab@gmail.com>
* ab/test-without-templates (2022-06-06) 7 commits
(merged to 'next' on 2022-07-11 at afab6c1918)
+ tests: don't assume a .git/info for .git/info/sparse-checkout
+ tests: don't assume a .git/info for .git/info/exclude
+ tests: don't assume a .git/info for .git/info/refs
+ tests: don't assume a .git/info for .git/info/attributes
+ tests: don't assume a .git/info for .git/info/grafts
+ tests: don't depend on template-created .git/branches
+ t0008: don't rely on default ".git/info/exclude"
Tweak tests so that they still work when the "git init" template
did not create .git/info directory.
Will merge to 'master'.
source: <cover-v2-0.7-00000000000-20220603T110506Z-avarab@gmail.com>
* hx/unpack-streaming (2022-06-13) 6 commits
(merged to 'next' on 2022-07-08 at 4eb375ec2f)
+ unpack-objects: use stream_loose_object() to unpack large objects
+ core doc: modernize core.bigFileThreshold documentation
+ object-file.c: add "stream_loose_object()" to handle large object
+ object-file.c: factor out deflate part of write_loose_object()
+ object-file.c: refactor write_loose_object() to several steps
+ unpack-objects: low memory footprint for get_data() in dry_run mode
Allow large objects read from a packstream to be streamed into a
loose object file straight, without having to keep it in-core as a
whole.
Will merge to 'master'.
source: <cover.1654914555.git.chiyutianyi@gmail.com>
* tb/show-ref-count (2022-06-06) 2 commits
- builtin/show-ref.c: limit output with `--count`
- builtin/show-ref.c: rename `found_match` to `matches_nr`
"git show-ref" learned to stop after emitting N refs with the new
"--count=N" option.
Expecting a reroll.
cf. <xmqqczfl4ce1.fsf@gitster.g>
source: <cover.1654552560.git.me@ttaylorr.com>
* ds/bundle-uri-more (2022-06-06) 6 commits
- fetch: add 'refs/bundle/' to log.excludeDecoration
- bundle-uri: add support for http(s):// and file://
- fetch: add --bundle-uri option
- bundle-uri: create basic file-copy logic
- remote-curl: add 'get' capability
- docs: document bundle URI standard
The "bundle URI" topic.
Needs review.
source: <pull.1248.git.1654545325.gitgitgadget@gmail.com>
* js/bisect-in-c (2022-06-27) 16 commits
- bisect: no longer try to clean up left-over `.git/head-name` files
- bisect: remove Cogito-related code
- Turn `git bisect` into a full built-in
- bisect: move even the command-line parsing to `bisect--helper`
- bisect: teach the `bisect--helper` command to show the correct usage strings
- bisect--helper: return only correct exit codes in `cmd_*()`
- bisect--helper: move the `BISECT_STATE` case to the end
- bisect--helper: make `--bisect-state` optional
- bisect--helper: align the sub-command order with git-bisect.sh
- bisect--helper: using `--bisect-state` without an argument is a bug
- bisect--helper: really retire `--bisect-autostart`
- bisect--helper: really retire --bisect-next-check
- bisect--helper: retire the --no-log option
- bisect: avoid double-quoting when printing the failed command
- bisect run: fix the error message
- bisect: verify that a bogus option won't try to start a bisection
Final bits of "git bisect.sh" have been rewritten in C.
Expecting a (hopefully final) reroll.
cf. <20627.86ilolhnnn.gmgdl@evledraar.gmail.com>
source: <pull.1132.v4.git.1656354677.gitgitgadget@gmail.com>
* gc/bare-repo-discovery (2022-07-07) 5 commits
- setup.c: create `discovery.bare`
- safe.directory: use git_protected_config()
- config: learn `git_protected_config()`
- Documentation: define protected configuration
- Documentation/git-config.txt: add SCOPES section
Introduce a discovery.barerepository configuration variable that
allows users to forbid discovery of bare repositories.
Will merge to 'next'?
source: <pull.1261.v7.git.git.1657234914.gitgitgadget@gmail.com>
* gg/worktree-from-the-above (2022-06-21) 2 commits
(merged to 'next' on 2022-07-08 at fa0e71ba39)
+ dir: minor refactoring / clean-up
+ dir: traverse into repository
In a non-bare repository, the behavior of Git when the
core.worktree configuration variable points at a directory that has
a repository as its subdirectory, regressed in Git 2.27 days.
Will merge to 'master'.
source: <20220616234433.225-1-gg.oss@outlook.com>
source: <20220616231956.154-1-gg.oss@outlook.com>
--------------------------------------------------
[Discarded]
* ar/send-email-confirm-by-default (2022-04-22) 1 commit
. send-email: always confirm by default
"git send-email" is changed so that by default it asks for
confirmation before sending each message out.
Discarded.
I wanted to like this, and had it in the version of Git I use
myself for daily work, but the prompting turned out to be somewhat
distracting.
source: <20220422083629.1404989-1-hi@alyssa.is>
^ permalink raw reply [relevance 3%]
* What's cooking in git.git (Jul 2022, #02; Fri, 8)
@ 2022-07-09 20:36 3% Junio C Hamano
0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2022-07-09 20:36 UTC (permalink / raw)
To: git
Here are the topics that have been cooking in my tree. Commits
prefixed with '+' are in 'next' (being in 'next' is a sign that a
topic is stable enough to be used and are candidate to be in a
future release). Commits prefixed with '-' are only in 'seen',
and aren't considered "accepted" at all.
Copies of the source code to Git live in many repositories, and the
following is a list of the ones I push into or their mirrors. Some
repositories have only a subset of branches.
With maint, master, next, seen, todo:
git://git.kernel.org/pub/scm/git/git.git/
git://repo.or.cz/alt-git.git/
https://kernel.googlesource.com/pub/scm/git/git/
https://github.com/git/git/
https://gitlab.com/git-vcs/git/
With all the integration branches and topics broken out:
https://github.com/gitster/git/
Even though the preformatted documentation in HTML and man format
are not sources, they are published in these repositories for
convenience (replace "htmldocs" with "manpages" for the manual
pages):
git://git.kernel.org/pub/scm/git/git-htmldocs.git/
https://github.com/gitster/git-htmldocs.git/
Release tarballs are available at:
https://www.kernel.org/pub/software/scm/git/
--------------------------------------------------
[New Topics]
* ab/cocci-unused (2022-07-06) 6 commits
- cocci: generalize "unused" rule to cover more than "strbuf"
- cocci: add and apply a rule to find "unused" strbufs
- cocci: have "coccicheck{,-pending}" depend on "coccicheck-test"
- cocci: add a "coccicheck-test" target and test *.cocci rules
- Makefile & .gitignore: ignore & clean "git.res", not "*.res"
- Makefile: remove mandatory "spatch" arguments from SPATCH_FLAGS
Add Coccinelle rules to detect the pattern of initializing and then
finalizing a structure without using it in between at all, which
happens after code restructuring and the compilers fail to
recognize as an unused varilable.
Will merge to 'next'.
source: <cover-v4-0.6-00000000000-20220705T134033Z-avarab@gmail.com>
* jk/clone-unborn-confusion (2022-07-07) 3 commits
- clone: use remote branch if it matches default HEAD
- clone: propagate empty remote HEAD even with other branches
- clone: drop extra newline from warning message
"git clone" from a repository with some ref whose HEAD is unborn
did not set the HEAD in the resulting repository correctly, which
has been corrected.
Will merge to 'next'?
source: <YsdyLS4UFzj0j/wB@coredump.intra.peff.net>
* ac/bitmap-lookup-table (2022-07-06) 6 commits
- p5310-pack-bitmaps.sh: remove pack.writeReverseIndex
- bitmap-lookup-table: add performance tests for lookup table
- pack-bitmap: prepare to read lookup table extension
- pack-bitmap-write: learn pack.writeBitmapLookupTable and add tests
- pack-bitmap-write.c: write lookup table extension
- Documentation/technical: describe bitmap lookup table extension
The pack bitmap file gained a bitmap-lookup table to speed up
locating the necessary bitmap for a given commit.
Will merge to 'next'?
source: <pull.1266.v3.git.1656924376.gitgitgadget@gmail.com>
* bc/nettle-sha256 (2022-07-07) 1 commit
- sha256: add support for Nettle
Support for libnettle as SHA256 implementation has been added.
Expecting a reroll.
cf. <YsTgmv+h2SFFFMga@tapette.crustytoothpaste.net>
source: <20220705230518.713218-1-sandals@crustytoothpaste.net>
* jc/builtin-mv-move-array (2022-07-06) 1 commit
- builtin/mv.c: use the MOVE_ARRAY() macro instead of memmove()
Apply Coccinelle rule to turn raw memmove() into MOVE_ARRAY() cpp
macro, which would improve maintainability and readability.
Will merge to 'next'?
source: <xmqqy1x531vp.fsf@gitster.g>
* jd/gpg-interface-trust-level-string (2022-07-08) 1 commit
- gpg-interface: add function for converting trust level to string
The code to convert between GPG trust level strings and internal
constants we use to represent them have been cleaned up.
Will merge to 'next'.
source: <pull.1281.v2.git.1657279447515.gitgitgadget@gmail.com>
* kk/p4-client-name-encoding-fix (2022-07-08) 1 commit
- git-p4: fix bug with encoding of p4 client name
"git p4" did not handle non-ASCII client name well, which has been
corrected.
Will merge to 'next'.
source: <pull.1285.git.git.1657267260405.gitgitgadget@gmail.com>
* sa/cat-file-mailmap (2022-07-07) 5 commits
- SQUASH???
- cat-file: add mailmap support
- ident: rename commit_rewrite_person() to apply_mailmap_to_header()
- ident: move commit_rewrite_person() to ident.c
- revision: improve commit_rewrite_person()
source: <20220707161554.6900-1-siddharthasthana31@gmail.com>
* fr/vimdiff-layout-fix (2022-07-08) 1 commit
- vimdiff: make layout engine more robust against user vim settings
source: <20220708181024.45839-1-greenfoo@u92.eu>
--------------------------------------------------
[Graduated to 'master']
* js/add-i-delete (2022-06-28) 1 commit
(merged to 'next' on 2022-06-28 at 8ac04bfd24)
+ add --interactive: allow `update` to stage deleted files
Rewrite of "git add -i" in C that appeared in Git 2.25 didn't
correctly record a removed file to the index, which was fixed.
source: <pull.1273.git.1656454964378.gitgitgadget@gmail.com>
--------------------------------------------------
[Stalled]
* ll/curl-accept-language (2022-06-13) 2 commits
- PREP??? give initializer to rpc_state
- remote-curl: send Accept-Language header to server
source: <pull.1251.v3.git.1655054421697.gitgitgadget@gmail.com>
* bc/stash-export (2022-04-08) 4 commits
- builtin/stash: provide a way to import stashes from a ref
- builtin/stash: provide a way to export stashes to a ref
- builtin/stash: factor out revision parsing into a function
- object-name: make get_oid quietly return an error
A mechanism to export and import stash entries to and from a normal
commit to transfer it across repositories has been introduced.
Expecting a reroll.
cf. <YnL2d4Vr9Vr7W4Hj@camp.crustytoothpaste.net>
source: <20220407215352.3491567-1-sandals@crustytoothpaste.net>
* cw/remote-object-info (2022-05-06) 11 commits
- SQUASH??? coccicheck
- SQUASH??? ensure that coccicheck is happy
- SQUASH??? compilation fix
- cat-file: add --batch-command remote-object-info command
- cat-file: move parse_cmd and DEFAULT_FORMAT up
- transport: add object-info fallback to fetch
- transport: add client side capability to request object-info
- object-info: send attribute packet regardless of object ids
- object-store: add function to free object_info contents
- fetch-pack: move fetch default settings
- fetch-pack: refactor packet writing
A client component to talk with the object-info endpoint.
Expecting a reroll.
source: <20220502170904.2770649-1-calvinwan@google.com>
--------------------------------------------------
[Cooking]
* ds/git-rebase-doc-markup (2022-06-30) 1 commit
(merged to 'next' on 2022-07-08 at 24a0b80b71)
+ git-rebase.txt: use back-ticks consistently
References to commands-to-be-typed-literally in "git rebase"
documentation mark-up have been corrected.
Will merge to 'master'.
source: <pull.1270.v3.git.1656508868146.gitgitgadget@gmail.com>
* ds/rebase-update-ref (2022-06-28) 8 commits
- rebase: add rebase.updateRefs config option
- rebase: update refs from 'update-ref' commands
- rebase: add --update-refs option
- sequencer: add update-ref command
- sequencer: define array with enum values
- rebase-interactive: update 'merge' description
- branch: consider refs under 'update-refs'
- t2407: test branches currently using apply backend
(this branch uses ds/branch-checked-out.)
"git rebase -i" learns to update branches whose tip appear in the
rebased range.
Expecting a reroll.
cf. <15631ea2-6722-fd24-c8a6-0cee638b0602@github.com>
source: <pull.1247.v3.git.1656422759.gitgitgadget@gmail.com>
* ds/vscode-settings (2022-06-27) 1 commit
(merged to 'next' on 2022-07-02 at fcbd2e7aca)
+ vscode: improve tab size and wrapping
Will merge to 'master'.
source: <pull.1271.git.1656354587496.gitgitgadget@gmail.com>
* tb/pack-objects-remove-pahole-comment (2022-06-28) 1 commit
(merged to 'next' on 2022-07-06 at d7494fbdef)
+ pack-objects.h: remove outdated pahole results
Comment fix.
Will merge to 'master'.
source: <1379af2e9d271b501ef3942398e7f159a9c77973.1656440978.git.me@ttaylorr.com>
* ab/leakfix (2022-07-01) 11 commits
- pull: fix a "struct oid_array" memory leak
- cat-file: fix a common "struct object_context" memory leak
- gc: fix a memory leak
- checkout: avoid "struct unpack_trees_options" leak
- merge-file: fix memory leaks on error path
- merge-file: refactor for subsequent memory leak fix
- cat-file: fix a memory leak in --batch-command mode
- revert: free "struct replay_opts" members
- submodule.c: free() memory from xgetcwd()
- clone: fix memory leak in wanted_peer_refs()
- check-ref-format: fix trivial memory leak
Plug various memory leaks.
Will merge to 'next'.
source: <cover-v2-00.11-00000000000-20220701T104017Z-avarab@gmail.com>
* ab/test-tool-leakfix (2022-07-01) 9 commits
- test-tool delta: fix a memory leak
- test-tool ref-store: fix a memory leak
- test-tool bloom: fix memory leaks
- test-tool json-writer: fix memory leaks
- test-tool regex: call regfree(), fix memory leaks
- test-tool urlmatch-normalization: fix a memory leak
- test-tool {dump,scrap}-cache-tree: fix memory leaks
- test-tool path-utils: fix a memory leak
- test-tool test-hash: fix a memory leak
Plug various memory leaks in test-tool commands.
Will merge to 'next'.
source: <cover-v2-0.9-00000000000-20220701T103503Z-avarab@gmail.com>
* en/t6429-test-must-be-empty-fix (2022-06-30) 1 commit
(merged to 'next' on 2022-07-06 at 627c51773c)
+ t6429: fix use of non-existent function
A test fix.
Will merge to 'master'.
source: <pull.1276.git.1656652799863.gitgitgadget@gmail.com>
* gc/submodule-use-super-prefix (2022-06-30) 8 commits
- submodule--helper: remove display path helper
- submodule--helper update: use --super-prefix
- submodule--helper: remove unused SUPPORT_SUPER_PREFIX flags
- submodule--helper: use correct display path helper
- submodule--helper: don't recreate recursive prefix
- submodule--helper update: use display path helper
- submodule--helper tests: add missing "display path" coverage
- Merge branch 'ab/submodule-cleanup' into gc/submodule-use-super-prefix
(this branch uses ab/submodule-cleanup.)
Another step to rewrite more parts of "git submodule" in C.
Will merge to 'next'.
source: <20220701021157.88858-1-chooglen@google.com>
* hx/lookup-commit-in-graph-fix (2022-06-30) 1 commit
(merged to 'next' on 2022-07-08 at cef32db0b6)
+ commit-graph.c: no lazy fetch in lookup_commit_in_graph()
A corner case bug where lazily fetching objects from a promisor
remote resulted in infinite recursion has been corrected.
Will merge to 'master'.
source: <96d4bb71505d87ed501c058bbd89bfc13d08b24a.1656593279.git.hanxin.hx@bytedance.com>
* ll/ls-files-tests-update (2022-07-06) 1 commit
(merged to 'next' on 2022-07-06 at 444d1eabd0)
+ ls-files: update test style
Test update.
Will merge to 'master'.
source: <pull.1269.v6.git.1656863349926.gitgitgadget@gmail.com>
* pw/xdiff-alloc (2022-07-08) 4 commits
- xdiff: introduce XDL_ALLOC_GROW()
- xdiff: introduce XDL_CALLOC_ARRAY()
- xdiff: introduce xdl_calloc
- xdiff: introduce XDL_ALLOC_ARRAY()
Add a level of redirection to array allocation API in xdiff part,
to make it easier to share with the libgit2 project.
Will merge to 'next'?
source: <pull.1272.v2.git.1657297519.gitgitgadget@gmail.com>
* sy/mv-out-of-cone (2022-07-01) 8 commits
(merged to 'next' on 2022-07-08 at 654970fdb7)
+ mv: add check_dir_in_index() and solve general dir check issue
+ mv: use flags mode for update_mode
+ mv: check if <destination> exists in index to handle overwriting
+ mv: check if out-of-cone file exists in index with SKIP_WORKTREE bit
+ mv: decouple if/else-if checks using goto
+ mv: update sparsity after moving from out-of-cone to in-cone
+ t1092: mv directory from out-of-cone to in-cone
+ t7002: add tests for moving out-of-cone file/directory
"git mv A B" in a sparsely populated working tree can be asked to
move a path between directories that are "in cone" (i.e. expected
to be materialized in the working tree) and "out of cone"
(i.e. expected to be hidden). The handling of such cases has been
improved.
Will merge to 'master'.
source: <20220630023737.473690-1-shaoxuan.yuan02@gmail.com>
* ab/squelch-empty-fsync-traces (2022-06-30) 1 commit
. trace2: don't include "fsync" events in all trace2 logs
Omit fsync-related trace2 entries when their values are all zero.
Breaks tests in hx/unpack-streaming with an interesting interaction.
source: <patch-v2-1.1-a1fc37de947-20220630T084607Z-avarab@gmail.com>
* cl/grep-max-count (2022-06-22) 1 commit
(merged to 'next' on 2022-07-08 at 646199ab4c)
+ grep: add --max-count command line option
"git grep -m<max-hits>" is a way to limit the hits shown per file.
Will merge to 'master'.
source: <pull.1278.v4.git.git.1655927252899.gitgitgadget@gmail.com>
* jk/revisions-doc-markup-fix (2022-06-22) 1 commit
(merged to 'next' on 2022-07-02 at e25dbe8cfb)
+ revisions.txt: escape "..." to avoid asciidoc horizontal ellipsis
Documentation mark-up fix.
Will merge to 'master'.
source: <YrOmsA04FZae89be@coredump.intra.peff.net>
* tk/rev-parse-doc-clarify-at-u (2022-06-23) 1 commit
(merged to 'next' on 2022-07-08 at 1075452f32)
+ rev-parse: documentation adjustment - mention remote tracking with @{u}
Doc update.
Will merge to 'master'.
source: <pull.1265.v2.git.1655960512385.gitgitgadget@gmail.com>
* en/merge-tree (2022-06-22) 17 commits
(merged to 'next' on 2022-07-08 at a29b4896ab)
+ git-merge-tree.txt: add a section on potentional usage mistakes
+ merge-tree: add a --allow-unrelated-histories flag
+ merge-tree: allow `ls-files -u` style info to be NUL terminated
+ merge-ort: optionally produce machine-readable output
+ merge-ort: store more specific conflict information
+ merge-ort: make `path_messages` a strmap to a string_list
+ merge-ort: store messages in a list, not in a single strbuf
+ merge-tree: provide easy access to `ls-files -u` style info
+ merge-tree: provide a list of which files have conflicts
+ merge-ort: remove command-line-centric submodule message from merge-ort
+ merge-ort: provide a merge_get_conflicted_files() helper function
+ merge-tree: support including merge messages in output
+ merge-ort: split out a separate display_update_messages() function
+ merge-tree: implement real merges
+ merge-tree: add option parsing and initial shell for real merge function
+ merge-tree: move logic for existing merge into new function
+ merge-tree: rename merge_trees() to trivial_merge_trees()
A new command is introduced that takes two commits and computes a
tree that would be contained in the resulting merge commit, if the
histories leading to these two commits were to be merged, and is
added as a new mode of "git merge-tree" subcommand.
Will merge to 'master'.
source: <pull.1122.v7.git.1655511660.gitgitgadget@gmail.com>
* dr/i18n-die-warn-error-usage (2022-06-21) 1 commit
(merged to 'next' on 2022-07-08 at 6f639750a1)
+ i18n: mark message helpers prefix for translation
Give _() markings to fatal/warning/usage: labels that are shown in
front of these messages.
Will merge to 'master'.
source: <pull.1279.v2.git.git.1655819877758.gitgitgadget@gmail.com>
* ds/t5510-brokequote (2022-06-21) 1 commit
(merged to 'next' on 2022-07-06 at 2776bed385)
+ t5510: replace 'origin' with URL more carefully
Test fix.
Will merge to 'master'.
source: <484a330e-0902-6e1b-8189-63c72dcea494@github.com>
* en/merge-restore-to-pristine (2022-06-21) 6 commits
- merge: do not exit restore_state() prematurely
- merge: ensure we can actually restore pre-merge state
- merge: make restore_state() restore staged state too
- merge: fix save_state() to work when there are racy-dirty files
- merge: remove unused variable
- t6424: make sure a failed merge preserves local changes
When "git merge" finds that it cannot perform a merge, it should
restore the working tree to the state before the command was
initiated, but in some corner cases it didn't.
Needs review.
source: <pull.1231.v2.git.1655621424.gitgitgadget@gmail.com>
* rs/combine-diff-with-incompatible-options (2022-06-21) 2 commits
(merged to 'next' on 2022-07-02 at 0fe8b80a3e)
+ combine-diff: abort if --output is given
+ combine-diff: abort if --ignore-matching-lines is given
Certain diff options are currently ignored when combined-diff is
shown; mark them as incompatible with the feature.
Will merge to 'master'.
source: <220524.86v8tuvfl1.gmgdl@evledraar.gmail.com>
* tk/apply-case-insensitive (2022-06-21) 3 commits
- apply: support case-only renames in case-insensitive filesystems
- reset: new failing test for reset of case-insensitive duplicate in index
- t4141: test "git apply" with core.ignorecase
"git apply" barfed on a patch that makes a case-only rename on a
case-insensitive filesystem.
Needs review.
source: <pull.1257.v2.git.1655655027.gitgitgadget@gmail.com>
* zh/ls-files-format (2022-07-06) 1 commit
- ls-files: introduce "--format" option
"git ls-files" learns the "--format" option to tweak its output.
Getting closer to finish?
cf. <220705.86sfng9c5a.gmgdl@evledraar.gmail.com>
source: <pull.1262.v5.git.1657002760815.gitgitgadget@gmail.com>
* ab/test-quoting-fix (2022-06-30) 3 commits
(merged to 'next' on 2022-07-06 at 0aa78fd9db)
+ config tests: fix harmless but broken "rm -r" cleanup
+ test-lib.sh: fix prepend_var() quoting issue
+ tests: add missing double quotes to included library paths
Fixes for tests when the source directory has unusual characters in
its path, e.g. whitespaces, double-quotes, etc.
Will merge to 'master'.
source: <cover-v2-0.3-00000000000-20220630T101646Z-avarab@gmail.com>
* en/merge-dual-dir-renames-fix (2022-07-06) 5 commits
- merge-ort: fix issue with dual rename and add/add conflict
- merge-ort: shuffle the computation and cleanup of potential collisions
- merge-ort: make a separate function for freeing struct collisions
- merge-ort: small cleanups of check_for_directory_rename
- t6423: add tests of dual directory rename plus add/add conflict
Fixes a long-standing corner case bug around directory renames in
the merge-ort strategy.
Will merge to 'next'.
source: <pull.1268.v4.git.1656984823.gitgitgadget@gmail.com>
* cr/setup-bug-typo (2022-06-17) 1 commit
(merged to 'next' on 2022-06-17 at 8834ffe0ab)
+ setup: fix function name in a BUG() message
Typofix in a BUG() message.
Will cook in 'next'.
source: <pull.1255.git.1654782920256.gitgitgadget@gmail.com>
* zk/push-use-bitmaps (2022-06-17) 1 commit
(merged to 'next' on 2022-07-08 at 8aa1f94fad)
+ send-pack.c: add config push.useBitmaps
"git push" sometimes perform poorly when reachability bitmaps are
used, even in a repository where other operations are helped by
bitmaps. The push.useBitmaps configuration variable is introduced
to allow disabling use of reachability bitmaps only for "git push".
Will merge to 'master'.
source: <pull.1263.v4.git.1655492779228.gitgitgadget@gmail.com>
* jk/remote-show-with-negative-refspecs (2022-06-17) 1 commit
(merged to 'next' on 2022-07-08 at d4e49ad22a)
+ remote: handle negative refspecs in git remote show
(this branch is used by jk/t5505-restructure.)
"git remote show [-n] frotz" now pays attention to negative
pathspecs.
Will merge to 'master'.
source: <20220617002036.1577-2-jacob.keller@gmail.com>
* js/commit-graph-parsing-without-repo-settings (2022-06-15) 1 commit
- commit-graph: refactor to avoid prepare_repo_settings
Expecting a reroll.
source: <9b56496b0809cc8a25af877ea97042e2cb7f2af6.1655246092.git.steadmon@google.com>
* jk/optim-promisor-object-enumeration (2022-06-16) 1 commit
(merged to 'next' on 2022-06-16 at ce0712a74c)
+ is_promisor_object(): walk promisor packs in pack-order
Collection of what is referenced by objects in promisor packs have
been optimized to inspect these objects in the in-pack order.
Will cook in 'next'.
source: <YqrTsbXbEjx0Pabn@coredump.intra.peff.net>
* ro/mktree-allow-missing-fix (2022-06-21) 1 commit
(merged to 'next' on 2022-07-08 at 599ed6fb84)
+ mktree: do not check type of remote objects
"git mktree --missing" lazily fetched objects that are missing from
the local object store, which was totally unnecessary for the purpose
of creating the tree object(s) from its input.
Will merge to 'master'.
source: <748f39a9-65aa-2110-cf92-7ddf81b5f507@roku.com>
* pb/diff-doc-raw-format (2022-06-13) 3 commits
(merged to 'next' on 2022-07-02 at 198480cbc6)
+ diff-index.txt: update raw output format in examples
+ diff-format.txt: correct misleading wording
+ diff-format.txt: dst can be 0* SHA-1 when path is deleted, too
Update "git diff/log --raw" format documentation.
Will merge to 'master'.
source: <pull.1259.git.1655123383.gitgitgadget@gmail.com>
* rs/archive-with-internal-gzip (2022-06-15) 6 commits
(merged to 'next' on 2022-06-17 at ab5af6acd1)
+ archive-tar: use internal gzip by default
+ archive-tar: use OS_CODE 3 (Unix) for internal gzip
+ archive-tar: add internal gzip implementation
+ archive-tar: factor out write_block()
+ archive: rename archiver data field to filter_command
+ archive: update format documentation
Teach "git archive" to (optionally and then by default) avoid
spawning an external "gzip" process when creating ".tar.gz" (and
".tgz") archives.
Will cook in 'next'.
source: <9df761c3-355a-ede9-7971-b32687fe9abb@web.de>
* ds/branch-checked-out (2022-06-21) 7 commits
(merged to 'next' on 2022-06-21 at e42bc4566f)
+ branch: drop unused worktrees variable
+ fetch: stop passing around unused worktrees variable
(merged to 'next' on 2022-06-17 at c881874257)
+ branch: fix branch_checked_out() leaks
+ branch: use branch_checked_out() when deleting refs
+ fetch: use new branch_checked_out() and add tests
+ branch: check for bisects and rebases
+ branch: add branch_checked_out() helper
(this branch is used by ds/rebase-update-ref.)
Introduce a helper to see if a branch is already being worked on
(hence should not be newly checked out in a working tree), which
performs much better than the existing find_shared_symref() to
replace many uses of the latter.
Will cook in 'next'.
source: <pull.1254.v2.git.1655234853.gitgitgadget@gmail.com>
* jt/connected-show-missing-from-which-side (2022-06-10) 1 commit
- fetch,fetch-pack: clarify connectivity check error
We may find an object missing after a "git fetch" stores the
objects it obtained from the other side, but it is not necessarily
because the remote failed to send necessary objects. Reword the
messages in an attempt to help users explore other possibilities
when they hit this error.
Expecting a reroll.
source: <20220610195247.1177549-1-jonathantanmy@google.com>
* ab/submodule-cleanup (2022-06-28) 12 commits
(merged to 'next' on 2022-07-08 at 6f3886aa03)
+ git-sh-setup.sh: remove "say" function, change last users
+ git-submodule.sh: use "$quiet", not "$GIT_QUIET"
+ submodule--helper: eliminate internal "--update" option
+ submodule--helper: understand --checkout, --merge and --rebase synonyms
+ submodule--helper: report "submodule" as our name in some "-h" output
+ submodule--helper: rename "absorb-git-dirs" to "absorbgitdirs"
+ submodule update: remove "-v" option
+ submodule--helper: have --require-init imply --init
+ git-submodule.sh: remove unused top-level "--branch" argument
+ git-submodule.sh: make the "$cached" variable a boolean
+ git-submodule.sh: remove unused $prefix variable
+ git-submodule.sh: remove unused sanitize_submodule_env()
(this branch is used by gc/submodule-use-super-prefix.)
Further preparation to turn git-submodule.sh into a builtin.
Will merge to 'master'.
source: <cover-v4-00.12-00000000000-20220628T095914Z-avarab@gmail.com>
* jc/resolve-undo (2022-06-09) 1 commit
(merged to 'next' on 2022-06-15 at c195e5a2d9)
+ revision: mark blobs needed for resolve-undo as reachable
The resolve-undo information in the index was not protected against
GC, which has been corrected.
Will cook in 'next'.
source: <xmqqfskdieqz.fsf@gitster.g>
* ab/build-gitweb (2022-06-28) 8 commits
- gitweb/Makefile: add a "NO_GITWEB" parameter
- Makefile: build 'gitweb' in the default target
- gitweb/Makefile: include in top-level Makefile
- gitweb: remove "test" and "test-installed" targets
- gitweb/Makefile: prepare to merge into top-level Makefile
- gitweb/Makefile: clear up and de-duplicate the gitweb.{css,js} vars
- gitweb/Makefile: add a $(GITWEB_ALL) variable
- gitweb/Makefile: define all .PHONY prerequisites inline
Teach "make all" to build gitweb as well.
Will merge to 'next'?
source: <cover-v3-0.8-00000000000-20220628T100936Z-avarab@gmail.com>
* ab/test-without-templates (2022-06-06) 7 commits
- tests: don't assume a .git/info for .git/info/sparse-checkout
- tests: don't assume a .git/info for .git/info/exclude
- tests: don't assume a .git/info for .git/info/refs
- tests: don't assume a .git/info for .git/info/attributes
- tests: don't assume a .git/info for .git/info/grafts
- tests: don't depend on template-created .git/branches
- t0008: don't rely on default ".git/info/exclude"
Tweak tests so that they still work when the "git init" template
did not create .git/info directory.
Will merge to 'next'?
source: <cover-v2-0.7-00000000000-20220603T110506Z-avarab@gmail.com>
* ac/bitmap-format-doc (2022-06-16) 3 commits
(merged to 'next' on 2022-06-16 at 5591d11601)
+ bitmap-format.txt: add information for trailing checksum
+ bitmap-format.txt: fix some formatting issues
+ bitmap-format.txt: feed the file to asciidoc to generate html
Adjust technical/bitmap-format to be formatted by AsciiDoc, and
add some missing information to the documentation.
Will cook in 'next'.
source: <pull.1246.v4.git.1655355834.gitgitgadget@gmail.com>
* hx/unpack-streaming (2022-06-13) 6 commits
(merged to 'next' on 2022-07-08 at 4eb375ec2f)
+ unpack-objects: use stream_loose_object() to unpack large objects
+ core doc: modernize core.bigFileThreshold documentation
+ object-file.c: add "stream_loose_object()" to handle large object
+ object-file.c: factor out deflate part of write_loose_object()
+ object-file.c: refactor write_loose_object() to several steps
+ unpack-objects: low memory footprint for get_data() in dry_run mode
Allow large objects read from a packstream to be streamed into a
loose object file straight, without having to keep it in-core as a
whole.
Will merge to 'master'.
source: <cover.1654914555.git.chiyutianyi@gmail.com>
* tb/show-ref-count (2022-06-06) 2 commits
- builtin/show-ref.c: limit output with `--count`
- builtin/show-ref.c: rename `found_match` to `matches_nr`
"git show-ref" learned to stop after emitting N refs with the new
"--count=N" option.
Expecting a reroll.
cf. <xmqqczfl4ce1.fsf@gitster.g>
source: <cover.1654552560.git.me@ttaylorr.com>
* ds/bundle-uri-more (2022-06-06) 6 commits
- fetch: add 'refs/bundle/' to log.excludeDecoration
- bundle-uri: add support for http(s):// and file://
- fetch: add --bundle-uri option
- bundle-uri: create basic file-copy logic
- remote-curl: add 'get' capability
- docs: document bundle URI standard
The "bundle URI" topic.
Needs review.
source: <pull.1248.git.1654545325.gitgitgadget@gmail.com>
* js/bisect-in-c (2022-06-27) 16 commits
- bisect: no longer try to clean up left-over `.git/head-name` files
- bisect: remove Cogito-related code
- Turn `git bisect` into a full built-in
- bisect: move even the command-line parsing to `bisect--helper`
- bisect: teach the `bisect--helper` command to show the correct usage strings
- bisect--helper: return only correct exit codes in `cmd_*()`
- bisect--helper: move the `BISECT_STATE` case to the end
- bisect--helper: make `--bisect-state` optional
- bisect--helper: align the sub-command order with git-bisect.sh
- bisect--helper: using `--bisect-state` without an argument is a bug
- bisect--helper: really retire `--bisect-autostart`
- bisect--helper: really retire --bisect-next-check
- bisect--helper: retire the --no-log option
- bisect: avoid double-quoting when printing the failed command
- bisect run: fix the error message
- bisect: verify that a bogus option won't try to start a bisection
Final bits of "git bisect.sh" have been rewritten in C.
Expecting a (hopefully final) reroll.
cf. <20627.86ilolhnnn.gmgdl@evledraar.gmail.com>
source: <pull.1132.v4.git.1656354677.gitgitgadget@gmail.com>
* gc/bare-repo-discovery (2022-07-07) 5 commits
- setup.c: create `discovery.bare`
- safe.directory: use git_protected_config()
- config: learn `git_protected_config()`
- Documentation: define protected configuration
- Documentation/git-config.txt: add SCOPES section
Introduce a discovery.barerepository configuration variable that
allows users to forbid discovery of bare repositories.
source: <pull.1261.v7.git.git.1657234914.gitgitgadget@gmail.com>
* gg/worktree-from-the-above (2022-06-21) 2 commits
(merged to 'next' on 2022-07-08 at fa0e71ba39)
+ dir: minor refactoring / clean-up
+ dir: traverse into repository
In a non-bare repository, the behavior of Git when the
core.worktree configuration variable points at a directory that has
a repository as its subdirectory, regressed in Git 2.27 days.
Will merge to 'master'.
source: <20220616234433.225-1-gg.oss@outlook.com>
source: <20220616231956.154-1-gg.oss@outlook.com>
--------------------------------------------------
[Discarded]
* ar/send-email-confirm-by-default (2022-04-22) 1 commit
. send-email: always confirm by default
"git send-email" is changed so that by default it asks for
confirmation before sending each message out.
Discarded.
I wanted to like this, and had it in the version of Git I use
myself for daily work, but the prompting turned out to be somewhat
distracting.
source: <20220422083629.1404989-1-hi@alyssa.is>
^ permalink raw reply [relevance 3%]
* What's cooking in git.git (Jul 2022, #01; Fri, 1)
@ 2022-07-01 23:08 3% Junio C Hamano
0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2022-07-01 23:08 UTC (permalink / raw)
To: git
Here are the topics that have been cooking in my tree. Commits
prefixed with '+' are in 'next' (being in 'next' is a sign that a
topic is stable enough to be used and are candidate to be in a
future release). Commits prefixed with '-' are only in 'seen',
and aren't considered "accepted" at all.
Git 2.37 final was released, many in the northan hemisphere are
about to be in summer vacation week. We probably will have a small
update 2.37.1 near mid July to deal with a small "regression" in
2.37 but otherwise things are expected to be slow, and slow is good
;-)
Copies of the source code to Git live in many repositories, and the
following is a list of the ones I push into or their mirrors. Some
repositories have only a subset of branches.
With maint, master, next, seen, todo:
git://git.kernel.org/pub/scm/git/git.git/
git://repo.or.cz/alt-git.git/
https://kernel.googlesource.com/pub/scm/git/git/
https://github.com/git/git/
https://gitlab.com/git-vcs/git/
With all the integration branches and topics broken out:
https://github.com/gitster/git/
Even though the preformatted documentation in HTML and man format
are not sources, they are published in these repositories for
convenience (replace "htmldocs" with "manpages" for the manual
pages):
git://git.kernel.org/pub/scm/git/git-htmldocs.git/
https://github.com/gitster/git-htmldocs.git/
Release tarballs are available at:
https://www.kernel.org/pub/software/scm/git/
--------------------------------------------------
[New Topics]
* ds/git-rebase-doc-markup (2022-06-30) 1 commit
- git-rebase.txt: use back-ticks consistently
Correct "git rebase" documentation mark-up.
Will merge to 'next'.
source: <pull.1270.v3.git.1656508868146.gitgitgadget@gmail.com>
* ds/rebase-update-ref (2022-06-28) 8 commits
- rebase: add rebase.updateRefs config option
- rebase: update refs from 'update-ref' commands
- rebase: add --update-refs option
- sequencer: add update-ref command
- sequencer: define array with enum values
- rebase-interactive: update 'merge' description
- branch: consider refs under 'update-refs'
- t2407: test branches currently using apply backend
(this branch uses ds/branch-checked-out.)
"git rebase -i" learns to update branches whose tip appear in the
rebased range.
Will merge to 'next'?
source: <pull.1247.v3.git.1656422759.gitgitgadget@gmail.com>
* ds/vscode-settings (2022-06-27) 1 commit
- vscode: improve tab size and wrapping
source: <pull.1271.git.1656354587496.gitgitgadget@gmail.com>
* js/add-i-delete (2022-06-28) 1 commit
(merged to 'next' on 2022-06-28 at 8ac04bfd24)
+ add --interactive: allow `update` to stage deleted files
Rewrite of "git add -i" in C that appeared in Git 2.25 didn't
correctly record a removed file to the index, which was fixed.
Will merge to 'master'.
source: <pull.1273.git.1656454964378.gitgitgadget@gmail.com>
* tb/pack-objects-remove-pahole-comment (2022-06-28) 1 commit
- pack-objects.h: remove outdated pahole results
Comment fix.
Will merge to 'next'.
source: <1379af2e9d271b501ef3942398e7f159a9c77973.1656440978.git.me@ttaylorr.com>
* ab/leakfix (2022-07-01) 11 commits
- pull: fix a "struct oid_array" memory leak
- cat-file: fix a common "struct object_context" memory leak
- gc: fix a memory leak
- checkout: avoid "struct unpack_trees_options" leak
- merge-file: fix memory leaks on error path
- merge-file: refactor for subsequent memory leak fix
- cat-file: fix a memory leak in --batch-command mode
- revert: free "struct replay_opts" members
- submodule.c: free() memory from xgetcwd()
- clone: fix memory leak in wanted_peer_refs()
- check-ref-format: fix trivial memory leak
Plug various memory leaks.
source: <cover-v2-00.11-00000000000-20220701T104017Z-avarab@gmail.com>
* ab/test-tool-leakfix (2022-07-01) 9 commits
- test-tool delta: fix a memory leak
- test-tool ref-store: fix a memory leak
- test-tool bloom: fix memory leaks
- test-tool json-writer: fix memory leaks
- test-tool regex: call regfree(), fix memory leaks
- test-tool urlmatch-normalization: fix a memory leak
- test-tool {dump,scrap}-cache-tree: fix memory leaks
- test-tool path-utils: fix a memory leak
- test-tool test-hash: fix a memory leak
Plug various memory leaks in test-tool commands.
source: <cover-v2-0.9-00000000000-20220701T103503Z-avarab@gmail.com>
* en/t6429-test-must-be-empty-fix (2022-06-30) 1 commit
- t6429: fix use of non-existent function
A test fix.
Will merge to 'next'.
source: <pull.1276.git.1656652799863.gitgitgadget@gmail.com>
* gc/submodule-use-super-prefix (2022-06-30) 8 commits
- submodule--helper: remove display path helper
- submodule--helper update: use --super-prefix
- submodule--helper: remove unused SUPPORT_SUPER_PREFIX flags
- submodule--helper: use correct display path helper
- submodule--helper: don't recreate recursive prefix
- submodule--helper update: use display path helper
- submodule--helper tests: add missing "display path" coverage
- Merge branch 'ab/submodule-cleanup' into gc/submodule-use-super-prefix
(this branch uses ab/submodule-cleanup.)
Another step to rewrite more parts of "git submodule" in C.
Will merge to 'next'?
source: <20220701021157.88858-1-chooglen@google.com>
* hx/lookup-commit-in-graph-fix (2022-06-30) 1 commit
- commit-graph.c: no lazy fetch in lookup_commit_in_graph()
A corner case bug where lazily fetching objects from a promisor
remote resulted in infinite recursion has been corrected.
Will merge to 'next'.
source: <96d4bb71505d87ed501c058bbd89bfc13d08b24a.1656593279.git.hanxin.hx@bytedance.com>
* ll/ls-files-tests-update (2022-07-01) 1 commit
- ls-files: update test style
Test update.
Will merge to 'next'.
source: <pull.1269.v5.git.1656673435357.gitgitgadget@gmail.com>
* pw/xdiff-alloc (2022-06-30) 3 commits
- xdiff: introduce XDL_ALLOC_GROW()
- xdiff: introduce XDL_CALLOC_ARRAY()
- xdiff: introduce XDL_ALLOC_ARRAY()
Add a level of redirection to array allocation API in xdiff part,
to make it easier to share with the libgit2 project.
Waiting for review responses.
source: <pull.1272.git.1656516334.gitgitgadget@gmail.com>
* sy/mv-out-of-cone (2022-07-01) 8 commits
- mv: add check_dir_in_index() and solve general dir check issue
- mv: use flags mode for update_mode
- mv: check if <destination> exists in index to handle overwriting
- mv: check if out-of-cone file exists in index with SKIP_WORKTREE bit
- mv: decouple if/else-if checks using goto
- mv: update sparsity after moving from out-of-cone to in-cone
- t1092: mv directory from out-of-cone to in-cone
- t7002: add tests for moving out-of-cone file/directory
"git mv A B" in a sparsely populated working tree can be asked to
move a path between directories that are "in cone" (i.e. expected
to be materialized in the working tree) and "out of cone"
(i.e. expected to be hidden). The handling of such cases has been
improved.
Will merge to 'next'.
source: <20220630023737.473690-1-shaoxuan.yuan02@gmail.com>
--------------------------------------------------
[Stalled]
* bc/stash-export (2022-04-08) 4 commits
- builtin/stash: provide a way to import stashes from a ref
- builtin/stash: provide a way to export stashes to a ref
- builtin/stash: factor out revision parsing into a function
- object-name: make get_oid quietly return an error
A mechanism to export and import stash entries to and from a normal
commit to transfer it across repositories has been introduced.
Expecting a reroll.
cf. <YnL2d4Vr9Vr7W4Hj@camp.crustytoothpaste.net>
source: <20220407215352.3491567-1-sandals@crustytoothpaste.net>
* cw/remote-object-info (2022-05-06) 11 commits
- SQUASH??? coccicheck
- SQUASH??? ensure that coccicheck is happy
- SQUASH??? compilation fix
- cat-file: add --batch-command remote-object-info command
- cat-file: move parse_cmd and DEFAULT_FORMAT up
- transport: add object-info fallback to fetch
- transport: add client side capability to request object-info
- object-info: send attribute packet regardless of object ids
- object-store: add function to free object_info contents
- fetch-pack: move fetch default settings
- fetch-pack: refactor packet writing
A client component to talk with the object-info endpoint.
Expecting a reroll.
source: <20220502170904.2770649-1-calvinwan@google.com>
--------------------------------------------------
[Cooking]
* ab/squelch-empty-fsync-traces (2022-06-30) 1 commit
. trace2: don't include "fsync" events in all trace2 logs
Omit fsync-related trace2 entries when their values are all zero.
Breaks tests in hx/unpack-streaming with an interesting interaction.
source: <patch-v2-1.1-a1fc37de947-20220630T084607Z-avarab@gmail.com>
* cl/grep-max-count (2022-06-22) 1 commit
- grep: add --max-count command line option
"git grep -m<max-hits>" is a way to limit the hits shown per file.
Will merge to 'next'.
source: <pull.1278.v4.git.git.1655927252899.gitgitgadget@gmail.com>
* jk/revisions-doc-markup-fix (2022-06-22) 1 commit
- revisions.txt: escape "..." to avoid asciidoc horizontal ellipsis
Documentation mark-up fix.
Will merge to 'next'.
source: <YrOmsA04FZae89be@coredump.intra.peff.net>
* tk/rev-parse-doc-clarify-at-u (2022-06-23) 1 commit
- rev-parse: documentation adjustment - mention remote tracking with @{u}
Doc update.
Will merge to 'next'.
source: <pull.1265.v2.git.1655960512385.gitgitgadget@gmail.com>
* en/merge-tree (2022-06-22) 17 commits
- git-merge-tree.txt: add a section on potentional usage mistakes
- merge-tree: add a --allow-unrelated-histories flag
- merge-tree: allow `ls-files -u` style info to be NUL terminated
- merge-ort: optionally produce machine-readable output
- merge-ort: store more specific conflict information
- merge-ort: make `path_messages` a strmap to a string_list
- merge-ort: store messages in a list, not in a single strbuf
- merge-tree: provide easy access to `ls-files -u` style info
- merge-tree: provide a list of which files have conflicts
- merge-ort: remove command-line-centric submodule message from merge-ort
- merge-ort: provide a merge_get_conflicted_files() helper function
- merge-tree: support including merge messages in output
- merge-ort: split out a separate display_update_messages() function
- merge-tree: implement real merges
- merge-tree: add option parsing and initial shell for real merge function
- merge-tree: move logic for existing merge into new function
- merge-tree: rename merge_trees() to trivial_merge_trees()
A new command is introduced that takes two commits and computes a
tree that would be contained in the resulting merge commit, if the
histories leading to these two commits were to be merged, and is
added as a new mode of "git merge-tree" subcommand.
Will merge to 'next'.
source: <pull.1122.v7.git.1655511660.gitgitgadget@gmail.com>
* dr/i18n-die-warn-error-usage (2022-06-21) 1 commit
- i18n: mark message helpers prefix for translation
Give _() markings to fatal/warning/usage: that is shown in front of
these messages.
Will merge to 'next'.
source: <pull.1279.v2.git.git.1655819877758.gitgitgadget@gmail.com>
* ds/t5510-brokequote (2022-06-21) 1 commit
- t5510: replace 'origin' with URL more carefully
Test fix.
source: <484a330e-0902-6e1b-8189-63c72dcea494@github.com>
* en/merge-restore-to-pristine (2022-06-21) 6 commits
- merge: do not exit restore_state() prematurely
- merge: ensure we can actually restore pre-merge state
- merge: make restore_state() restore staged state too
- merge: fix save_state() to work when there are racy-dirty files
- merge: remove unused variable
- t6424: make sure a failed merge preserves local changes
When "git merge" finds that it cannot perform a merge, it should
restore the working tree to the state before the command was
initiated, but in some corner cases it didn't.
Needs review.
source: <pull.1231.v2.git.1655621424.gitgitgadget@gmail.com>
* rs/combine-diff-with-incompatible-options (2022-06-21) 2 commits
- combine-diff: abort if --output is given
- combine-diff: abort if --ignore-matching-lines is given
Certain diff options are currently ignored when combined-diff is
shown; mark them as incompatible with the feature.
Will merge to 'next'.
source: <220524.86v8tuvfl1.gmgdl@evledraar.gmail.com>
* tk/apply-case-insensitive (2022-06-21) 3 commits
- apply: support case-only renames in case-insensitive filesystems
- reset: new failing test for reset of case-insensitive duplicate in index
- t4141: test "git apply" with core.ignorecase
"git apply" barfed on a patch that makes a case-only rename on a
case-insensitive filesystem.
Needs review.
source: <pull.1257.v2.git.1655655027.gitgitgadget@gmail.com>
* zh/ls-files-format (2022-06-27) 1 commit
- ls-files: introduce "--format" option
"git ls-files" learns the "--format" option to tweak its output.
Expecting a reroll.
cf. <CAOLTT8Tc95-aUE+uN2d8QjTJpGpGw6cBJfG+bpmyE55OcXTSRA@mail.gmail.com>
source: <pull.1262.v4.git.1656257376109.gitgitgadget@gmail.com>
* ab/test-quoting-fix (2022-06-30) 3 commits
- config tests: fix harmless but broken "rm -r" cleanup
- test-lib.sh: fix prepend_var() quoting issue
- tests: add missing double quotes to included library paths
Fixes for tests when the source directory has unusual characters in
its path, e.g. whitespaces, double-quotes, etc.
Will merge to 'next'.
source: <cover-v2-0.3-00000000000-20220630T101646Z-avarab@gmail.com>
* en/merge-dual-dir-renames-fix (2022-06-30) 5 commits
- merge-ort: fix issue with dual rename and add/add conflict
- merge-ort: shuffle the computation and cleanup of potential collisions
- merge-ort: make a separate function for freeing struct collisions
- merge-ort: small cleanups of check_for_directory_rename
- t6423: add tests of dual directory rename plus add/add conflict
Fixes a long-standing corner case bug around directory renames in
the merge-ort strategy.
Will merge to 'next'?
source: <pull.1268.v3.git.1656653000.gitgitgadget@gmail.com>
* cr/setup-bug-typo (2022-06-17) 1 commit
(merged to 'next' on 2022-06-17 at 8834ffe0ab)
+ setup: fix function name in a BUG() message
Typofix in a BUG() message.
Will cook in 'next'.
source: <pull.1255.git.1654782920256.gitgitgadget@gmail.com>
* zk/push-use-bitmaps (2022-06-17) 1 commit
- send-pack.c: add config push.useBitmaps
"git push" sometimes perform poorly when reachability bitmaps are
used, even in a repository where other operations are helped by
bitmaps. The push.useBitmaps configuration variable is introduced
to allow disabling use of reachability bitmaps only for "git push".
Will merge to 'next'.
source: <pull.1263.v4.git.1655492779228.gitgitgadget@gmail.com>
* jk/remote-show-with-negative-refspecs (2022-06-17) 1 commit
- remote: handle negative refspecs in git remote show
(this branch is used by jk/t5505-restructure.)
"git remote show [-n] frotz" now pays attention to negative
pathspecs.
Will merge to 'next'.
source: <20220617002036.1577-2-jacob.keller@gmail.com>
* js/commit-graph-parsing-without-repo-settings (2022-06-15) 1 commit
- commit-graph: refactor to avoid prepare_repo_settings
Expecting a reroll.
source: <9b56496b0809cc8a25af877ea97042e2cb7f2af6.1655246092.git.steadmon@google.com>
* jk/optim-promisor-object-enumeration (2022-06-16) 1 commit
(merged to 'next' on 2022-06-16 at ce0712a74c)
+ is_promisor_object(): walk promisor packs in pack-order
Collection of what is referenced by objects in promisor packs have
been optimized to inspect these objects in the in-pack order.
Will cook in 'next'.
source: <YqrTsbXbEjx0Pabn@coredump.intra.peff.net>
* ro/mktree-allow-missing-fix (2022-06-21) 1 commit
- mktree: do not check type of remote objects
"git mktree --missing" lazily fetched objects that are missing from
the local object store, which was totally unnecessary.
Will merge to 'next'.
source: <748f39a9-65aa-2110-cf92-7ddf81b5f507@roku.com>
* ll/curl-accept-language (2022-06-13) 2 commits
- PREP??? give initializer to rpc_state
- remote-curl: send Accept-Language header to server
source: <pull.1251.v3.git.1655054421697.gitgitgadget@gmail.com>
* pb/diff-doc-raw-format (2022-06-13) 3 commits
- diff-index.txt: update raw output format in examples
- diff-format.txt: correct misleading wording
- diff-format.txt: dst can be 0* SHA-1 when path is deleted, too
source: <pull.1259.git.1655123383.gitgitgadget@gmail.com>
* rs/archive-with-internal-gzip (2022-06-15) 6 commits
(merged to 'next' on 2022-06-17 at ab5af6acd1)
+ archive-tar: use internal gzip by default
+ archive-tar: use OS_CODE 3 (Unix) for internal gzip
+ archive-tar: add internal gzip implementation
+ archive-tar: factor out write_block()
+ archive: rename archiver data field to filter_command
+ archive: update format documentation
Teach "git archive" to (optionally and then by default) avoid
spawning an external "gzip" process when creating ".tar.gz" (and
".tgz") archives.
Will cook in 'next'.
source: <9df761c3-355a-ede9-7971-b32687fe9abb@web.de>
* ds/branch-checked-out (2022-06-21) 7 commits
(merged to 'next' on 2022-06-21 at e42bc4566f)
+ branch: drop unused worktrees variable
+ fetch: stop passing around unused worktrees variable
(merged to 'next' on 2022-06-17 at c881874257)
+ branch: fix branch_checked_out() leaks
+ branch: use branch_checked_out() when deleting refs
+ fetch: use new branch_checked_out() and add tests
+ branch: check for bisects and rebases
+ branch: add branch_checked_out() helper
(this branch is used by ds/rebase-update-ref.)
Introduce a helper to see if a branch is already being worked on
(hence should not be newly checked out in a working tree), which
performs much better than the existing find_shared_symref() to
replace many uses of the latter.
Will cook in 'next'.
source: <pull.1254.v2.git.1655234853.gitgitgadget@gmail.com>
* jt/connected-show-missing-from-which-side (2022-06-10) 1 commit
- fetch,fetch-pack: clarify connectivity check error
We may find an object missing after a "git fetch" stores the
objects it obtained from the other side, but it is not necessarily
because the remote failed to send necessary objects. Reword the
messages in an attempt to help users explore other possibilities
when they hit this error.
Expecting a reroll.
source: <20220610195247.1177549-1-jonathantanmy@google.com>
* ab/submodule-cleanup (2022-06-28) 12 commits
- git-sh-setup.sh: remove "say" function, change last users
- git-submodule.sh: use "$quiet", not "$GIT_QUIET"
- submodule--helper: eliminate internal "--update" option
- submodule--helper: understand --checkout, --merge and --rebase synonyms
- submodule--helper: report "submodule" as our name in some "-h" output
- submodule--helper: rename "absorb-git-dirs" to "absorbgitdirs"
- submodule update: remove "-v" option
- submodule--helper: have --require-init imply --init
- git-submodule.sh: remove unused top-level "--branch" argument
- git-submodule.sh: make the "$cached" variable a boolean
- git-submodule.sh: remove unused $prefix variable
- git-submodule.sh: remove unused sanitize_submodule_env()
(this branch is used by gc/submodule-use-super-prefix.)
Further preparation to turn git-submodule.sh into a builtin.
Will merge to 'next'.
source: <cover-v4-00.12-00000000000-20220628T095914Z-avarab@gmail.com>
* jc/resolve-undo (2022-06-09) 1 commit
(merged to 'next' on 2022-06-15 at c195e5a2d9)
+ revision: mark blobs needed for resolve-undo as reachable
The resolve-undo information in the index was not protected against
GC, which has been corrected.
Will cook in 'next'.
source: <xmqqfskdieqz.fsf@gitster.g>
* ab/build-gitweb (2022-06-28) 8 commits
- gitweb/Makefile: add a "NO_GITWEB" parameter
- Makefile: build 'gitweb' in the default target
- gitweb/Makefile: include in top-level Makefile
- gitweb: remove "test" and "test-installed" targets
- gitweb/Makefile: prepare to merge into top-level Makefile
- gitweb/Makefile: clear up and de-duplicate the gitweb.{css,js} vars
- gitweb/Makefile: add a $(GITWEB_ALL) variable
- gitweb/Makefile: define all .PHONY prerequisites inline
Teach "make all" to build gitweb as well.
source: <cover-v3-0.8-00000000000-20220628T100936Z-avarab@gmail.com>
* ab/test-without-templates (2022-06-06) 7 commits
- tests: don't assume a .git/info for .git/info/sparse-checkout
- tests: don't assume a .git/info for .git/info/exclude
- tests: don't assume a .git/info for .git/info/refs
- tests: don't assume a .git/info for .git/info/attributes
- tests: don't assume a .git/info for .git/info/grafts
- tests: don't depend on template-created .git/branches
- t0008: don't rely on default ".git/info/exclude"
Tweak tests so that they still work when the "git init" template
did not create .git/info directory.
Will merge to 'next'?
source: <cover-v2-0.7-00000000000-20220603T110506Z-avarab@gmail.com>
* ac/bitmap-format-doc (2022-06-16) 3 commits
(merged to 'next' on 2022-06-16 at 5591d11601)
+ bitmap-format.txt: add information for trailing checksum
+ bitmap-format.txt: fix some formatting issues
+ bitmap-format.txt: feed the file to asciidoc to generate html
Adjust technical/bitmap-format to be formatted by AsciiDoc, and
add some missing information to the documentation.
Will cook in 'next'.
source: <pull.1246.v4.git.1655355834.gitgitgadget@gmail.com>
* hx/unpack-streaming (2022-06-13) 6 commits
- unpack-objects: use stream_loose_object() to unpack large objects
- core doc: modernize core.bigFileThreshold documentation
- object-file.c: add "stream_loose_object()" to handle large object
- object-file.c: factor out deflate part of write_loose_object()
- object-file.c: refactor write_loose_object() to several steps
- unpack-objects: low memory footprint for get_data() in dry_run mode
Allow large objects read from a packstream to be streamed into a
loose object file straight, without having to keep it in-core as a
whole.
Will merge to 'next'.
source: <cover.1654914555.git.chiyutianyi@gmail.com>
* tb/show-ref-count (2022-06-06) 2 commits
- builtin/show-ref.c: limit output with `--count`
- builtin/show-ref.c: rename `found_match` to `matches_nr`
"git show-ref" learned to stop after emitting N refs with the new
"--count=N" option.
Expecting a reroll.
cf. <xmqqczfl4ce1.fsf@gitster.g>
source: <cover.1654552560.git.me@ttaylorr.com>
* ds/bundle-uri-more (2022-06-06) 6 commits
- fetch: add 'refs/bundle/' to log.excludeDecoration
- bundle-uri: add support for http(s):// and file://
- fetch: add --bundle-uri option
- bundle-uri: create basic file-copy logic
- remote-curl: add 'get' capability
- docs: document bundle URI standard
The "bundle URI" topic.
Needs review.
source: <pull.1248.git.1654545325.gitgitgadget@gmail.com>
* js/bisect-in-c (2022-06-27) 16 commits
- bisect: no longer try to clean up left-over `.git/head-name` files
- bisect: remove Cogito-related code
- Turn `git bisect` into a full built-in
- bisect: move even the command-line parsing to `bisect--helper`
- bisect: teach the `bisect--helper` command to show the correct usage strings
- bisect--helper: return only correct exit codes in `cmd_*()`
- bisect--helper: move the `BISECT_STATE` case to the end
- bisect--helper: make `--bisect-state` optional
- bisect--helper: align the sub-command order with git-bisect.sh
- bisect--helper: using `--bisect-state` without an argument is a bug
- bisect--helper: really retire `--bisect-autostart`
- bisect--helper: really retire --bisect-next-check
- bisect--helper: retire the --no-log option
- bisect: avoid double-quoting when printing the failed command
- bisect run: fix the error message
- bisect: verify that a bogus option won't try to start a bisection
Final bits of "git bisect.sh" have been rewritten in C.
source: <pull.1132.v4.git.1656354677.gitgitgadget@gmail.com>
* gc/bare-repo-discovery (2022-06-30) 5 commits
- setup.c: create `discovery.bare`
- safe.directory: use git_protected_config()
- config: learn `git_protected_config()`
- Documentation: define protected configuration
- Documentation/git-config.txt: add SCOPES section
Introduce a discovery.barerepository configuration variable that
allows users to forbid discovery of bare repositories.
Will merge to 'next'?
source: <pull.1261.v6.git.git.1656612839.gitgitgadget@gmail.com>
* gg/worktree-from-the-above (2022-06-21) 2 commits
- dir: minor refactoring / clean-up
- dir: traverse into repository
With a non-bare repository, with core.worktree pointing at a
directory that has the repository as its subdirectory, regressed in
Git 2.27 days.
Will merge to 'next'.
source: <20220616234433.225-1-gg.oss@outlook.com>
source: <20220616231956.154-1-gg.oss@outlook.com>
* ar/send-email-confirm-by-default (2022-04-22) 1 commit
- send-email: always confirm by default
"git send-email" is changed so that by default it asks for
confirmation before sending each message out.
Will discard.
I wanted to like this, and had it in the version of Git I use
myself for daily work, but the prompting turned out to be somewhat
distracting.
Thoughts?
source: <20220422083629.1404989-1-hi@alyssa.is>
^ permalink raw reply [relevance 3%]
* What's cooking in git.git (Jun 2022, #08; Mon, 27)
@ 2022-06-27 18:22 3% Junio C Hamano
0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2022-06-27 18:22 UTC (permalink / raw)
To: git
Here are the topics that have been cooking in my tree. Commits
prefixed with '+' are in 'next' (being in 'next' is a sign that a
topic is stable enough to be used and are candidate to be in a
future release). Commits prefixed with '-' are only in 'seen',
and aren't considered "accepted" at all.
Git 2.37 (final) has been tagged.
Copies of the source code to Git live in many repositories, and the
following is a list of the ones I push into or their mirrors. Some
repositories have only a subset of branches.
With maint, master, next, seen, todo:
git://git.kernel.org/pub/scm/git/git.git/
git://repo.or.cz/alt-git.git/
https://kernel.googlesource.com/pub/scm/git/git/
https://github.com/git/git/
https://gitlab.com/git-vcs/git/
With all the integration branches and topics broken out:
https://github.com/gitster/git/
Even though the preformatted documentation in HTML and man format
are not sources, they are published in these repositories for
convenience (replace "htmldocs" with "manpages" for the manual
pages):
git://git.kernel.org/pub/scm/git/git-htmldocs.git/
https://github.com/gitster/git-htmldocs.git/
Release tarballs are available at:
https://www.kernel.org/pub/software/scm/git/
--------------------------------------------------
[Graduated to 'master']
* ab/credentials-in-url-more (2022-06-23) 1 commit
(merged to 'next' on 2022-06-23 at 11d700111c)
+ Documentation/config/transfer.txt: fix typo
Typofix.
source: <68c1c3648c51f6298eea4d58286b20e0c770a270.1656010900.git.me@ttaylorr.com>
* jc/revert-show-parent-info (2022-06-27) 1 commit
(merged to 'next' on 2022-06-27 at 9a7cc59c69)
+ revert: config documentation fixes
Typofix.
source: <6727daf1-f077-7319-187e-ab4e55de3b2d@web.de>
--------------------------------------------------
[New Topics]
* ab/squelch-empty-fsync-traces (2022-06-23) 1 commit
- trace2: don't include "fsync" events in all trace2 logs
Omit fsync-related trace2 entries when their values are all zero.
Expecting a reroll.
cf. <xmqqh74byy19.fsf@gitster.g>
source: <patch-1.1-df87e515efd-20220623T154943Z-avarab@gmail.com>
* cl/grep-max-count (2022-06-22) 1 commit
- grep: add --max-count command line option
"git grep -m<max-hits>" is a way to limit the hits shown per file.
Will merge to 'next'.
source: <pull.1278.v4.git.git.1655927252899.gitgitgadget@gmail.com>
* jk/revisions-doc-markup-fix (2022-06-22) 1 commit
- revisions.txt: escape "..." to avoid asciidoc horizontal ellipsis
Documentation mark-up fix.
Will merge to 'next'.
source: <YrOmsA04FZae89be@coredump.intra.peff.net>
* tk/rev-parse-doc-clarify-at-u (2022-06-23) 1 commit
- rev-parse: documentation adjustment - mention remote tracking with @{u}
Doc update.
Will merge to 'next'.
source: <pull.1265.v2.git.1655960512385.gitgitgadget@gmail.com>
--------------------------------------------------
[Stalled]
* bc/stash-export (2022-04-08) 4 commits
- builtin/stash: provide a way to import stashes from a ref
- builtin/stash: provide a way to export stashes to a ref
- builtin/stash: factor out revision parsing into a function
- object-name: make get_oid quietly return an error
A mechanism to export and import stash entries to and from a normal
commit to transfer it across repositories has been introduced.
Expecting a reroll.
cf. <YnL2d4Vr9Vr7W4Hj@camp.crustytoothpaste.net>
source: <20220407215352.3491567-1-sandals@crustytoothpaste.net>
* cw/remote-object-info (2022-05-06) 11 commits
- SQUASH??? coccicheck
- SQUASH??? ensure that coccicheck is happy
- SQUASH??? compilation fix
- cat-file: add --batch-command remote-object-info command
- cat-file: move parse_cmd and DEFAULT_FORMAT up
- transport: add object-info fallback to fetch
- transport: add client side capability to request object-info
- object-info: send attribute packet regardless of object ids
- object-store: add function to free object_info contents
- fetch-pack: move fetch default settings
- fetch-pack: refactor packet writing
A client component to talk with the object-info endpoint.
Expecting a reroll.
source: <20220502170904.2770649-1-calvinwan@google.com>
--------------------------------------------------
[Cooking]
* en/merge-tree (2022-06-22) 17 commits
- git-merge-tree.txt: add a section on potentional usage mistakes
- merge-tree: add a --allow-unrelated-histories flag
- merge-tree: allow `ls-files -u` style info to be NUL terminated
- merge-ort: optionally produce machine-readable output
- merge-ort: store more specific conflict information
- merge-ort: make `path_messages` a strmap to a string_list
- merge-ort: store messages in a list, not in a single strbuf
- merge-tree: provide easy access to `ls-files -u` style info
- merge-tree: provide a list of which files have conflicts
- merge-ort: remove command-line-centric submodule message from merge-ort
- merge-ort: provide a merge_get_conflicted_files() helper function
- merge-tree: support including merge messages in output
- merge-ort: split out a separate display_update_messages() function
- merge-tree: implement real merges
- merge-tree: add option parsing and initial shell for real merge function
- merge-tree: move logic for existing merge into new function
- merge-tree: rename merge_trees() to trivial_merge_trees()
A new command is introduced that takes two commits and computes a
tree that would be contained in the resulting merge commit, if the
histories leading to these two commits were to be merged, and is
added as a new mode of "git merge-tree" subcommand.
Will merge to 'next'.
source: <pull.1122.v7.git.1655511660.gitgitgadget@gmail.com>
* dr/i18n-die-warn-error-usage (2022-06-21) 1 commit
- i18n: mark message helpers prefix for translation
Give _() markings to fatal/warning/usage: that is shown in front of
these messages.
Will merge to 'next'.
source: <pull.1279.v2.git.git.1655819877758.gitgitgadget@gmail.com>
* ds/t5510-brokequote (2022-06-21) 1 commit
- t5510: replace 'origin' with URL more carefully
Test fix.
source: <484a330e-0902-6e1b-8189-63c72dcea494@github.com>
* en/merge-restore-to-pristine (2022-06-21) 6 commits
- merge: do not exit restore_state() prematurely
- merge: ensure we can actually restore pre-merge state
- merge: make restore_state() restore staged state too
- merge: fix save_state() to work when there are racy-dirty files
- merge: remove unused variable
- t6424: make sure a failed merge preserves local changes
When "git merge" finds that it cannot perform a merge, it should
restore the working tree to the state before the command was
initiated, but in some corner cases it didn't.
Needs review.
source: <pull.1231.v2.git.1655621424.gitgitgadget@gmail.com>
* rs/combine-diff-with-incompatible-options (2022-06-21) 2 commits
- combine-diff: abort if --output is given
- combine-diff: abort if --ignore-matching-lines is given
Certain diff options are currently ignored when combined-diff is
shown; mark them as incompatible with the feature.
Will merge to 'next'.
source: <220524.86v8tuvfl1.gmgdl@evledraar.gmail.com>
* tk/apply-case-insensitive (2022-06-21) 3 commits
- apply: support case-only renames in case-insensitive filesystems
- reset: new failing test for reset of case-insensitive duplicate in index
- t4141: test "git apply" with core.ignorecase
"git apply" barfed on a patch that makes a case-only rename on a
case-insensitive filesystem.
Needs review.
source: <pull.1257.v2.git.1655655027.gitgitgadget@gmail.com>
* zh/ls-files-format (2022-06-27) 1 commit
- ls-files: introduce "--format" option
"git ls-files" learns the "--format" option to tweak its output.
Expecting a reroll.
cf. <CAOLTT8Tc95-aUE+uN2d8QjTJpGpGw6cBJfG+bpmyE55OcXTSRA@mail.gmail.com>
source: <pull.1262.v4.git.1656257376109.gitgitgadget@gmail.com>
* ab/test-quoting-fix (2022-06-21) 3 commits
- config tests: fix harmless but broken "rm -r" cleanup
- test-lib.sh: fix prepend_var() quoting issue
- tests: add missing double quotes to included library paths
Fixes for tests when the source directory has unusual characters in
its path, e.g. whitespaces, double-quotes, etc.
Expecting a reroll.
source: <cover-0.3-00000000000-20220621T221928Z-avarab@gmail.com>
* en/merge-dual-dir-renames-fix (2022-06-21) 3 commits
- merge-ort: fix issue with dual rename and add/add conflict
- merge-ort: shuffle the computation and cleanup of potential collisions
- t6423: add tests of dual directory rename plus add/add conflict
Fixes a long-standing corner case bug around directory renames in
the merge-ort strategy.
Needs review.
source: <pull.1268.git.1655871651.gitgitgadget@gmail.com>
* cr/setup-bug-typo (2022-06-17) 1 commit
(merged to 'next' on 2022-06-17 at 8834ffe0ab)
+ setup: fix function name in a BUG() message
Typofix in a BUG() message.
Will cook in 'next'.
source: <pull.1255.git.1654782920256.gitgitgadget@gmail.com>
* zk/push-use-bitmaps (2022-06-17) 1 commit
- send-pack.c: add config push.useBitmaps
"git push" sometimes perform poorly when reachability bitmaps are
used, even in a repository where other operations are helped by
bitmaps. The push.useBitmaps configuration variable is introduced
to allow disabling use of reachability bitmaps only for "git push".
Will merge to 'next'.
source: <pull.1263.v4.git.1655492779228.gitgitgadget@gmail.com>
* jk/remote-show-with-negative-refspecs (2022-06-17) 1 commit
- remote: handle negative refspecs in git remote show
(this branch is used by jk/t5505-restructure.)
"git remote show [-n] frotz" now pays attention to negative
pathspecs.
Will merge to 'next'.
source: <20220617002036.1577-2-jacob.keller@gmail.com>
* js/commit-graph-parsing-without-repo-settings (2022-06-15) 1 commit
- commit-graph: refactor to avoid prepare_repo_settings
Expecting a reroll.
source: <9b56496b0809cc8a25af877ea97042e2cb7f2af6.1655246092.git.steadmon@google.com>
* jk/optim-promisor-object-enumeration (2022-06-16) 1 commit
(merged to 'next' on 2022-06-16 at ce0712a74c)
+ is_promisor_object(): walk promisor packs in pack-order
Collection of what is referenced by objects in promisor packs have
been optimized to inspect these objects in the in-pack order.
Will cook in 'next'.
source: <YqrTsbXbEjx0Pabn@coredump.intra.peff.net>
* ro/mktree-allow-missing-fix (2022-06-21) 1 commit
- mktree: do not check type of remote objects
"git mktree --missing" lazily fetched objects that are missing from
the local object store, which was totally unnecessary.
Will merge to 'next'.
source: <748f39a9-65aa-2110-cf92-7ddf81b5f507@roku.com>
* ll/curl-accept-language (2022-06-13) 2 commits
- PREP??? give initializer to rpc_state
- remote-curl: send Accept-Language header to server
source: <pull.1251.v3.git.1655054421697.gitgitgadget@gmail.com>
* pb/diff-doc-raw-format (2022-06-13) 3 commits
- diff-index.txt: update raw output format in examples
- diff-format.txt: correct misleading wording
- diff-format.txt: dst can be 0* SHA-1 when path is deleted, too
source: <pull.1259.git.1655123383.gitgitgadget@gmail.com>
* rs/archive-with-internal-gzip (2022-06-15) 6 commits
(merged to 'next' on 2022-06-17 at ab5af6acd1)
+ archive-tar: use internal gzip by default
+ archive-tar: use OS_CODE 3 (Unix) for internal gzip
+ archive-tar: add internal gzip implementation
+ archive-tar: factor out write_block()
+ archive: rename archiver data field to filter_command
+ archive: update format documentation
Teach "git archive" to (optionally and then by default) avoid
spawning an external "gzip" process when creating ".tar.gz" (and
".tgz") archives.
Will cook in 'next'.
source: <9df761c3-355a-ede9-7971-b32687fe9abb@web.de>
* ds/branch-checked-out (2022-06-21) 7 commits
(merged to 'next' on 2022-06-21 at e42bc4566f)
+ branch: drop unused worktrees variable
+ fetch: stop passing around unused worktrees variable
(merged to 'next' on 2022-06-17 at c881874257)
+ branch: fix branch_checked_out() leaks
+ branch: use branch_checked_out() when deleting refs
+ fetch: use new branch_checked_out() and add tests
+ branch: check for bisects and rebases
+ branch: add branch_checked_out() helper
Introduce a helper to see if a branch is already being worked on
(hence should not be newly checked out in a working tree), which
performs much better than the existing find_shared_symref() to
replace many uses of the latter.
Will cook in 'next'.
source: <pull.1254.v2.git.1655234853.gitgitgadget@gmail.com>
* jt/connected-show-missing-from-which-side (2022-06-10) 1 commit
- fetch,fetch-pack: clarify connectivity check error
We may find an object missing after a "git fetch" stores the
objects it obtained from the other side, but it is not necessarily
because the remote failed to send necessary objects. Reword the
messages in an attempt to help users explore other possibilities
when they hit this error.
Expecting a reroll.
source: <20220610195247.1177549-1-jonathantanmy@google.com>
* ab/submodule-cleanup (2022-06-15) 12 commits
- git-sh-setup.sh: remove "say" function, change last users
- git-submodule.sh: use "$quiet", not "$GIT_QUIET"
- submodule--helper: eliminate internal "--update" option
- submodule--helper: understand --checkout, --merge and --rebase synonyms
- submodule--helper: report "submodule" as our name in "-h" output
- submodule--helper: rename "absorb-git-dirs" to "absorbgitdirs"
- submodule update: remove "-v" option
- submodule--helper: have --require-init imply --init
- git-submodule.sh: remove unused top-level "--branch" argument
- git-submodule.sh: make "$cached" variable a boolean
- git-submodule.sh: remove unused $prefix var and --super-prefix
- git-submodule.sh: remove unused sanitize_submodule_env()
Further preparation to turn git-submodule.sh into a builtin.
Will merge to 'next'?
source: <cover-v2-00.12-00000000000-20220613T220150Z-avarab@gmail.com>
* jc/resolve-undo (2022-06-09) 1 commit
(merged to 'next' on 2022-06-15 at c195e5a2d9)
+ revision: mark blobs needed for resolve-undo as reachable
The resolve-undo information in the index was not protected against
GC, which has been corrected.
Will cook in 'next'.
source: <xmqqfskdieqz.fsf@gitster.g>
* ab/build-gitweb (2022-06-02) 7 commits
- Makefile: build 'gitweb' in the default target
- gitweb/Makefile: include in top-level Makefile
- gitweb: remove "test" and "test-installed" targets
- gitweb/Makefile: prepare to merge into top-level Makefile
- gitweb/Makefile: clear up and de-duplicate the gitweb.{css,js} vars
- gitweb/Makefile: add a $(GITWEB_ALL) variable
- gitweb/Makefile: define all .PHONY prerequisites inline
Teach "make all" to build gitweb as well.
Needs review.
source: <cover-v2-0.7-00000000000-20220531T173805Z-avarab@gmail.com>
* ab/test-without-templates (2022-06-06) 7 commits
- tests: don't assume a .git/info for .git/info/sparse-checkout
- tests: don't assume a .git/info for .git/info/exclude
- tests: don't assume a .git/info for .git/info/refs
- tests: don't assume a .git/info for .git/info/attributes
- tests: don't assume a .git/info for .git/info/grafts
- tests: don't depend on template-created .git/branches
- t0008: don't rely on default ".git/info/exclude"
Tweak tests so that they still work when the "git init" template
did not create .git/info directory.
Will merge to 'next'?
source: <cover-v2-0.7-00000000000-20220603T110506Z-avarab@gmail.com>
* ac/bitmap-format-doc (2022-06-16) 3 commits
(merged to 'next' on 2022-06-16 at 5591d11601)
+ bitmap-format.txt: add information for trailing checksum
+ bitmap-format.txt: fix some formatting issues
+ bitmap-format.txt: feed the file to asciidoc to generate html
Adjust technical/bitmap-format to be formatted by AsciiDoc, and
add some missing information to the documentation.
Will cook in 'next'.
source: <pull.1246.v4.git.1655355834.gitgitgadget@gmail.com>
* hx/unpack-streaming (2022-06-13) 6 commits
- unpack-objects: use stream_loose_object() to unpack large objects
- core doc: modernize core.bigFileThreshold documentation
- object-file.c: add "stream_loose_object()" to handle large object
- object-file.c: factor out deflate part of write_loose_object()
- object-file.c: refactor write_loose_object() to several steps
- unpack-objects: low memory footprint for get_data() in dry_run mode
Allow large objects read from a packstream to be streamed into a
loose object file straight, without having to keep it in-core as a
whole.
Will merge to 'next'.
source: <cover.1654914555.git.chiyutianyi@gmail.com>
* tb/show-ref-count (2022-06-06) 2 commits
- builtin/show-ref.c: limit output with `--count`
- builtin/show-ref.c: rename `found_match` to `matches_nr`
"git show-ref" learned to stop after emitting N refs with the new
"--count=N" option.
Expecting a reroll.
cf. <xmqqczfl4ce1.fsf@gitster.g>
source: <cover.1654552560.git.me@ttaylorr.com>
* ds/bundle-uri-more (2022-06-06) 6 commits
- fetch: add 'refs/bundle/' to log.excludeDecoration
- bundle-uri: add support for http(s):// and file://
- fetch: add --bundle-uri option
- bundle-uri: create basic file-copy logic
- remote-curl: add 'get' capability
- docs: document bundle URI standard
The "bundle URI" topic.
Needs review.
source: <pull.1248.git.1654545325.gitgitgadget@gmail.com>
* js/bisect-in-c (2022-05-21) 15 commits
- bisect: no longer try to clean up left-over `.git/head-name` files
- bisect: remove Cogito-related code
- Turn `git bisect` into a full built-in
- bisect: teach the `bisect--helper` command to show the correct usage strings
- bisect: move even the command-line parsing to `bisect--helper`
- bisect--helper: return only correct exit codes in `cmd_*()`
- bisect--helper: move the `BISECT_STATE` case to the end
- bisect--helper: make `--bisect-state` optional
- bisect--helper: align the sub-command order with git-bisect.sh
- bisect--helper: using `--bisect-state` without an argument is a bug
- bisect--helper: really retire `--bisect-autostart`
- bisect--helper: really retire --bisect-next-check
- bisect--helper: retire the --no-log option
- bisect: avoid double-quoting when printing the failed command
- bisect run: fix the error message
Final bits of "git bisect.sh" have been rewritten in C.
The command line parsing is reported to be still broken.
cf. <220521.86zgjazuy4.gmgdl@evledraar.gmail.com>
source: <pull.1132.v3.git.1653144546.gitgitgadget@gmail.com>
* gc/bare-repo-discovery (2022-06-07) 5 commits
- setup.c: create `discovery.bare`
- safe.directory: use git_protected_config()
- config: read protected config with `git_protected_config()`
- Documentation: define protected configuration
- Documentation/git-config.txt: add SCOPES section
Introduce a discovery.barerepository configuration variable that
allows users to forbid discovery of bare repositories.
Expecting a reroll.
cf. <xmqqbkv4t7gp.fsf@gitster.g>
source: <29053d029f8ec61095a2ad557be38b1d485a158f.1654635432.git.gitgitgadget@gmail.com>
* gg/worktree-from-the-above (2022-06-21) 2 commits
- dir: minor refactoring / clean-up
- dir: traverse into repository
With a non-bare repository, with core.worktree pointing at a
directory that has the repository as its subdirectory, regressed in
Git 2.27 days.
Will merge to 'next'.
source: <20220616234433.225-1-gg.oss@outlook.com>
source: <20220616231956.154-1-gg.oss@outlook.com>
* ar/send-email-confirm-by-default (2022-04-22) 1 commit
- send-email: always confirm by default
"git send-email" is changed so that by default it asks for
confirmation before sending each message out.
Will discard.
I wanted to like this, and had it in the version of Git I use
myself for daily work, but the prompting turned out to be somewhat
distracting.
Thoughts?
source: <20220422083629.1404989-1-hi@alyssa.is>
^ permalink raw reply [relevance 3%]
* What's cooking in git.git (Jun 2022, #07; Wed, 22)
@ 2022-06-22 19:32 3% Junio C Hamano
0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2022-06-22 19:32 UTC (permalink / raw)
To: git
Here are the topics that have been cooking in my tree. Commits
prefixed with '+' are in 'next' (being in 'next' is a sign that a
topic is stable enough to be used and are candidate to be in a
future release). Commits prefixed with '-' are only in 'seen',
and aren't considered "accepted" at all.
Git 2.37-rc2 has been tagged. Due to summer vacation season in the
northern hemisphere, this cycle is shorter than usual. We expect to
tag the final 2.37 release early next week. Hopefully we fixed all
the known regressions in 2.36 without adding too many new ones.
Some new topics are still marked for 'next', but the merges of them
obviously will happen in the next cycle---they will not be in the
upcoming release.
Copies of the source code to Git live in many repositories, and the
following is a list of the ones I push into or their mirrors. Some
repositories have only a subset of branches.
With maint, master, next, seen, todo:
git://git.kernel.org/pub/scm/git/git.git/
git://repo.or.cz/alt-git.git/
https://kernel.googlesource.com/pub/scm/git/git/
https://github.com/git/git/
https://gitlab.com/git-vcs/git/
With all the integration branches and topics broken out:
https://github.com/gitster/git/
Even though the preformatted documentation in HTML and man format
are not sources, they are published in these repositories for
convenience (replace "htmldocs" with "manpages" for the manual
pages):
git://git.kernel.org/pub/scm/git/git-htmldocs.git/
https://github.com/gitster/git-htmldocs.git/
Release tarballs are available at:
https://www.kernel.org/pub/software/scm/git/
--------------------------------------------------
[New Topics]
* dr/i18n-die-warn-error-usage (2022-06-21) 1 commit
- i18n: mark message helpers prefix for translation
Give _() markings to fatal/warning/usage: that is shown in front of
these messages.
Will merge to 'next'?
source: <pull.1279.v2.git.git.1655819877758.gitgitgadget@gmail.com>
* ds/t5510-brokequote (2022-06-21) 1 commit
- t5510: replace 'origin' with URL more carefully
Test fix.
source: <484a330e-0902-6e1b-8189-63c72dcea494@github.com>
* en/merge-restore-to-pristine (2022-06-21) 6 commits
- merge: do not exit restore_state() prematurely
- merge: ensure we can actually restore pre-merge state
- merge: make restore_state() restore staged state too
- merge: fix save_state() to work when there are racy-dirty files
- merge: remove unused variable
- t6424: make sure a failed merge preserves local changes
When "git merge" finds that it cannot perform a merge, it should
restore the working tree to the state before the command was
initiated, but in some corner cases it didn't.
Needs review.
source: <pull.1231.v2.git.1655621424.gitgitgadget@gmail.com>
* rs/combine-diff-with-incompatible-options (2022-06-21) 2 commits
- combine-diff: abort if --output is given
- combine-diff: abort if --ignore-matching-lines is given
Certain diff options are currently ignored when combined-diff is
shown; mark them as incompatible with the feature.
Will merge to 'next'?
source: <220524.86v8tuvfl1.gmgdl@evledraar.gmail.com>
* tk/apply-case-insensitive (2022-06-21) 3 commits
- apply: support case-only renames in case-insensitive filesystems
- reset: new failing test for reset of case-insensitive duplicate in index
- t4141: test "git apply" with core.ignorecase
"git apply" barfed on a patch that makes a case-only rename on a
case-insensitive filesystem.
Needs review.
source: <pull.1257.v2.git.1655655027.gitgitgadget@gmail.com>
* zh/ls-files-format (2022-06-21) 1 commit
- ls-files: introduce "--format" option
"git ls-files" learns the "--format" option to tweak its output.
Needs review.
source: <pull.1262.v3.git.1655777140231.gitgitgadget@gmail.com>
* ab/test-quoting-fix (2022-06-21) 3 commits
- config tests: fix harmless but broken "rm -r" cleanup
- test-lib.sh: fix prepend_var() quoting issue
- tests: add missing double quotes to included library paths
Fixes for tests when the source directory has unusual characters in
its path, e.g. whitespaces, double-quotes, etc.
Expecting a reroll.
source: <cover-0.3-00000000000-20220621T221928Z-avarab@gmail.com>
* en/merge-dual-dir-renames-fix (2022-06-21) 3 commits
- merge-ort: fix issue with dual rename and add/add conflict
- merge-ort: shuffle the computation and cleanup of potential collisions
- t6423: add tests of dual directory rename plus add/add conflict
Fixes a long-standing corner case bug around directory renames in
the merge-ort strategy.
Needs review.
source: <pull.1268.git.1655871651.gitgitgadget@gmail.com>
--------------------------------------------------
[Graduated to 'master']
* jp/prompt-clear-before-upstream-mark (2022-06-10) 2 commits
(merged to 'next' on 2022-06-15 at e580db03e9)
+ git-prompt: fix expansion of branch colour codes
(merged to 'next' on 2022-06-08 at 201a84ad63)
+ git-prompt: make colourization consistent
Bash command line prompt (in contrib/) update.
source: <20220607115024.64724-1-joak-pet@online.no>
* tb/cruft-packs (2022-06-21) 1 commit
(merged to 'next' on 2022-06-21 at 0703251124)
+ gc: simplify --cruft description
Docfix.
source: <157741e2-cd06-9304-bb21-c67c2cbd923e@web.de>
--------------------------------------------------
[Stalled]
* en/merge-tree (2022-02-23) 13 commits
- git-merge-tree.txt: add a section on potentional usage mistakes
- merge-tree: add a --allow-unrelated-histories flag
- merge-tree: allow `ls-files -u` style info to be NUL terminated
- merge-tree: provide easy access to `ls-files -u` style info
- merge-tree: provide a list of which files have conflicts
- merge-ort: provide a merge_get_conflicted_files() helper function
- merge-tree: support including merge messages in output
- merge-ort: split out a separate display_update_messages() function
- merge-tree: implement real merges
- merge-tree: add option parsing and initial shell for real merge function
- merge-tree: move logic for existing merge into new function
- merge-tree: rename merge_trees() to trivial_merge_trees()
- Merge branch 'en/remerge-diff' into en/merge-trees
A new command is introduced that takes two commits and computes a
tree that would be contained in the resulting merge commit, if the
histories leading to these two commits were to be merged, and is
added as a new mode of "git merge-tree" subcommand.
On hold.
cf. <CABPp-BGZ7OAYRR5YKRsxJSo-C=ho+qcNAkqwkim8CkhCfCeHsA@mail.gmail.com>
source: <pull.1122.v6.git.1645602413.gitgitgadget@gmail.com>
* bc/stash-export (2022-04-08) 4 commits
- builtin/stash: provide a way to import stashes from a ref
- builtin/stash: provide a way to export stashes to a ref
- builtin/stash: factor out revision parsing into a function
- object-name: make get_oid quietly return an error
A mechanism to export and import stash entries to and from a normal
commit to transfer it across repositories has been introduced.
Expecting a reroll.
cf. <YnL2d4Vr9Vr7W4Hj@camp.crustytoothpaste.net>
source: <20220407215352.3491567-1-sandals@crustytoothpaste.net>
* cw/remote-object-info (2022-05-06) 11 commits
- SQUASH??? coccicheck
- SQUASH??? ensure that coccicheck is happy
- SQUASH??? compilation fix
- cat-file: add --batch-command remote-object-info command
- cat-file: move parse_cmd and DEFAULT_FORMAT up
- transport: add object-info fallback to fetch
- transport: add client side capability to request object-info
- object-info: send attribute packet regardless of object ids
- object-store: add function to free object_info contents
- fetch-pack: move fetch default settings
- fetch-pack: refactor packet writing
A client component to talk with the object-info endpoint.
Expecting a reroll.
source: <20220502170904.2770649-1-calvinwan@google.com>
--------------------------------------------------
[Cooking]
* cr/setup-bug-typo (2022-06-17) 1 commit
(merged to 'next' on 2022-06-17 at 8834ffe0ab)
+ setup: fix function name in a BUG() message
Typofix in a BUG() message.
Will cook in 'next'.
source: <pull.1255.git.1654782920256.gitgitgadget@gmail.com>
* zk/push-use-bitmaps (2022-06-17) 1 commit
- send-pack.c: add config push.useBitmaps
"git push" sometimes perform poorly when reachability bitmaps are
used, even in a repository where other operations are helped by
bitmaps. The push.useBitmaps configuration variable is introduced
to allow disabling use of reachability bitmaps only for "git push".
Will merge to 'next'?
source: <pull.1263.v4.git.1655492779228.gitgitgadget@gmail.com>
* jk/remote-show-with-negative-refspecs (2022-06-17) 1 commit
- remote: handle negative refspecs in git remote show
(this branch is used by jk/t5505-restructure.)
"git remote show [-n] frotz" now pays attention to negative
pathspecs.
Will merge to 'next'?
source: <20220617002036.1577-2-jacob.keller@gmail.com>
* js/commit-graph-parsing-without-repo-settings (2022-06-15) 1 commit
- commit-graph: refactor to avoid prepare_repo_settings
source: <9b56496b0809cc8a25af877ea97042e2cb7f2af6.1655246092.git.steadmon@google.com>
* jk/optim-promisor-object-enumeration (2022-06-16) 1 commit
(merged to 'next' on 2022-06-16 at ce0712a74c)
+ is_promisor_object(): walk promisor packs in pack-order
Collection of what is referenced by objects in promisor packs have
been optimized to inspect these objects in the in-pack order.
Will cook in 'next'.
source: <YqrTsbXbEjx0Pabn@coredump.intra.peff.net>
* ro/mktree-allow-missing-fix (2022-06-21) 1 commit
- mktree: do not check type of remote objects
"git mktree --missing" lazily fetched objects that are missing from
the local object store, which was totally unnecessary.
Will merge to 'next'?
source: <748f39a9-65aa-2110-cf92-7ddf81b5f507@roku.com>
* ll/curl-accept-language (2022-06-13) 2 commits
- PREP??? give initializer to rpc_state
- remote-curl: send Accept-Language header to server
source: <pull.1251.v3.git.1655054421697.gitgitgadget@gmail.com>
* pb/diff-doc-raw-format (2022-06-13) 3 commits
- diff-index.txt: update raw output format in examples
- diff-format.txt: correct misleading wording
- diff-format.txt: dst can be 0* SHA-1 when path is deleted, too
source: <pull.1259.git.1655123383.gitgitgadget@gmail.com>
* rs/archive-with-internal-gzip (2022-06-15) 6 commits
(merged to 'next' on 2022-06-17 at ab5af6acd1)
+ archive-tar: use internal gzip by default
+ archive-tar: use OS_CODE 3 (Unix) for internal gzip
+ archive-tar: add internal gzip implementation
+ archive-tar: factor out write_block()
+ archive: rename archiver data field to filter_command
+ archive: update format documentation
Teach "git archive" to (optionally and then by default) avoid
spawning an external "gzip" process when creating ".tar.gz" (and
".tgz") archives.
Will cook in 'next'.
source: <9df761c3-355a-ede9-7971-b32687fe9abb@web.de>
* ds/branch-checked-out (2022-06-21) 7 commits
(merged to 'next' on 2022-06-21 at e42bc4566f)
+ branch: drop unused worktrees variable
+ fetch: stop passing around unused worktrees variable
(merged to 'next' on 2022-06-17 at c881874257)
+ branch: fix branch_checked_out() leaks
+ branch: use branch_checked_out() when deleting refs
+ fetch: use new branch_checked_out() and add tests
+ branch: check for bisects and rebases
+ branch: add branch_checked_out() helper
Introduce a helper to see if a branch is already being worked on
(hence should not be newly checked out in a working tree), which
performs much better than the existing find_shared_symref() to
replace many uses of the latter.
Will cook in 'next'.
source: <pull.1254.v2.git.1655234853.gitgitgadget@gmail.com>
* jt/connected-show-missing-from-which-side (2022-06-10) 1 commit
- fetch,fetch-pack: clarify connectivity check error
We may find an object missing after a "git fetch" stores the
objects it obtained from the other side, but it is not necessarily
because the remote failed to send necessary objects. Reword the
messages in an attempt to help users explore other possibilities
when they hit this error.
Expecting a reroll.
source: <20220610195247.1177549-1-jonathantanmy@google.com>
* gc/submodule-update (2022-06-15) 12 commits
- git-sh-setup.sh: remove "say" function, change last users
- git-submodule.sh: use "$quiet", not "$GIT_QUIET"
- submodule--helper: eliminate internal "--update" option
- submodule--helper: understand --checkout, --merge and --rebase synonyms
- submodule--helper: report "submodule" as our name in "-h" output
- submodule--helper: rename "absorb-git-dirs" to "absorbgitdirs"
- submodule update: remove "-v" option
- submodule--helper: have --require-init imply --init
- git-submodule.sh: remove unused top-level "--branch" argument
- git-submodule.sh: make "$cached" variable a boolean
- git-submodule.sh: remove unused $prefix var and --super-prefix
- git-submodule.sh: remove unused sanitize_submodule_env()
More work on "git submodule update".
Needs review.
source: <cover-v2-00.12-00000000000-20220613T220150Z-avarab@gmail.com>
* jc/resolve-undo (2022-06-09) 1 commit
(merged to 'next' on 2022-06-15 at c195e5a2d9)
+ revision: mark blobs needed for resolve-undo as reachable
The resolve-undo information in the index was not protected against
GC, which has been corrected.
Will cook in 'next'.
source: <xmqqfskdieqz.fsf@gitster.g>
* ab/build-gitweb (2022-06-02) 7 commits
- Makefile: build 'gitweb' in the default target
- gitweb/Makefile: include in top-level Makefile
- gitweb: remove "test" and "test-installed" targets
- gitweb/Makefile: prepare to merge into top-level Makefile
- gitweb/Makefile: clear up and de-duplicate the gitweb.{css,js} vars
- gitweb/Makefile: add a $(GITWEB_ALL) variable
- gitweb/Makefile: define all .PHONY prerequisites inline
Teach "make all" to build gitweb as well.
Needs review.
source: <cover-v2-0.7-00000000000-20220531T173805Z-avarab@gmail.com>
* ab/test-without-templates (2022-06-06) 7 commits
- tests: don't assume a .git/info for .git/info/sparse-checkout
- tests: don't assume a .git/info for .git/info/exclude
- tests: don't assume a .git/info for .git/info/refs
- tests: don't assume a .git/info for .git/info/attributes
- tests: don't assume a .git/info for .git/info/grafts
- tests: don't depend on template-created .git/branches
- t0008: don't rely on default ".git/info/exclude"
Tweak tests so that they still work when the "git init" template
did not create .git/info directory.
Will merge to 'next'?
source: <cover-v2-0.7-00000000000-20220603T110506Z-avarab@gmail.com>
* ac/bitmap-format-doc (2022-06-16) 3 commits
(merged to 'next' on 2022-06-16 at 5591d11601)
+ bitmap-format.txt: add information for trailing checksum
+ bitmap-format.txt: fix some formatting issues
+ bitmap-format.txt: feed the file to asciidoc to generate html
Adjust technical/bitmap-format to be formatted by AsciiDoc, and
add some missing information to the documentation.
Will cook in 'next'.
source: <pull.1246.v4.git.1655355834.gitgitgadget@gmail.com>
* hx/unpack-streaming (2022-06-13) 6 commits
- unpack-objects: use stream_loose_object() to unpack large objects
- core doc: modernize core.bigFileThreshold documentation
- object-file.c: add "stream_loose_object()" to handle large object
- object-file.c: factor out deflate part of write_loose_object()
- object-file.c: refactor write_loose_object() to several steps
- unpack-objects: low memory footprint for get_data() in dry_run mode
Allow large objects read from a packstream to be streamed into a
loose object file straight, without having to keep it in-core as a
whole.
Will merge to 'next'?
source: <cover.1654914555.git.chiyutianyi@gmail.com>
* tb/show-ref-count (2022-06-06) 2 commits
- builtin/show-ref.c: limit output with `--count`
- builtin/show-ref.c: rename `found_match` to `matches_nr`
"git show-ref" learned to stop after emitting N refs with the new
"--count=N" option.
Expecting a reroll.
cf. <xmqqczfl4ce1.fsf@gitster.g>
source: <cover.1654552560.git.me@ttaylorr.com>
* ds/bundle-uri-more (2022-06-06) 6 commits
- fetch: add 'refs/bundle/' to log.excludeDecoration
- bundle-uri: add support for http(s):// and file://
- fetch: add --bundle-uri option
- bundle-uri: create basic file-copy logic
- remote-curl: add 'get' capability
- docs: document bundle URI standard
The "bundle URI" topic.
Needs review.
source: <pull.1248.git.1654545325.gitgitgadget@gmail.com>
* js/bisect-in-c (2022-05-21) 15 commits
- bisect: no longer try to clean up left-over `.git/head-name` files
- bisect: remove Cogito-related code
- Turn `git bisect` into a full built-in
- bisect: teach the `bisect--helper` command to show the correct usage strings
- bisect: move even the command-line parsing to `bisect--helper`
- bisect--helper: return only correct exit codes in `cmd_*()`
- bisect--helper: move the `BISECT_STATE` case to the end
- bisect--helper: make `--bisect-state` optional
- bisect--helper: align the sub-command order with git-bisect.sh
- bisect--helper: using `--bisect-state` without an argument is a bug
- bisect--helper: really retire `--bisect-autostart`
- bisect--helper: really retire --bisect-next-check
- bisect--helper: retire the --no-log option
- bisect: avoid double-quoting when printing the failed command
- bisect run: fix the error message
Final bits of "git bisect.sh" have been rewritten in C.
The command line parsing is reported to be still broken.
cf. <220521.86zgjazuy4.gmgdl@evledraar.gmail.com>
source: <pull.1132.v3.git.1653144546.gitgitgadget@gmail.com>
* gc/bare-repo-discovery (2022-06-07) 5 commits
- setup.c: create `discovery.bare`
- safe.directory: use git_protected_config()
- config: read protected config with `git_protected_config()`
- Documentation: define protected configuration
- Documentation/git-config.txt: add SCOPES section
Introduce a discovery.barerepository configuration variable that
allows users to forbid discovery of bare repositories.
Expecting a reroll.
cf. <xmqqbkv4t7gp.fsf@gitster.g>
source: <29053d029f8ec61095a2ad557be38b1d485a158f.1654635432.git.gitgitgadget@gmail.com>
* gg/worktree-from-the-above (2022-06-21) 2 commits
- dir: minor refactoring / clean-up
- dir: traverse into repository
With a non-bare repository, with core.worktree pointing at a
directory that has the repository as its subdirectory, regressed in
Git 2.27 days.
Will merge to 'next'.
source: <20220616234433.225-1-gg.oss@outlook.com>
source: <20220616231956.154-1-gg.oss@outlook.com>
* ar/send-email-confirm-by-default (2022-04-22) 1 commit
- send-email: always confirm by default
"git send-email" is changed so that by default it asks for
confirmation before sending each message out.
Will discard.
I wanted to like this, and had it in the version of Git I use
myself for daily work, but the prompting turned out to be somewhat
distracting.
Thoughts?
source: <20220422083629.1404989-1-hi@alyssa.is>
--------------------------------------------------
[Discarded]
* jc/apply-icase-tests (2022-06-13) 1 commit
. t4141: test "git apply" with core.ignorecase
Now a part of tk/apply-case-insensitive topic.
source: <xmqqo7yw77qo.fsf@gitster.g>
* tl/pack-bitmap-trace (2022-06-21) 5 commits
. bitmap: add trace2 outputs during open "bitmap" file
. pack-bitmap.c: using error() instead of silently returning -1
. pack-bitmap.c: make warnings support i18N when opening bitmap
. pack-bitmap.c: rename "idx_name" to "bitmap_name"
. pack-bitmap.c: continue looping when first MIDX bitmap is found
Add trace2 traces in code paths involving the pack bitmaps.
source: <cover.1655817253.git.dyroneteng@gmail.com>
^ permalink raw reply [relevance 3%]
* [PATCH v2 3/6] merge: fix save_state() to work when there are racy-dirty files
2022-06-19 6:50 3% ` [PATCH v2 0/6] " Elijah Newren via GitGitGadget
@ 2022-06-19 6:50 2% ` Elijah Newren via GitGitGadget
2022-07-17 16:28 2% ` ZheNing Hu
2022-07-19 22:43 2% ` Junio C Hamano
2022-07-21 8:16 3% ` [PATCH v3 0/7] Fix merge restore state Elijah Newren via GitGitGadget
2 siblings, 2 replies; 200+ results
From: Elijah Newren via GitGitGadget @ 2022-06-19 6:50 UTC (permalink / raw)
To: git; +Cc: ZheNing Hu, Elijah Newren, Elijah Newren
From: Elijah Newren <newren@gmail.com>
When there are racy-dirty files, but no files are modified,
`git stash create` exits with unsuccessful status. This causes merge
to fail. Refresh the index first to avoid this problem.
Signed-off-by: Elijah Newren <newren@gmail.com>
---
builtin/merge.c | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/builtin/merge.c b/builtin/merge.c
index 00de224a2da..8ce4336dd3f 100644
--- a/builtin/merge.c
+++ b/builtin/merge.c
@@ -313,8 +313,16 @@ static int save_state(struct object_id *stash)
int len;
struct child_process cp = CHILD_PROCESS_INIT;
struct strbuf buffer = STRBUF_INIT;
+ struct lock_file lock_file = LOCK_INIT;
+ int fd;
int rc = -1;
+ fd = repo_hold_locked_index(the_repository, &lock_file, 0);
+ refresh_cache(REFRESH_QUIET);
+ if (0 <= fd)
+ repo_update_index_if_able(the_repository, &lock_file);
+ rollback_lock_file(&lock_file);
+
strvec_pushl(&cp.args, "stash", "create", NULL);
cp.out = -1;
cp.git_cmd = 1;
--
gitgitgadget
^ permalink raw reply related [relevance 2%]
* [PATCH v2 0/6] Fix merge restore state
@ 2022-06-19 6:50 3% ` Elijah Newren via GitGitGadget
2022-06-19 6:50 2% ` [PATCH v2 3/6] merge: fix save_state() to work when there are racy-dirty files Elijah Newren via GitGitGadget
` (2 more replies)
0 siblings, 3 replies; 200+ results
From: Elijah Newren via GitGitGadget @ 2022-06-19 6:50 UTC (permalink / raw)
To: git; +Cc: ZheNing Hu, Elijah Newren
MAINTAINER NOTE: Rebased on latest main/master. (In particular, needs
vd/sparse-stash; otherwise, the changes made here regress a
ensure-full-index testcase in t1092). Also, this fixes issues that predate
the v2.37 cycle, so this series can wait until v2.38 opens up.
Other note: If this rounds needs updates, ZheNing Hu may be the one to
respond and make any necessary updates, as per [1].
----------------------------------------------------------------------------
This is a simple series to fix restore_state() in builtin/merge.c, fixing
the issue reported by ZheNing Hu over here:
https://lore.kernel.org/git/CAOLTT8R7QmpvaFPTRs3xTpxr7eiuxF-ZWtvUUSC0-JOo9Y+SqA@mail.gmail.com/
Changes since v1:
* Rebased
* Included Junio's patch providing more testcases from
https://lore.kernel.org/git/xmqqbkvtnyae.fsf@gitster.g/
* Added three new patches to fix issues highlighted by Junio's testcases,
in particular to (a) fix stashing with racy-dirty files present, (b) fix
restoring staged state in restore_state(), and (c) ensure we can restore
pre-merge state. All three were long-standing issues that we just hadn't
noticed yet and thus are useful fixes on their own. However, my fix from
v1 (which still remains as the final patch) does make it easier to notice
these issues, and in particular that combined with Junio's new testcases
unearthed those problems.
[1]
https://lore.kernel.org/git/CAOLTT8RpGGioOyaMw5tkeWXmHpOaBW9UH8JghUvBRQ50ZcDdYQ@mail.gmail.com/
Elijah Newren (5):
merge: remove unused variable
merge: fix save_state() to work when there are racy-dirty files
merge: make restore_state() restore staged state too
merge: ensure we can actually restore pre-merge state
merge: do not exit restore_state() prematurely
Junio C Hamano (1):
t6424: make sure a failed merge preserves local changes
builtin/merge.c | 32 ++++++++++++++----------
t/t6424-merge-unrelated-index-changes.sh | 32 ++++++++++++++++++++++--
t/t7607-merge-state.sh | 25 ++++++++++++++++++
3 files changed, 74 insertions(+), 15 deletions(-)
create mode 100755 t/t7607-merge-state.sh
base-commit: 8ddf593a250e07d388059f7e3f471078e1d2ed5c
Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-1231%2Fnewren%2Ffix-merge-restore-state-v2
Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-1231/newren/fix-merge-restore-state-v2
Pull-Request: https://github.com/gitgitgadget/git/pull/1231
Range-diff vs v1:
-: ----------- > 1: 6147e72c309 t6424: make sure a failed merge preserves local changes
1: 042d624b815 = 2: 230d84f09c8 merge: remove unused variable
-: ----------- > 3: 89e5e633241 merge: fix save_state() to work when there are racy-dirty files
-: ----------- > 4: 4a8b7c9e06d merge: make restore_state() restore staged state too
-: ----------- > 5: a03075167c1 merge: ensure we can actually restore pre-merge state
2: 88bdca72a78 ! 6: 0783b48c121 merge: make restore_state() do as its name says
@@ Metadata
Author: Elijah Newren <newren@gmail.com>
## Commit message ##
- merge: make restore_state() do as its name says
+ merge: do not exit restore_state() prematurely
Previously, if the user:
@@ Commit message
## builtin/merge.c ##
@@ builtin/merge.c: static void restore_state(const struct object_id *head,
{
- const char *args[] = { "stash", "apply", NULL, NULL };
+ const char *args[] = { "stash", "apply", "--index", NULL, NULL };
- if (is_null_oid(stash))
- return;
@@ builtin/merge.c: static void restore_state(const struct object_id *head,
+ if (is_null_oid(stash))
+ goto refresh_cache;
+
- args[2] = oid_to_hex(stash);
+ args[3] = oid_to_hex(stash);
/*
@@ builtin/merge.c: static void restore_state(const struct object_id *head,
--
gitgitgadget
^ permalink raw reply [relevance 3%]
* [PATCH v2 0/8] rebase: make reflog messages independent of the backend
2022-02-21 11:10 3% [PATCH 0/7] rebase: make reflog messages independent of the backend Phillip Wood via GitGitGadget
` (3 preceding siblings ...)
2022-04-17 2:09 0% ` [PATCH 0/7] rebase: make reflog messages independent of the backend Elijah Newren
@ 2022-04-20 9:56 3% ` Phillip Wood via GitGitGadget
2022-04-20 9:56 2% ` [PATCH v2 3/8] rebase --merge: fix reflog when continuing Phillip Wood via GitGitGadget
` (2 more replies)
4 siblings, 3 replies; 200+ results
From: Phillip Wood via GitGitGadget @ 2022-04-20 9:56 UTC (permalink / raw)
To: git; +Cc: Phillip Wood, Christian Couder, Elijah Newren, Phillip Wood
Thanks to Christian and Elijah for their comments on V1.
I've updated commit message for patch 1 to try and be clearer about the
removal of a call to strbuf_release() and spilt out the test changes from
the old patch 2 into a separate preparatory patch.
V1 Cover Letter:
This is a series of rebase reflog related patches with the aim of unifying
the reflog messages from the two rebase backends.
* improve rebase reflog test coverage
* rebase --merge: fix reflog messages for --continue and --skip
* rebase --apply: respect GIT_REFLOG_ACTION
* rebase --abort: improve reflog message
* unify reflog messages between the two rebase backends
This series is based on pw/use-inprocess-checkout-in-rebase
Phillip Wood (8):
rebase --apply: remove duplicated code
t3406: rework rebase reflog tests
rebase --merge: fix reflog when continuing
rebase --merge: fix reflog message after skipping
rebase --apply: respect GIT_REFLOG_ACTION
rebase --apply: make reflog messages match rebase --merge
rebase --abort: improve reflog message
rebase: cleanup action handling
builtin/rebase.c | 144 ++++++++++++-----------------
sequencer.c | 5 ++
t/t3406-rebase-message.sh | 185 +++++++++++++++++++++++++++++++-------
3 files changed, 214 insertions(+), 120 deletions(-)
base-commit: 38c541ce94048cf72aa4f465be9314423a57f445
Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-1150%2Fphillipwood%2Fwip%2Frebase-reflog-fixes-v2
Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-1150/phillipwood/wip/rebase-reflog-fixes-v2
Pull-Request: https://github.com/gitgitgadget/git/pull/1150
Range-diff vs v1:
1: 243e7b0c372 ! 1: a4320f2fcf3 rebase --apply: remove duplicated code
@@ Commit message
to do as we have already updated HEAD.
Note that the removal of "strbuf_release(&msg)" is safe as there is an
- identical call just above this hunk.
+ identical call just above this hunk which can be seen by viewing the
+ diff with -U6.
Signed-off-by: Phillip Wood <phillip.wood@dunelm.org.uk>
2: 493254ffbb8 ! 2: 0904b50a377 rebase --merge: fix reflog when continuing
@@ Metadata
Author: Phillip Wood <phillip.wood@dunelm.org.uk>
## Commit message ##
- rebase --merge: fix reflog when continuing
+ t3406: rework rebase reflog tests
- The reflog message for a conflict resolution committed by "rebase
- --continue" looks like
+ Refactor the tests in preparation for adding more tests in the next
+ few commits. The reworked tests use the same function for testing both
+ the "merge" and "apply" backends. The test coverage for the "apply"
+ backend now includes setting GIT_REFLOG_ACTION.
- rebase (continue): commit subject line
-
- Unfortunately the reflog message each subsequent pick look like
-
- rebase (continue) (pick): commit subject line
-
- Fix this by setting the reflog message for "rebase --continue" in
- sequencer_continue() so it does not affect subsequent commits. This
- introduces a memory leak similar to the one leaking GIT_REFLOG_ACTION
- in pick_commits(). Both of these will be fixed in a future series that
- stops the sequencer calling setenv().
+ Note that rebasing the "conflicts" branch does not create any
+ conflicts yet. A commit to do that will be added in the next commit
+ and the diff ends up smaller if we have don't rename the branch when
+ it is added.
Signed-off-by: Phillip Wood <phillip.wood@dunelm.org.uk>
- ## builtin/rebase.c ##
-@@ builtin/rebase.c: int cmd_rebase(int argc, const char **argv, const char *prefix)
- int fd;
-
- options.action = "continue";
-- set_reflog_action(&options);
--
- /* Sanity check */
- if (get_oid("HEAD", &head))
- die(_("Cannot read HEAD"));
-
- ## sequencer.c ##
-@@ sequencer.c: int sequencer_continue(struct repository *r, struct replay_opts *opts)
- if (read_populate_opts(opts))
- return -1;
- if (is_rebase_i(opts)) {
-+ char *previous_reflog_action;
-+
- if ((res = read_populate_todo(r, &todo_list, opts)))
- goto release_todo_list;
-
-@@ sequencer.c: int sequencer_continue(struct repository *r, struct replay_opts *opts)
- unlink(rebase_path_dropped());
- }
-
-+ previous_reflog_action = xstrdup(getenv(GIT_REFLOG_ACTION));
-+ setenv(GIT_REFLOG_ACTION, reflog_message(opts, "continue", NULL), 1);
- if (commit_staged_changes(r, opts, &todo_list)) {
- res = -1;
- goto release_todo_list;
- }
-+ setenv(GIT_REFLOG_ACTION, previous_reflog_action, 1);
- } else if (!file_exists(get_todo_path(opts)))
- return continue_single_pick(r, opts);
- else if ((res = read_populate_todo(r, &todo_list, opts)))
-
## t/t3406-rebase-message.sh ##
@@ t/t3406-rebase-message.sh: export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME
test_expect_success 'setup' '
@@ t/t3406-rebase-message.sh: export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME
+ git checkout -b conflicts O &&
+ test_commit P &&
-+ test_commit conflict-X fileX &&
+ test_commit Q &&
+
git checkout -b topic O &&
@@ t/t3406-rebase-message.sh: test_expect_success 'error out early upon -C<n> or --
+ GIT_REFLOG_ACTION="$reflog_action" &&
+ export GIT_REFLOG_ACTION
+ fi &&
-+ test_must_fail git rebase $mode main &&
-+ echo resolved >fileX &&
-+ git add fileX &&
-+ git rebase --continue
++ git rebase $mode main
+ ) &&
+
-+ git log -g --format=%gs -5 >actual &&
++ git log -g --format=%gs -4 >actual &&
+ write_reflog_expect <<-EOF &&
+ ${reflog_action:-rebase} (finish): returning to refs/heads/conflicts
+ ${reflog_action:-rebase} (pick): Q
-+ ${reflog_action:-rebase} (continue): conflict-X
+ ${reflog_action:-rebase} (pick): P
+ ${reflog_action:-rebase} (start): checkout main
EOF
-: ----------- > 3: 6c15f00e170 rebase --merge: fix reflog when continuing
3: f4e6e94bc2c = 4: d3afa85ffc5 rebase --merge: fix reflog message after skipping
4: 58c560d0e19 = 5: afa67abe01a rebase --apply: respect GIT_REFLOG_ACTION
5: 1c3ec165422 = 6: 95161f21e00 rebase --apply: make reflog messages match rebase --merge
6: c863cebbdc8 = 7: d2c1dfbcd5e rebase --abort: improve reflog message
7: d26a221a79d = 8: b0d21affa78 rebase: cleanup action handling
--
gitgitgadget
^ permalink raw reply [relevance 3%]
* [PATCH v2 4/8] rebase --merge: fix reflog message after skipping
2022-04-20 9:56 3% ` [PATCH v2 0/8] " Phillip Wood via GitGitGadget
2022-04-20 9:56 2% ` [PATCH v2 3/8] rebase --merge: fix reflog when continuing Phillip Wood via GitGitGadget
@ 2022-04-20 9:56 2% ` Phillip Wood via GitGitGadget
2022-10-12 9:35 2% ` [PATCH v3 0/8] rebase: make reflog messages independent of the backend Phillip Wood via GitGitGadget
2 siblings, 0 replies; 200+ results
From: Phillip Wood via GitGitGadget @ 2022-04-20 9:56 UTC (permalink / raw)
To: git
Cc: Phillip Wood, Christian Couder, Elijah Newren, Phillip Wood,
Phillip Wood
From: Phillip Wood <phillip.wood@dunelm.org.uk>
The reflog message for every pick after running "rebase --skip" looks
like
rebase (skip) (pick): commit subject line
Fix this by not appending " (skip)" to the reflog action.
Signed-off-by: Phillip Wood <phillip.wood@dunelm.org.uk>
---
builtin/rebase.c | 2 --
t/t3406-rebase-message.sh | 24 ++++++++++++++++++++++++
2 files changed, 24 insertions(+), 2 deletions(-)
diff --git a/builtin/rebase.c b/builtin/rebase.c
index cd9a4f3e2f1..36863117fba 100644
--- a/builtin/rebase.c
+++ b/builtin/rebase.c
@@ -1273,8 +1273,6 @@ int cmd_rebase(int argc, const char **argv, const char *prefix)
struct string_list merge_rr = STRING_LIST_INIT_DUP;
options.action = "skip";
- set_reflog_action(&options);
-
rerere_clear(the_repository, &merge_rr);
string_list_clear(&merge_rr, 1);
ropts.flags = RESET_HEAD_HARD;
diff --git a/t/t3406-rebase-message.sh b/t/t3406-rebase-message.sh
index 3ca2fbb0d59..8aa6a79acc1 100755
--- a/t/t3406-rebase-message.sh
+++ b/t/t3406-rebase-message.sh
@@ -163,6 +163,30 @@ test_reflog () {
# check there is only one new entry in the branch reflog
test_cmp_rev fast-forward@{1} X
'
+
+ test_expect_success "rebase $mode --skip reflog${reflog_action:+ GIT_REFLOG_ACTION=$reflog_action}" '
+ git checkout conflicts &&
+ test_when_finished "git reset --hard Q" &&
+
+ (
+ if test -n "$reflog_action"
+ then
+ GIT_REFLOG_ACTION="$reflog_action" &&
+ export GIT_REFLOG_ACTION
+ fi &&
+ test_must_fail git rebase $mode main &&
+ git rebase --skip
+ ) &&
+
+ git log -g --format=%gs -4 >actual &&
+ write_reflog_expect <<-EOF &&
+ ${reflog_action:-rebase} (finish): returning to refs/heads/conflicts
+ ${reflog_action:-rebase} (pick): Q
+ ${reflog_action:-rebase} (pick): P
+ ${reflog_action:-rebase} (start): checkout main
+ EOF
+ test_cmp expect actual
+ '
}
test_reflog --merge
--
gitgitgadget
^ permalink raw reply related [relevance 2%]
* [PATCH v2 3/8] rebase --merge: fix reflog when continuing
2022-04-20 9:56 3% ` [PATCH v2 0/8] " Phillip Wood via GitGitGadget
@ 2022-04-20 9:56 2% ` Phillip Wood via GitGitGadget
2022-04-20 9:56 2% ` [PATCH v2 4/8] rebase --merge: fix reflog message after skipping Phillip Wood via GitGitGadget
2022-10-12 9:35 2% ` [PATCH v3 0/8] rebase: make reflog messages independent of the backend Phillip Wood via GitGitGadget
2 siblings, 0 replies; 200+ results
From: Phillip Wood via GitGitGadget @ 2022-04-20 9:56 UTC (permalink / raw)
To: git
Cc: Phillip Wood, Christian Couder, Elijah Newren, Phillip Wood,
Phillip Wood
From: Phillip Wood <phillip.wood@dunelm.org.uk>
The reflog message for a conflict resolution committed by "rebase
--continue" looks like
rebase (continue): commit subject line
Unfortunately the reflog message each subsequent pick look like
rebase (continue) (pick): commit subject line
Fix this by setting the reflog message for "rebase --continue" in
sequencer_continue() so it does not affect subsequent commits. This
introduces a memory leak similar to the one leaking GIT_REFLOG_ACTION
in pick_commits(). Both of these will be fixed in a future series that
stops the sequencer calling setenv().
Signed-off-by: Phillip Wood <phillip.wood@dunelm.org.uk>
---
builtin/rebase.c | 2 --
sequencer.c | 5 +++++
t/t3406-rebase-message.sh | 9 +++++++--
3 files changed, 12 insertions(+), 4 deletions(-)
diff --git a/builtin/rebase.c b/builtin/rebase.c
index 4832f16e675..cd9a4f3e2f1 100644
--- a/builtin/rebase.c
+++ b/builtin/rebase.c
@@ -1247,8 +1247,6 @@ int cmd_rebase(int argc, const char **argv, const char *prefix)
int fd;
options.action = "continue";
- set_reflog_action(&options);
-
/* Sanity check */
if (get_oid("HEAD", &head))
die(_("Cannot read HEAD"));
diff --git a/sequencer.c b/sequencer.c
index bdd66b4b67a..3634ad5baa9 100644
--- a/sequencer.c
+++ b/sequencer.c
@@ -4777,6 +4777,8 @@ int sequencer_continue(struct repository *r, struct replay_opts *opts)
if (read_populate_opts(opts))
return -1;
if (is_rebase_i(opts)) {
+ char *previous_reflog_action;
+
if ((res = read_populate_todo(r, &todo_list, opts)))
goto release_todo_list;
@@ -4787,10 +4789,13 @@ int sequencer_continue(struct repository *r, struct replay_opts *opts)
unlink(rebase_path_dropped());
}
+ previous_reflog_action = xstrdup(getenv(GIT_REFLOG_ACTION));
+ setenv(GIT_REFLOG_ACTION, reflog_message(opts, "continue", NULL), 1);
if (commit_staged_changes(r, opts, &todo_list)) {
res = -1;
goto release_todo_list;
}
+ setenv(GIT_REFLOG_ACTION, previous_reflog_action, 1);
} else if (!file_exists(get_todo_path(opts)))
return continue_single_pick(r, opts);
else if ((res = read_populate_todo(r, &todo_list, opts)))
diff --git a/t/t3406-rebase-message.sh b/t/t3406-rebase-message.sh
index 5253dd1551d..3ca2fbb0d59 100755
--- a/t/t3406-rebase-message.sh
+++ b/t/t3406-rebase-message.sh
@@ -17,6 +17,7 @@ test_expect_success 'setup' '
git checkout -b conflicts O &&
test_commit P &&
+ test_commit conflict-X fileX &&
test_commit Q &&
git checkout -b topic O &&
@@ -107,13 +108,17 @@ test_reflog () {
GIT_REFLOG_ACTION="$reflog_action" &&
export GIT_REFLOG_ACTION
fi &&
- git rebase $mode main
+ test_must_fail git rebase $mode main &&
+ echo resolved >fileX &&
+ git add fileX &&
+ git rebase --continue
) &&
- git log -g --format=%gs -4 >actual &&
+ git log -g --format=%gs -5 >actual &&
write_reflog_expect <<-EOF &&
${reflog_action:-rebase} (finish): returning to refs/heads/conflicts
${reflog_action:-rebase} (pick): Q
+ ${reflog_action:-rebase} (continue): conflict-X
${reflog_action:-rebase} (pick): P
${reflog_action:-rebase} (start): checkout main
EOF
--
gitgitgadget
^ permalink raw reply related [relevance 2%]
* Re: Review Request (was Re: [PATCH 0/7] rebase: make reflog messages independent of the backend)
2022-04-17 2:13 0% ` Elijah Newren
@ 2022-04-18 18:56 0% ` Phillip Wood
0 siblings, 0 replies; 200+ results
From: Phillip Wood @ 2022-04-18 18:56 UTC (permalink / raw)
To: Elijah Newren, Phillip Wood
Cc: Phillip Wood via GitGitGadget, Git Mailing List,
Johannes Schindelin, Ævar Arnfjörð Bjarmason
Hi Elijah
On 17/04/2022 03:13, Elijah Newren wrote:
> On Mon, Apr 4, 2022 at 8:34 AM Phillip Wood <phillip.wood123@gmail.com> wrote:
>>
>> If anyone has time to review these patches I'd be very grateful. I've
>> cc'd this message to some list regulars who have reviewed rebase patches
>> before but if anyone else fancies taking a look at them that would be great.
>
> I apologize for the delay here...especially when it came after you had
> already waited a month and a half. (This is the first git thing I've
> done in over a month, sadly.) Anyway, I just read through the series
> and left some comments; mostly looks good but I second the request to
> split up one of the patches.
There's no need to apologize, I'm very grateful for you comments. I'll
re-roll with that patch split up.
Thanks
Phillip
>
>> On 21/02/2022 11:10, Phillip Wood via GitGitGadget wrote:
>>> This is a series of rebase reflog related patches with the aim of unifying
>>> the reflog messages from the two rebase backends.
>>>
>>> * improve rebase reflog test coverage
>>> * rebase --merge: fix reflog messages for --continue and --skip
>>> * rebase --apply: respect GIT_REFLOG_ACTION
>>> * rebase --abort: improve reflog message
>>> * unify reflog messages between the two rebase backends
>>>
>>> This series is based on pw/use-inprocess-checkout-in-rebase
>>>
>>> Phillip Wood (7):
>>> rebase --apply: remove duplicated code
>>> rebase --merge: fix reflog when continuing
>>> rebase --merge: fix reflog message after skipping
>>> rebase --apply: respect GIT_REFLOG_ACTION
>>> rebase --apply: make reflog messages match rebase --merge
>>> rebase --abort: improve reflog message
>>> rebase: cleanup action handling
>>>
>>> builtin/rebase.c | 144 ++++++++++++-----------------
>>> sequencer.c | 5 ++
>>> t/t3406-rebase-message.sh | 185 +++++++++++++++++++++++++++++++-------
>>> 3 files changed, 214 insertions(+), 120 deletions(-)
>>>
>>>
>>> base-commit: 38c541ce94048cf72aa4f465be9314423a57f445
>>> Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-1150%2Fphillipwood%2Fwip%2Frebase-reflog-fixes-v1
>>> Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-1150/phillipwood/wip/rebase-reflog-fixes-v1
>>> Pull-Request: https://github.com/gitgitgadget/git/pull/1150
^ permalink raw reply [relevance 0%]
* [ANNOUNCE] Git v2.36.0
@ 2022-04-18 16:27 3% Junio C Hamano
0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2022-04-18 16:27 UTC (permalink / raw)
To: git; +Cc: git-packagers
The latest feature release Git v2.36.0 is now available at the
usual places. It is comprised of 717 non-merge commits since
v2.35.0, contributed by 96 people, 26 of which are new faces [*].
This release contains the same fixes as the recent maintenance
releases to address CVE-2022-24765 as well.
The tarballs are found at:
https://www.kernel.org/pub/software/scm/git/
The following public repositories all have a copy of the 'v2.36.0'
tag and the 'master' branch that the tag points at:
url = https://git.kernel.org/pub/scm/git/git
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.35.0 are as follows.
Welcome to the Git development community!
Abhradeep Chakraborty, BRESSAT Jonathan, Chen Bojun, COGONI
Guillaume, David Cantrell, Des Preston, Hongyi Zhao, Jason Yundt,
Jayati Shrivastava, Jaydeep Das, Jaydeep P Das, Jose Lopes,
Justin Donnelly, Kraymer, Liginity Lee, Matheus Felipe, Matheus
Valadares, Maximilian Reichel, Michael McClimon, Nihal Jere,
Pedro Martelletto, Robert Coup, Sean Allred, Shaoxuan Yuan,
Shubham Mishra, and Waleed Khan.
Returning contributors who helped this release are as follows.
Thanks for your continued support.
Adam Dinwoodie, Ævar Arnfjörð Bjarmason, Alex Henrie,
Atharva Raykar, Bagas Sanjaya, Beat Bolli, brian m. carlson,
Carlo Marcelo Arenas Belón, Christian Couder, Daniel Hahler,
Daniel Santos, Derrick Stolee, Elia Pinto, Elijah Newren,
Emily Shaffer, Emir SARI, Eric Sunshine, Fabian Stelzer,
Fangyi Zhou, Glen Choo, Greg Hurrell, Han-Wen Nienhuys, Jacob
Keller, Jean-Noël Avila, Jeff Hostetler, Jeff King, Jerry
Zhang, Jessica Clarke, Jiang Xin, Joel Holdsworth, Johannes
Altmanninger, Johannes Schindelin, Johannes Sixt, John Cai,
Jonathan Nieder, Jonathan Tan, Jordi Mas, Josh Steadmon, Junio
C Hamano, Kevin Willford, Lessley Dennington, Marc Strapetz,
Martin Ågren, Matt Cooper, Matthias Rüster, Michael J Gruber,
Neeraj Singh, Patrick Steinhardt, Peter Krefting, Philip Oakley,
Philippe Blain, Phillip Szelat, Phillip Wood, Ralf Thielow,
Ramkumar Ramachandra, Randall S. Becker, René Scharfe, Shourya
Shukla, SZEDER Gábor, Tao Klerks, Taylor Blau, Teng Long,
Thomas Gummerer, Thomas Koutcher, Tilman Vogel, Todd Zullinger,
Trần Ngọc Quân, Victoria Dye, Yi-Jyun Pan, and 依云.
[*] We are counting not just the authorship contribution but issue
reporting, mentoring, helping and reviewing that are recorded in
the commit trailers.
----------------------------------------------------------------
Git 2.36 Release Notes
======================
Updates since Git 2.35
----------------------
Backward compatibility warts
* "git name-rev --stdin" has been deprecated and issues a warning
when used; use "git name-rev --annotate-stdin" instead.
* "git clone --filter=... --recurse-submodules" only makes the
top-level a partial clone, while submodules are fully cloned. This
behaviour is changed to pass the same filter down to the submodules.
* With the fixes for CVE-2022-24765 that are common with versions of
Git 2.30.4, 2.31.3, 2.32.2, 2.33.3, 2.34.3, and 2.35.3, Git has
been taught not to recognise repositories owned by other users, in
order to avoid getting affected by their config files and hooks.
You can list the path to the safe/trusted repositories that may be
owned by others on a multi-valued configuration variable
`safe.directory` to override this behaviour, or use '*' to declare
that you trust anything.
Note to those who build from the source
* Since Git 2.31, our source assumed that the compiler you use to
build Git supports variadic macros, with an easy-to-use escape
hatch to allow compilation without variadic macros with an request
to report that you had to use the escape hatch to the list.
Because we haven't heard from anybody who actually needed to use
the escape hatch, it has been removed, making support of variadic
macros a hard requirement.
UI, Workflows & Features
* Assorted updates to "git cat-file", especially "-h".
* The command line completion (in contrib/) learns to complete
arguments to give to "git sparse-checkout" command.
* "git log --remerge-diff" shows the difference from mechanical merge
result and the result that is actually recorded in a merge commit.
* "git log" and friends learned an option --exclude-first-parent-only
to propagate UNINTERESTING bit down only along the first-parent
chain, just like --first-parent option shows commits that lack the
UNINTERESTING bit only along the first-parent chain.
* The command line completion script (in contrib/) learned to
complete all Git subcommands, including the ones that are normally
hidden, when GIT_COMPLETION_SHOW_ALL_COMMANDS is used.
* "git branch" learned the "--recurse-submodules" option.
* A user can forget to make a script file executable before giving
it to "git bisect run". In such a case, all tests will exit with
126 or 127 error codes, even on revisions that are marked as good.
Try to recognize this situation and stop iteration early.
* When "index-pack" dies due to incoming data exceeding the maximum
allowed input size, include the value of the limit in the error
message.
* The error message given by "git switch HEAD~4" has been clarified
to suggest the "--detach" option that is required.
* In sparse-checkouts, files mis-marked as missing from the working tree
could lead to later problems. Such files were hard to discover, and
harder to correct. Automatically detecting and correcting the marking
of such files has been added to avoid these problems.
* "git cat-file" learns "--batch-command" mode, which is a more
flexible interface than the existing "--batch" or "--batch-check"
modes, to allow different kinds of inquiries made.
* The level of verbose output from the ort backend during inner merge
has been aligned to that of the recursive backend.
* "git remote rename A B", depending on the number of remote-tracking
refs involved, takes long time renaming them. The command has been
taught to show progress bar while making the user wait.
* Bundle file format gets extended to allow a partial bundle,
filtered by similar criteria you would give when making a
partial/lazy clone.
* A new built-in userdiff driver for kotlin has been added.
* "git repack" learned a new configuration to disable triggering of
age-old "update-server-info" command, which is rarely useful these
days.
* "git stash" does not allow subcommands it internally runs as its
implementation detail, except for "git reset", to emit messages;
now "git reset" part has also been squelched.
* "git ls-tree" learns "--oid-only" option, similar to "--name-only",
and more generalized "--format" option.
* "git fetch --refetch" learned to fetch everything without telling
the other side what we already have, which is useful when you
cannot trust what you have in the local object store.
* "git branch" gives hint when branch tracking cannot be established
because fetch refspecs from multiple remote repositories overlap.
* "git worktree list --porcelain" did not c-quote pathnames and lock
reasons with unsafe bytes correctly, which is worked around by
introducing NUL terminated output format with "-z".
Performance, Internal Implementation, Development Support etc.
* "git apply" (ab)used the util pointer of the string-list to keep
track of how each symbolic link needs to be handled, which has been
simplified by using strset.
* Fix a hand-rolled alloca() imitation that may have violated
alignment requirement of data being sorted in compatibility
implementation of qsort_s() and stable qsort().
* Use the parse-options API in "git reflog" command.
* The conditional inclusion mechanism of configuration files using
"[includeIf <condition>]" learns to base its decision on the
URL of the remote repository the repository interacts with.
(merge 399b198489 jt/conditional-config-on-remote-url later to maint).
* "git name-rev --stdin" does not behave like usual "--stdin" at
all. Start the process of renaming it to "--annotate-stdin".
(merge a2585719b3 jc/name-rev-stdin later to maint).
* "git update-index", "git checkout-index", and "git clean" are
taught to work better with the sparse checkout feature.
* Use an internal call to reset_head() helper function instead of
spawning "git checkout" in "rebase", and update code paths that are
involved in the change.
* Messages "ort" merge backend prepares while dealing with conflicted
paths were unnecessarily confusing since it did not differentiate
inner merges and outer merges.
* Small modernization of the rerere-train script (in contrib/).
* Use designated initializers we started using in mid 2017 in more
parts of the codebase that are relatively quiescent.
* Improve failure case behaviour of xdiff library when memory
allocation fails.
* General clean-up in reftable implementation, including
clarification of the API documentation, tightening the code to
honor documented length limit, etc.
* Remove the escape hatch we added when we introduced the weather
balloon to use variadic macros unconditionally, to make it official
that we now have a hard dependency on the feature.
* Makefile refactoring with a bit of suffixes rule stripping to
optimize the runtime overhead.
* "git stash drop" is reimplemented as an internal call to
reflog_delete() function, instead of invoking "git reflog delete"
via run_command() API.
* Count string_list items in size_t, not "unsigned int".
* The single-key interactive operation used by "git add -p" has been
made more robust.
* Remove unneeded <meta http-equiv=content-type...> from gitweb
output.
* "git name-rev" learned to use the generation numbers when setting
the lower bound of searching commits used to explain the revision,
when available, instead of committer time.
* Replace core.fsyncObjectFiles with two new configuration variables,
core.fsync and core.fsyncMethod.
* Updates to refs traditionally weren't fsync'ed, but we can
configure using core.fsync variable to do so.
* "git reflog" command now uses parse-options API to parse its
command line options.
Fixes since v2.35
-----------------
* "rebase" and "stash" in secondary worktrees are broken in
Git 2.35.0, which has been corrected.
* "git pull --rebase" ignored the rebase.autostash configuration
variable when the remote history is a descendant of our history,
which has been corrected.
(merge 3013d98d7a pb/pull-rebase-autostash-fix later to maint).
* "git update-index --refresh" has been taught to deal better with
racy timestamps (just like "git status" already does).
(merge 2ede073fd2 ms/update-index-racy later to maint).
* Avoid tests that are run under GIT_TRACE2 set from failing
unnecessarily.
(merge 944d808e42 js/test-unset-trace2-parents later to maint).
* The merge-ort misbehaved when merge.renameLimit configuration is
set too low and failed to find all renames.
(merge 9ae39fef7f en/merge-ort-restart-optim-fix later to maint).
* We explain that revs come first before the pathspec among command
line arguments, but did not spell out that dashed options come
before other args, which has been corrected.
(merge c11f95010c tl/doc-cli-options-first later to maint).
* "git add -p" rewritten in C regressed hunk splitting in some cases,
which has been corrected.
(merge 7008ddc645 pw/add-p-hunk-split-fix later to maint).
* "git fetch --negotiate-only" is an internal command used by "git
push" to figure out which part of our history is missing from the
other side. It should never recurse into submodules even when
fetch.recursesubmodules configuration variable is set, nor it
should trigger "gc". The code has been tightened up to ensure it
only does common ancestry discovery and nothing else.
(merge de4eaae63a gc/fetch-negotiate-only-early-return later to maint).
* The code path that verifies signatures made with ssh were made to
work better on a system with CRLF line endings.
(merge caeef01ea7 fs/ssh-signing-crlf later to maint).
* "git sparse-checkout init" failed to write into $GIT_DIR/info
directory when the repository was created without one, which has
been corrected to auto-create it.
(merge 7f44842ac1 jt/sparse-checkout-leading-dir-fix later to maint).
* Cloning from a repository that does not yet have any branches or
tags but has other refs resulted in a "remote transport reported
error", which has been corrected.
(merge dccea605b6 jt/clone-not-quite-empty later to maint).
* Mark in various places in the code that the sparse index and the
split index features are mutually incompatible.
(merge 451b66c533 js/sparse-vs-split-index later to maint).
* Update the logic to compute alignment requirement for our mem-pool.
(merge e38bcc66d8 jc/mem-pool-alignment later to maint).
* Pick a better random number generator and use it when we prepare
temporary filenames.
(merge 47efda967c bc/csprng-mktemps later to maint).
* Update the contributor-facing documents on proposed log messages.
(merge cdba0295b0 jc/doc-log-messages later to maint).
* When "git fetch --prune" failed to prune the refs it wanted to
prune, the command issued error messages but exited with exit
status 0, which has been corrected.
(merge c9e04d905e tg/fetch-prune-exit-code-fix later to maint).
* Problems identified by Coverity in the reftable code have been
corrected.
(merge 01033de49f hn/reftable-coverity-fixes later to maint).
* A bug that made multi-pack bitmap and the object order out-of-sync,
making the .midx data corrupt, has been fixed.
(merge f8b60cf99b tb/midx-bitmap-corruption-fix later to maint).
* The build procedure has been taught to notice older version of zlib
and enable our replacement uncompress2() automatically.
(merge 07564773c2 ab/auto-detect-zlib-compress2 later to maint).
* Interaction between fetch.negotiationAlgorithm and
feature.experimental configuration variables has been corrected.
(merge 714edc620c en/fetch-negotiation-default-fix later to maint).
* "git diff --diff-filter=aR" is now parsed correctly.
(merge 75408ca949 js/diff-filter-negation-fix later to maint).
* When "git subtree" wants to create a merge, it used "git merge" and
let it be affected by end-user's "merge.ff" configuration, which
has been corrected.
(merge 9158a3564a tk/subtree-merge-not-ff-only later to maint).
* Unlike "git apply", "git patch-id" did not handle patches with
hunks that has only 1 line in either preimage or postimage, which
has been corrected.
(merge 757e75c81e jz/patch-id-hunk-header-parsing-fix later to maint).
* "receive-pack" checks if it will do any ref updates (various
conditions could reject a push) before received objects are taken
out of the temporary directory used for quarantine purposes, so
that a push that is known-to-fail will not leave crufts that a
future "gc" needs to clean up.
(merge 5407764069 cb/clear-quarantine-early-on-all-ref-update-errors later to maint).
* When there is no object to write .bitmap file for, "git
multi-pack-index" triggered an error, instead of just skipping,
which has been corrected.
(merge eb57277ba3 tb/midx-no-bitmap-for-no-objects later to maint).
* "git cmd -h" outside a repository should error out cleanly for many
commands, but instead it hit a BUG(), which has been corrected.
(merge 87ad07d735 js/short-help-outside-repo-fix later to maint).
* "working tree" and "per-worktree ref" were in glossary, but
"worktree" itself wasn't, which has been corrected.
(merge 2df5387ed0 jc/glossary-worktree later to maint).
* L10n support for a few error messages.
(merge 3d3c23b3a7 bs/forbid-i18n-of-protocol-token-in-fetch-pack later to maint).
* Test modernization.
(merge d4fe066e4b sy/t0001-use-path-is-helper later to maint).
* "git log --graph --graph" used to leak a graph structure, and there
was no way to countermand "--graph" that appear earlier on the
command line. A "--no-graph" option has been added and resource
leakage has been plugged.
* Error output given in response to an ambiguous object name has been
improved.
(merge 3a73c1dfaf ab/ambiguous-object-name later to maint).
* "git sparse-checkout" wants to work with per-worktree configuration,
but did not work well in a worktree attached to a bare repository.
(merge 3ce1138272 ds/sparse-checkout-requires-per-worktree-config later to maint).
* Setting core.untrackedCache to true failed to add the untracked
cache extension to the index.
* Workaround we have for versions of PCRE2 before their version 10.36
were in effect only for their versions newer than 10.36 by mistake,
which has been corrected.
(merge 97169fc361 rs/pcre-invalid-utf8-fix-fix later to maint).
* Document Taylor as a new member of Git PLC at SFC. Welcome.
(merge e8d56ca863 tb/coc-plc-update later to maint).
* "git checkout -b branch/with/multi/level/name && git stash" only
recorded the last level component of the branch name, which has
been corrected.
* Check the return value from parse_tree_indirect() to turn segfaults
into calls to die().
(merge 8d2eaf649a gc/parse-tree-indirect-errors later to maint).
* Newer version of GPGSM changed its output in a backward
incompatible way to break our code that parses its output. It also
added more processes our tests need to kill when cleaning up.
Adjustments have been made to accommodate these changes.
(merge b0b70d54c4 fs/gpgsm-update later to maint).
* The untracked cache newly computed weren't written back to the
on-disk index file when there is no other change to the index,
which has been corrected.
* "git config -h" did not describe the "--type" option correctly.
(merge 5445124fad mf/fix-type-in-config-h later to maint).
* The way generation number v2 in the commit-graph files are
(not) handled has been corrected.
(merge 6dbf4b8172 ds/commit-graph-gen-v2-fixes later to maint).
* The method to trigger malloc check used in our tests no longer work
with newer versions of glibc.
(merge baedc59543 ep/test-malloc-check-with-glibc-2.34 later to maint).
* When "git fetch --recurse-submodules" grabbed submodule commits
that would be needed to recursively check out newly fetched commits
in the superproject, it only paid attention to submodules that are
in the current checkout of the superproject. We now do so for all
submodules that have been run "git submodule init" on.
* "git rebase $base $non_branch_commit", when $base is an ancestor or
the $non_branch_commit, modified the current branch, which has been
corrected.
* When "shallow" information is updated, we forgot to update the
in-core equivalent, which has been corrected.
* When creating a loose object file, we didn't report the exact
filename of the file we failed to fsync, even though the
information was readily available, which has been corrected.
* "git am" can read from the standard input when no mailbox is given
on the command line, but the end-user gets no indication when it
happens, making Git appear stuck.
(merge 7b20af6a06 jc/mailsplit-warn-on-tty later to maint).
* "git mv" failed to refresh the cached stat information for the
entry it moved.
(merge b7f9130a06 vd/mv-refresh-stat later to maint).
* Other code cleanup, docfix, build fix, etc.
(merge cfc5cf428b jc/find-header later to maint).
(merge 40e7cfdd46 jh/p4-fix-use-of-process-error-exception later to maint).
(merge 727e6ea350 jh/p4-spawning-external-commands-cleanup later to maint).
(merge 0a6adc26e2 rs/grep-expr-cleanup later to maint).
(merge 4ed7dfa713 po/readme-mention-contributor-hints later to maint).
(merge 6046f7a91c en/plug-leaks-in-merge later to maint).
(merge 8c591dbfce bc/clarify-eol-attr later to maint).
(merge 518e15db74 rs/parse-options-lithelp-help later to maint).
(merge cbac0076ef gh/doc-typos later to maint).
(merge ce14de03db ab/no-errno-from-resolve-ref-unsafe later to maint).
(merge 2826ffad8c rc/negotiate-only-typofix later to maint).
(merge 0f03f04c5c en/sparse-checkout-leakfix later to maint).
(merge 74f3390dde sy/diff-usage-typofix later to maint).
(merge 45d0212a71 ll/doc-mktree-typofix later to maint).
(merge e9b272e4c1 js/no-more-legacy-stash later to maint).
(merge 6798b08e84 ab/do-not-hide-failures-in-git-dot-pm later to maint).
(merge 9325285df4 po/doc-check-ignore-markup-fix later to maint).
(merge cd26cd6c7c sy/modernize-t-lib-read-tree-m-3way later to maint).
(merge d17294a05e ab/hash-object-leakfix later to maint).
(merge b8403129d3 jd/t0015-modernize later to maint).
(merge 332acc248d ds/mailmap later to maint).
(merge 04bf052eef ab/grep-patterntype later to maint).
(merge 6ee36364eb ab/diff-free-more later to maint).
(merge 63a36017fe nj/read-tree-doc-reffix later to maint).
(merge eed36fce38 sm/no-git-in-upstream-of-pipe-in-tests later to maint).
(merge c614beb933 ep/t6423-modernize later to maint).
(merge 57be9c6dee ab/reflog-prep-fix later to maint).
(merge 5327d8982a js/in-place-reverse-in-sequencer later to maint).
(merge 2e2c0be51e dp/worktree-repair-in-usage later to maint).
(merge 6563706568 jc/coding-guidelines-decl-in-for-loop later to maint).
----------------------------------------------------------------
Changes since v2.35.0 are as follows:
Abhradeep Chakraborty (2):
amend remaining usage strings according to style guide
partial-clone: add a partial-clone test case
Adam Dinwoodie (2):
configure.ac: fix HAVE_SYNC_FILE_RANGE definition
t9902: split test to run on appropriate systems
Alex Henrie (3):
log: fix memory leak if --graph is passed multiple times
log: add a --no-graph option
switch: mention the --detach option when dying due to lack of a branch
Atharva Raykar (5):
submodule--helper: get remote names from any repository
submodule--helper: refactor get_submodule_displaypath()
submodule--helper: allow setting superprefix for init_submodule()
submodule--helper: run update using child process struct
submodule: move core cmd_update() logic to C
Bagas Sanjaya (3):
fetch-pack: parameterize message containing 'ready' keyword
l10n: po-id for 2.36 (round 1)
l10n: po-id for 2.36 (round 2)
COGONI Guillaume (3):
t/t3903-stash.sh: replace test [-d|-f] with test_path_is_*
tests: allow testing if a path is truly a file or a directory
tests: make the code more readable
Carlo Marcelo Arenas Belón (4):
mingw: avoid fallback for {local,gm}time_r()
git-compat-util: really support openssl as a source of entropy
config.mak.dev: workaround gcc 12 bug affecting "pedantic" CI job
config.mak.dev: alternative workaround to gcc 12 warning in http.c
Chen Bojun (1):
receive-pack: purge temporary data if no command is ready to run
Daniel Santos (3):
l10n: pt_PT: update Portuguese translation
l10n: pt_PT: update TEAMS file
l10n: pt_PT: update Portuguese translation
David Cantrell (1):
completion: tab completion of filenames for 'git restore'
Derrick Stolee (47):
Documentation: add extensions.worktreeConfig details
worktree: create init_worktree_config()
config: add repo_config_set_worktree_gently()
sparse-checkout: set worktree-config correctly
worktree: copy sparse-checkout patterns and config on add
config: make git_configset_get_string_tmp() private
mailmap: change primary address for Derrick Stolee
dir: force untracked cache with core.untrackedCache
worktree: combine two translatable messages
worktree: extract copy_filtered_worktree_config()
worktree: extract copy_sparse_checkout()
worktree: extract checkout_worktree()
worktree: use 'worktree' over 'working tree'
worktree: use 'worktree' over 'working tree'
worktree: use 'worktree' over 'working tree'
worktree: use 'worktree' over 'working tree'
worktree: use 'worktree' over 'working tree'
worktree: use 'worktree' over 'working tree'
worktree: use 'worktree' over 'working tree'
test-read-graph: include extra post-parse info
t5318: extract helpers to lib-commit-graph.sh
commit-graph: fix ordering bug in generation numbers
commit-graph: start parsing generation v2 (again)
commit-graph: fix generation number v2 overflow values
commit-graph: declare bankruptcy on GDAT chunks
index-pack: document and test the --promisor option
list-objects-filter-options: create copy helper
revision: put object filter into struct rev_info
pack-objects: use rev.filter when possible
pack-bitmap: drop filter in prepare_bitmap_walk()
list-objects: consolidate traverse_commit_list[_filtered]
MyFirstObjectWalk: update recommended usage
bundle: parse filter capability
rev-list: move --filter parsing into revision.c
bundle: create filtered bundles
bundle: unbundle promisor packs
clone: fail gracefully when cloning filtered bundle
maintenance: fix synopsis in documentation
list-objects-filter: remove CL_ARG__FILTER
pack-objects: move revs out of get_object_list()
pack-objects: parse --filter directly into revs.filter
bundle: move capabilities to end of 'verify'
bundle: output hash information in 'verify'
t7700: check post-condition in kept-pack test
test-lib-functions: remove test_subcommand_inexact
t0033: add tests for safe.directory
setup: opt-out of check with safe.directory=*
Des Preston (1):
worktree: include repair cmd in usage
Elia Pinto (8):
test-lib.sh: Use GLIBC_TUNABLES instead of MALLOC_CHECK_ on glibc >= 2.34
t6423-merge-rename-directories.sh: use the $(...) construct
attr.c: delete duplicate include
builtin/gc.c: delete duplicate include
builtin/sparse-checkout.c: delete duplicate include
builtin/stash.c: delete duplicate include
t/helper/test-run-command.c: delete duplicate include
attr.h: remove duplicate struct definition
Elijah Newren (33):
t1011: add testcase demonstrating accidental loss of user modifications
unpack-trees: fix accidental loss of user changes
repo_read_index: clear SKIP_WORKTREE bit from files present in worktree
Update documentation related to sparsity and the skip-worktree bit
Accelerate clear_skip_worktree_from_present_files() by caching
merge-ort: avoid assuming all renames detected
merge-ort: fix memory leak in merge_ort_internal()
merge: fix memory leaks in cmd_merge()
sequencer, stash: fix running from worktree subdir
sparse-checkout: fix a couple minor memory leaks
repo-settings: fix checking for fetch.negotiationAlgorithm=default
repo-settings: fix error handling for unknown values
repo-settings: rename the traditional default fetch.negotiationAlgorithm
show, log: provide a --remerge-diff capability
log: clean unneeded objects during `log --remerge-diff`
ll-merge: make callers responsible for showing warnings
merge-ort: capture and print ll-merge warnings in our preferred fashion
merge-ort: mark a few more conflict messages as omittable
merge-ort: format messages slightly different for use in headers
diff: add ability to insert additional headers for paths
show, log: include conflict/warning messages in --remerge-diff headers
merge-ort: mark conflict/warning messages from inner merges as omittable
diff-merges: avoid history simplifications when diffing merges
merge-ort: make informational messages from recursive merges clearer
sparse-checkout: correct reapply's handling of options
sparse-checkout: correctly set non-cone mode when expected
sparse-checkout: pay attention to prefix for {set, add}
sparse-checkout: error or warn when given individual files
sparse-checkout: reject arguments in cone-mode that look like patterns
merge-ort: fix small memory leak in detect_and_process_renames()
merge-ort: fix small memory leak in unique_path()
merge-ort: exclude messages from inner merges by default
repo_read_index: add config to expect files outside sparse patterns
Emily Shaffer (14):
hook: add 'run' subcommand
gc: use hook library for pre-auto-gc hook
am: convert {pre,post}-applypatch to use hook.h
rebase: convert pre-rebase to use hook.h
am: convert applypatch-msg to use hook.h
merge: convert post-merge to use hook.h
hooks: convert non-worktree 'post-checkout' hook to hook library
hooks: convert worktree 'post-checkout' hook to hook library
send-email: use 'git hook run' for 'sendemail-validate'
git-p4: use 'git hook' to run hooks
commit: convert {pre-commit,prepare-commit-msg} hook to hook.h
read-cache: convert post-index-change to use hook.h
receive-pack: convert push-to-checkout hook to hook.h
run-command: remove old run_hook_{le,ve}() hook API
Emir SARI (2):
l10n: tr: v2.36.0 round 1
l10n: tr: v2.36.0 round 2
Fabian Stelzer (2):
gpg-interface: trim CR from ssh-keygen
gpg-interface/gpgsm: fix for v2.3
Fangyi Zhou (4):
submodule-helper: fix usage string
l10n: Update zh_CN repo link
l10n: zh_CN v2.36.0 round 1
l10n: zh_CN v2.36.0 round 2
Glen Choo (39):
fetch: use goto cleanup in cmd_fetch()
fetch: skip tasks related to fetching objects
fetch --negotiate-only: do not update submodules
branch: move --set-upstream-to behavior to dwim_and_setup_tracking()
branch: make create_branch() always create a branch
branch: add a dry_run parameter to create_branch()
builtin/branch: consolidate action-picking logic in cmd_branch()
branch: add --recurse-submodules option for branch creation
branch.c: use 'goto cleanup' in setup_tracking() to fix memory leaks
stash: strip "refs/heads/" with skip_prefix
checkout, clone: die if tree cannot be parsed
submodule--helper: remove update-module-mode
submodule--helper: reorganize code for sh to C conversion
submodule--helper run-update-procedure: remove --suboid
submodule--helper run-update-procedure: learn --remote
submodule--helper update-clone: learn --init
submodule--helper: remove ensure-core-worktree
submodule update: add tests for --filter
submodule--helper update-clone: check for --filter and --init
t5526: introduce test helper to assert on fetches
t5526: stop asserting on stderr literally
t5526: create superproject commits with test helper
submodule: make static functions read submodules from commits
submodule: inline submodule_commits() into caller
submodule: store new submodule commits oid_array in a struct
submodule: extract get_fetch_task()
submodule: move logic into fetch_task_create()
submodule update: use die_message()
submodule--helper: teach update_data more options
submodule--helper: reduce logic in run_update_procedure()
submodule--helper: remove forward declaration
fetch: fetch unpopulated, changed submodules
submodule: fix latent check_has_commit() bug
branch: support more tracking modes when recursing
branch: give submodule updating advice before exit
branch --set-upstream-to: be consistent when advising
branch: remove negative exit code
branch: rework comments for future developers
branch.c: simplify advice-and-die sequence
Greg Hurrell (2):
Documentation/config/pgp.txt: replace stray <TAB> character with <SPC>
Documentation/config/pgp.txt: add missing apostrophe
Han-Wen Nienhuys (27):
reftable: fix OOB stack write in print functions
reftable: fix resource leak in block.c error path
reftable: fix resource leak blocksource.c
reftable: check reftable_stack_auto_compact() return value
reftable: ignore remove() return value in stack_test.c
reftable: fix resource warning
reftable: all xxx_free() functions accept NULL arguments
reftable: order unittests by complexity
reftable: drop stray printf in readwrite_test
reftable: handle null refnames in reftable_ref_record_equal
reftable: make reftable-record.h function signatures const correct
reftable: implement record equality generically
reftable: remove outdated file reftable.c
reftable: make reftable_record a tagged union
reftable: add print functions to the record types
t1405: explictly delete reflogs for reftable
t1405: mark test that checks existence as REFFILES
t5312: prepare for reftable
t1410: use test-tool ref-store to inspect reflogs
t1410: mark bufsize boundary test as REFFILES
Documentation: object_id_len goes up to 31
reftable: reject 0 object_id_len
reftable: add a test that verifies that writing empty keys fails
reftable: avoid writing empty keys at the block layer
reftable: ensure that obj_id_len is >= 2 on writing
reftable: add test for length of disambiguating prefix
reftable: rename writer_stats to reftable_writer_stats
Jacob Keller (1):
name-rev: use generation numbers if available
Jason Yundt (2):
comment: fix typo
gitweb: remove invalid http-equiv="content-type"
Jayati Shrivastava (1):
sequencer: use reverse_commit_list() helper
Jaydeep Das (1):
t/t0015-hash.sh: remove unnecessary '\' at line end
Jaydeep P Das (1):
userdiff: add builtin diff driver for kotlin language.
Jean-Noël Avila (7):
i18n: factorize more 'incompatible options' messages
i18n: factorize "invalid value" messages
i18n: remove from i18n strings that do not hold translatable parts
i18n: fix some misformated placeholders in command synopsis
l10n: fr: v2.36 round 1
i18n: fix some badly formatted i18n strings
l10n: fr: v2.36 round 2
Jeff Hostetler (30):
fsmonitor: enhance existing comments, clarify trivial response handling
fsmonitor-ipc: create client routines for git-fsmonitor--daemon
fsmonitor: config settings are repository-specific
fsmonitor: use IPC to query the builtin FSMonitor daemon
fsmonitor: document builtin fsmonitor
fsmonitor--daemon: add a built-in fsmonitor daemon
fsmonitor--daemon: implement 'stop' and 'status' commands
compat/fsmonitor/fsm-listen-win32: stub in backend for Windows
compat/fsmonitor/fsm-listen-darwin: stub in backend for Darwin
fsmonitor--daemon: implement 'run' command
fsmonitor--daemon: implement 'start' command
fsmonitor--daemon: add pathname classification
fsmonitor--daemon: define token-ids
fsmonitor--daemon: create token-based changed path cache
compat/fsmonitor/fsm-listen-win32: implement FSMonitor backend on Windows
compat/fsmonitor/fsm-listen-darwin: add MacOS header files for FSEvent
compat/fsmonitor/fsm-listen-darwin: implement FSEvent listener on MacOS
fsmonitor--daemon: implement handle_client callback
help: include fsmonitor--daemon feature flag in version info
t/helper/fsmonitor-client: create IPC client to talk to FSMonitor Daemon
t7527: create test for fsmonitor--daemon
t/perf: avoid copying builtin fsmonitor files into test repo
t/helper/test-chmtime: skip directories on Windows
t/perf/p7519: fix coding style
t/perf/p7519: speed up test on Windows
t/perf/p7519: add fsmonitor--daemon test cases
fsmonitor--daemon: periodically truncate list of modified files
fsmonitor--daemon: use a cookie file to sync with file system
fsmonitor: force update index after large responses
t7527: test status with untracked-cache and fsmonitor--daemon
Jerry Zhang (3):
git-rev-list: add --exclude-first-parent-only flag
patch-id: fix antipatterns in tests
patch-id: fix scan_hunk_header on diffs with 1 line of before/after
Jessica Clarke (1):
mem-pool: don't assume uintmax_t is aligned enough for all types
Jiang Xin (2):
l10n: git.pot: v2.36.0 round 1 (192 new, 106 removed)
l10n: git.pot: v2.36.0 round 2 (4 new, 3 removed)
Joel Holdsworth (4):
git-p4: don't select shell mode using the type of the command argument
git-p4: pass command arguments as lists instead of using shell
git-p4: don't print shell commands as python lists
git-p4: fix instantiation of CalledProcessError
Johannes Schindelin (24):
sparse-index: sparse index is disallowed when split index is active
t1091: disable split index
split-index: it really is incompatible with the sparse index
git-sh-setup: remove remnant bits referring to `git-legacy-stash`
add: remove support for `git-legacy-stash`
stash: remove documentation for `stash.useBuiltin`
stash: stop warning about the obsolete `stash.useBuiltin` config setting
docs(diff): lose incorrect claim about `diff-files --diff-filter=A`
diff.c: move the diff filter bits definitions up a bit
diff-filter: be more careful when looking for negative bits
scalar: accept -C and -c options before the subcommand
checkout/fetch/pull/pack-objects: allow `-h` outside a repository
t0012: verify that built-ins handle `-h` even without gitdir
GIT-VERSION-GEN: bump to v2.33.1
Add a function to determine whether a path is owned by the current user
setup_git_directory(): add an owner check for the top-level directory
cocci: allow padding with `strbuf_addf()`
Fix `GIT_CEILING_DIRECTORIES` with `C:\` and the likes
Git 2.30.3
Git 2.31.2
Git 2.32.1
Git 2.33.2
Git 2.34.2
Git 2.35.2
John Cai (15):
receive-pack.c: consolidate find header logic
name-rev: deprecate --stdin in favor of --annotate-stdin
name-rev.c: use strbuf_getline instead of limited size buffer
builtin/reflog.c: use parse-options api for expire, delete subcommands
name-rev: replace --stdin with --annotate-stdin in synopsis
cat-file: rename cmdmode to transform_mode
cat-file: introduce batch_mode enum to replace print_contents
cat-file: add remove_timestamp helper
cat-file: add --batch-command mode
stash: add tests to ensure reflog --rewrite --updatref behavior
reflog: libify delete reflog function and helpers
stash: call reflog_delete() in reflog.c
cat-file: skip expanding default format
rebase: use test_commit helper in setup
rebase: set REF_HEAD_DETACH in checkout_up_to_date()
Jonathan Tan (6):
config: make git_config_include() static
config: include file if remote URL matches a glob
sparse-checkout: create leading directory
clone: support unusual remote ref configurations
ls-files: support --recurse-submodules --stage
shallow: reset commit grafts when shallow is reset
Jordi Mas (1):
l10n: Update Catalan translation
Josh Steadmon (3):
test-lib: unset trace2 parent envvars
clone, submodule: pass partial clone filters to submodules
ls-tree: `-l` should not imply recursive listing
Junio C Hamano (40):
compat/qsort_s.c: avoid using potentially unaligned access
fetch: help translators by reusing the same message template
Start post 2.35 cycle
SubmittingPatches: write problem statement in the log in the present tense
CodingGuidelines: hint why we value clearly written log messages
SubmittingPatches: explain why we care about log messages
Git 2.35.1
Name the next one 2.36 to prepare for 2.35.1
The first batch
The second batch for 2.36
glossary: describe "worktree"
The third batch
The fourth batch
The fifth batch
The sixth batch
The seventh batch
The eighth batch
rerere-train: two fixes to the use of "git show -s"
am/apply: warn if we end up reading patches from terminal
The ninth batch
The tenth batch
The eleventh batch
The twelfth batch
The thirteenth batch
The 14th batch
reset: show --no-refresh in the short-help
The 15th batch
The 16th batch
The 17th batch
CodingGuidelines: give deadline for "for (int i = 0; ..."
Git 2.36-rc0
Git 2.36-rc1
Git 2.36-rc2
Git 2.30.4
Revert "Merge branch 'ps/avoid-unnecessary-hook-invocation-with-packed-refs'"
Revert "fetch: increase test coverage of fetches"
RelNotes: clarify "bisect run unexecutable" tweak
RelNotes: mention safe.directory
RelNotes: revert the description on the reverted topics
Git 2.36
Justin Donnelly (4):
git-prompt: rename `upstream` to `upstream_type`
git-prompt: make upstream state indicator location consistent
git-prompt: make long upstream state indicator consistent
git-prompt: put upstream comments together
Lessley Dennington (3):
completion: address sparse-checkout issues
completion: improve sparse-checkout cone mode directory completion
completion: handle unusual characters for sparse-checkout
Liginity Lee (1):
fix typo in git-mktree.txt
Marc Strapetz (4):
test-lib: introduce API for verifying file mtime
t7508: fix bogus mtime verification
t7508: add tests capturing racy timestamp handling
update-index: refresh should rewrite index in case of racy timestamps
Martin Ågren (1):
git-ls-tree.txt: fix the name of "%(objectsize:padded)"
Matheus Felipe (1):
config: correct "--type" option in "git config -h" output
Matheus Valadares (1):
setup: fix safe.directory key not being checked
Matt Cooper (1):
index-pack: clarify the breached limit
Matthias Rüster (1):
l10n: de.po: Update German translation
Michael J Gruber (2):
test-lib: declare local variables as local
tests: demonstrate "show --word-diff --color-moved" regression
Neeraj Singh (10):
wrapper: make inclusion of Windows csprng header tightly scoped
core.fsyncmethod: add writeout-only mode
core.fsync: introduce granular fsync control infrastructure
core.fsync: add configuration parsing
core.fsync: new option to harden the index
core.fsync: documentation and user-friendly aggregate options
core.fsync: fix incorrect expression for default configuration
trace2: add stats for fsync operations
core.fsyncmethod: correctly camel-case warning message
object-file: pass filename to fsync_or_die
Nihal Jere (1):
Documentation: git-read-tree: separate links using commas
Patrick Steinhardt (24):
refs: extract packed_refs_delete_refs() to allow control of transaction
refs: allow passing flags when beginning transactions
refs: allow skipping the reference-transaction hook
refs: demonstrate excessive execution of the reference-transaction hook
refs: do not execute reference-transaction hook on packing refs
refs: skip hooks when deleting uncovered packed refs
fetch-pack: use commit-graph when computing cutoff
fetch: skip computing output width when not printing anything
fetch: increase test coverage of fetches
fetch: backfill tags before setting upstream
fetch: control lifecycle of FETCH_HEAD in a single place
fetch: report errors when backfilling tags fails
refs: add interface to iterate over queued transactional updates
fetch: make `--atomic` flag cover backfilling of tags
fetch: make `--atomic` flag cover pruning of refs
upload-pack: look up "want" lines via commit-graph
fetch: avoid lookup of commits when not appending to FETCH_HEAD
refs: add ability for backends to special-case reading of symbolic refs
remote: read symbolic refs via `refs_read_symbolic_ref()`
refs/files-backend: optimize reading of symbolic refs
t5503: simplify setup of test which exercises failure of backfill
repack: refactor to avoid double-negation of update-server-info
repack: add config to skip updating server info
core.fsync: new option to harden references
Peter Krefting (1):
l10n: sv.po: Update Swedish translation (5282t0f0u)
Philip Oakley (2):
README.md: add CodingGuidelines and a link for Translators
doc: check-ignore: code-quote an exclamation mark
Philippe Blain (1):
pull --rebase: honor rebase.autostash when fast-forwarding
Phillip Wood (29):
t3701: clean up hunk splitting tests
builtin add -p: fix hunk splitting
rebase: factor out checkout for up to date branch
t5403: refactor rebase post-checkout hook tests
rebase: pass correct arguments to post-checkout hook
rebase: do not remove untracked files on checkout
rebase --apply: don't run post-checkout hook if there is an error
reset_head(): remove action parameter
reset_head(): factor out ref updates
reset_head(): make default_reflog_action optional
create_autostash(): remove unneeded parameter
rebase: cleanup reset_head() calls
reset_head(): take struct rebase_head_opts
rebase --apply: fix reflog
rebase --apply: set ORIG_HEAD correctly
rebase -m: don't fork git checkout
xdiff: fix a memory leak
xdiff: handle allocation failure in patience diff
xdiff: refactor a function
xdiff: handle allocation failure when merging
terminal: always reset terminal when reading without echo
terminal: pop signal handler when terminal is restored
terminal: set VMIN and VTIME in non-canonical mode
add -p: disable stdin buffering when interactive.singlekey is set
terminal: use flags for save_term()
terminal: don't assume stdin is /dev/tty
terminal: work around macos poll() bug
terminal: restore settings on SIGTSTP
worktree: add -z option for list subcommand
René Scharfe (10):
grep: use grep_or_expr() in compile_pattern_or()
grep: use grep_not_expr() in compile_pattern_not()
apply: use strsets to track symlinks
stable-qsort: avoid using potentially unaligned access
bisect--helper: report actual bisect_state() argument on error
bisect--helper: release strbuf and strvec on run error
bisect: document run behavior with exit codes 126 and 127
bisect--helper: double-check run command on exit code 126 and 127
parse-options: document bracketing of argh
grep: fix triggering PCRE2_NO_START_OPTIMIZE workaround
Robert Coup (8):
fetch: fix negotiate-only error message
fetch-negotiator: add specific noop initializer
fetch-pack: add refetch
builtin/fetch-pack: add --refetch option
fetch: add --refetch option
t5615-partial-clone: add test for fetch --refetch
fetch: after refetch, encourage auto gc repacking
docs: mention --refetch fetch option
SZEDER Gábor (1):
reflog: fix 'show' subcommand's argv
Shaoxuan Yuan (4):
builtin/diff.c: fix "git-diff" usage string typo
t/lib-read-tree-m-3way: modernize style
t/lib-read-tree-m-3way: indent with tabs
t0001: replace "test [-d|-f]" with test_path_is_* functions
Shubham Mishra (3):
t0003: avoid pipes with Git on LHS
t0001-t0028: avoid pipes with Git on LHS
t0030-t0050: avoid pipes with Git on LHS
Tao Klerks (6):
t7519: avoid file to index mtime race for untracked cache
t7519: populate untracked cache before test
untracked-cache: write index when populating empty untracked cache
t/helper/test-chmtime: update mingw to support chmtime on directories
t7063: mtime-mangling instead of delays in untracked cache testing
tracking branches: add advice to ambiguous refspec error
Taylor Blau (15):
grep: extract grep_binexp() from grep_or_expr()
grep: use grep_and_expr() in compile_pattern_and()
t5326: demonstrate bitmap corruption after permutation
midx.c: make changing the preferred pack safe
pack-revindex.c: instrument loading on-disk reverse index
t5326: drop unnecessary setup
t5326: extract `test_rev_exists`
t5326: move tests to t/lib-bitmap.sh
t/lib-bitmap.sh: parameterize tests over reverse index source
midx: read `RIDX` chunk when present
pack-bitmap.c: gracefully fallback after opening pack/MIDX
midx: prevent writing a .bitmap without any objects
CODE_OF_CONDUCT.md: update PLC members list
builtin/remote.c: parse options in 'rename'
builtin/remote.c: show progress when renaming remote references
Teng Long (6):
git-cli.txt: clarify "options first and then args"
ls-tree: rename "retval" to "recurse" in "show_tree()"
ls-tree: simplify nesting if/else logic in "show_tree()"
ls-tree: fix "--name-only" and "--long" combined use bug
ls-tree: slightly refactor `show_tree()`
ls-tree: support --object-only option for "git-ls-tree"
Thomas Gummerer (1):
fetch --prune: exit with error if pruning fails
Thomas Koutcher (1):
subtree: force merge commit
Todd Zullinger (3):
t/lib-gpg: reload gpg components after updating trustlist
t/lib-gpg: kill all gpg components, not just gpg-agent
doc: replace "--" with {litdd} in credential-cache/fsmonitor
Trần Ngọc Quân (1):
l10n: vi(5285t): v2.36.0 round 2
Victoria Dye (30):
reset: fix validation in sparse index test
reset: reorder wildcard pathspec conditions
clean: integrate with sparse index
checkout-index: expand sparse checkout compatibility tests
checkout-index: add --ignore-skip-worktree-bits option
checkout-index: integrate with sparse index
update-index: add tests for sparse-checkout compatibility
update-index: integrate with sparse index
update-index: reduce scope of index expansion in do_reupdate
sparse-index: prevent repo root from becoming sparse
status: fix nested sparse directory diff in sparse index
read-tree: explicitly disallow prefixes with a leading '/'
read-tree: expand sparse checkout test coverage
read-tree: integrate with sparse index
read-tree: narrow scope of index expansion for '--prefix'
read-tree: make two-way merge sparse-aware
read-tree: make three-way merge sparse-aware
reset: revise index refresh advice
reset: introduce --[no-]refresh option to --mixed
reset: replace '--quiet' with '--no-refresh' in performance advice
reset: suppress '--no-refresh' advice if logging is silenced
stash: make internal resets quiet and refresh index
t1092: add sparse directory before cone in test repo
unpack-trees: increment cache_bottom for sparse directories
Revert "unpack-trees: improve performance of next_cache_entry"
reset: do not make '--quiet' disable index refresh
reset: remove 'reset.quiet' config option
reset: remove 'reset.refresh' config option
mv: refresh stat info for moved entry
contrib/scalar: fix 'all' target in Makefile
Yi-Jyun Pan (1):
l10n: zh_TW: v2.36.0 round 2
brian m. carlson (6):
t0027: add tests for eol without text in .gitattributes
docs: correct documentation about eol attribute
wrapper: add a helper to generate numbers from a CSPRNG
wrapper: use a CSPRNG to generate random file names
doc: clarify interaction between 'eol' and text=auto
block-sha1: remove use of obsolete x86 assembly
Ævar Arnfjörð Bjarmason (186):
cat-file tests: test bad usage
cat-file tests: test messaging on bad objects/paths
parse-options API: add a usage_msg_optf()
cat-file docs: fix SYNOPSIS and "-h" output
cat-file: move "usage" variable to cmd_cat_file()
cat-file: make --batch-all-objects a CMDMODE
cat-file: fix remaining usage bugs
cat-file: correct and improve usage information
object-name.c: don't have GET_OID_ONLY_TO_DIE imply *_QUIETLY
cat-file: use GET_OID_ONLY_TO_DIE in --(textconv|filters)
hook API: add a run_hooks() wrapper
hook API: add a run_hooks_l() wrapper
git hook run: add an --ignore-missing flag
cat-file: don't whitespace-pad "(...)" in SYNOPSIS and usage output
cat-file: s/_/-/ in typo'd usage_msg_optf() message
compat: auto-detect if zlib has uncompress2()
sequencer: don't use die_errno() on refs_resolve_ref_unsafe() failure
refs API: remove "failure_errno" from refs_resolve_ref_unsafe()
object-name tests: add tests for ambiguous object blind spots
object-name: explicitly handle OBJ_BAD in show_ambiguous_object()
object-name: explicitly handle bad tags in show_ambiguous_object()
object-name: make ambiguous object output translatable
object-name: show date for ambiguous tag objects
object-name: iterate ambiguous objects before showing header
object-name: re-use "struct strbuf" in show_ambiguous_object()
perl Git.pm: don't ignore signalled failure in _cmd_close()
completion tests: re-source git-completion.bash in a subshell
completion: add a GIT_COMPLETION_SHOW_ALL_COMMANDS
leak tests: fix a memory leak in "test-progress" helper
progress.c test helper: add missing braces
progress.c tests: make start/stop commands on stdin
progress.c tests: test some invalid usage
progress.h: format and be consistent with progress.c naming
progress.c: use dereferenced "progress" variable, not "(*p_progress)"
progress.c: refactor stop_progress{,_msg}() to use helpers
progress API: unify stop_progress{,_msg}(), fix trace2 bug
pack-bitmap-write.c: don't return without stop_progress()
t0051: use "skip_all" under !MINGW in single-test file
hash-object: fix a trivial leak in --path
ls-remote & transport API: release "struct transport_ls_refs_options"
grep.h: remove unused "regex_t regexp" from grep_opt
log tests: check if grep_config() is called by "log"-like cmds
grep tests: create a helper function for "BRE" or "ERE"
grep tests: add missing "grep.patternType" config tests
built-ins: trust the "prefix" from run_builtin()
grep.c: don't pass along NULL callback value
grep API: call grep_config() after grep_init()
grep.h: make "grep_opt.pattern_type_option" use its enum
grep.c: do "if (bool && memchr())" not "if (memchr() && bool)"
grep: simplify config parsing and option parsing
cache.h: remove always unused show_date_human() declaration
date API: create a date.h, split from cache.h
date API: provide and use a DATE_MODE_INIT
date API: add basic API docs
date API: add and use a date_mode_release()
diff.[ch]: have diff_free() call clear_pathspec(opts.pathspec)
diff.[ch]: have diff_free() free options->parseopts
hook tests: test for exact "pre-push" hook input
hook tests: use a modern style for "pre-push" tests
git-compat-util.h: clarify GCC v.s. C99-specific in comment
C99: remove hardcoded-out !HAVE_VARIADIC_MACROS code
help doc: add missing "]" to "[-a|--all]"
help.c: use puts() instead of printf{,_ln}() for consistency
help tests: test "git" and "git help [-a|-g] spacing
help.c: split up list_all_cmds_help() function
help: note the option name on option incompatibility
help: correct usage & behavior of "git help --all"
help: error if [-a|-g|-c] and [-i|-m|-w] are combined
help: add --no-[external-commands|aliases] for use with --all
help: don't print "\n" before single-section output
imap-send.c: use designated initializers for "struct imap_server_conf"
trace2: use designated initializers for "struct tr2_tgt"
trace2: use designated initializers for "struct tr2_dst"
object-file: use designated initializers for "struct git_hash_algo"
archive-*.c: use designated initializers for "struct archiver"
userdiff.c: use designated initializers for "struct userdiff_driver"
convert.c: use designated initializers for "struct stream_filter*"
refspec.c: use designated initializers for "struct refspec_item"
fast-import.c: use designated initializers for "partial" struct assignments
object-file.c: split up declaration of unrelated variables
object-file API: return "void", not "int" from hash_object_file()
object-file API: add a format_object_header() function
object-file API: have write_object_file() take "enum object_type"
object API: correct "buf" v.s. "map" mismatch in *.c and *.h
object API docs: move check_object_signature() docs to cache.h
object API users + docs: check <0, not !0 with check_object_signature()
object-file API: split up and simplify check_object_signature()
object API: rename hash_object_file_literally() to write_*()
object-file API: have hash_object_file() take "enum object_type"
object-file.c: add a literal version of write_object_file_prepare()
object-file API: pass an enum to read_object_with_reference()
test-lib: add GIT_SAN_OPTIONS, inherit [AL]SAN_OPTIONS
test-lib: correct and assert TEST_DIRECTORY overriding
test-lib: make $GIT_BUILD_DIR an absolute path
test-lib: add "fast_unwind_on_malloc=0" to LSAN_OPTIONS
scalar Makefile: use "The default target of..." pattern
Makefiles: add "shared.mak", move ".DELETE_ON_ERROR" to it
Makefile: disable GNU make built-in wildcard rules
Makefile: define $(LIB_H) in terms of $(FIND_SOURCE_FILES)
Makefile: move ".SUFFIXES" rule to shared.mak
Makefile: move $(comma), $(empty) and $(space) to shared.mak
Makefile: add "$(QUIET)" boilerplate to shared.mak
Makefiles: add and use wildcard "mkdir -p" template
log tests: fix "abort tests early" regression in ff37a60c369
index-pack: fix memory leaks
merge-base: free() allocated "struct commit **" list
diff.c: free "buf" in diff_words_flush()
urlmatch.c: add and use a *_release() function
remote-curl.c: free memory in cmd_main()
bundle: call strvec_clear() on allocated strvec
transport: stop needlessly copying bundle header references
submodule--helper: fix trivial leak in module_add()
commit-graph: fix memory leak in misused string_list API
commit-graph: stop fill_oids_from_packs() progress on error and free()
lockfile API users: simplify and don't leak "path"
range-diff: plug memory leak in common invocation
range-diff: plug memory leak in read_patches()
repository.c: free the "path cache" in repo_clear()
submodule tests: test for init and update failure output
submodule--helper: don't use bitfield indirection for parse_options()
gettext API users: don't explicitly cast ngettext()'s "n"
string-list API: change "nr" and "alloc" to "size_t"
merge: don't run post-hook logic on --no-verify
hooks: fix an obscure TOCTOU "did we just run a hook?" race
tests: change some 'test $(git) = "x"' to test_cmp
tests: use "test_stdout_line_count", not "test $(git [...] | wc -l)"
read-tree tests: check "diff-files" exit code on failure
diff tests: don't ignore "git diff" exit code
diff tests: don't ignore "git diff" exit code in "read" loop
apply tests: use "test_must_fail" instead of ad-hoc pattern
merge tests: use "test_must_fail" instead of ad-hoc pattern
rev-parse tests: don't ignore "git reflog" exit code
notes tests: don't ignore "git" exit code
diff tests: don't ignore "git rev-list" exit code
rev-list tests: don't hide abort() in "test_expect_failure"
gettext tests: don't ignore "test-tool regex" exit code
apply tests: don't ignore "git ls-files" exit code, drop sub-shell
checkout tests: don't ignore "git <cmd>" exit code
rev-list simplify tests: don't ignore "git" exit code
list-objects: handle NULL function pointers
reflog: don't be noisy on empty reflogs
builtin/submodule--helper.c: rename option struct to "opt"
test-lib-functions: add and use a "test_hook" wrapper
hook tests: turn exit code assertions into a loop
http tests: don't rely on "hook/post-update.sample"
tests: assume the hooks are disabled by default
bugreport tests: tighten up "git bugreport -s hooks" test
fetch+push tests: use "test_hook" and "test_when_finished" pattern
gc + p4 tests: use "test_hook", remove sub-shells
tests: change "cat && chmod +x" to use "test_hook"
tests: change "mkdir -p && write_script" to use "test_hook"
tests: use "test_hook" for misc "mkdir -p" and "chmod" cases
diff.c: fix a double-free regression in a18d66cefb
refs: use designated initializers for "struct ref_storage_be"
refs: use designated initializers for "struct ref_iterator_vtable"
misc *.c: use designated initializers for struct assignments
packed-backend: remove stub BUG(...) functions
refs debug: add a wrapper for "read_symbolic_ref"
tests: extend "test_hook" for "rm" and "chmod -x", convert "$HOOK"
proc-receive hook tests: use "test_hook" instead of "write_script"
http tests: use "test_hook" for "smart" and "dumb" http tests
reflog.c: indent argument lists
reflog: refactor cmd_reflog() to "if" branches
reflog tests: add missing "git reflog exists" tests
reflog: move "usage" variables and use macros
git reflog [expire|delete]: make -h output consistent with SYNOPSIS
reflog exists: use parse_options() API
Makefile: use ' ', not non-existing $(wspfx_SQ)
ls-tree tests: add tests for --name-status
ls-tree: remove commented-out code
ls-tree: add missing braces to "else" arms
ls-tree: use "enum object_type", not {blob,tree,commit}_type
ls-tree: use "size_t", not "int" for "struct strbuf"'s "len"
ls-tree: introduce struct "show_tree_data"
ls-tree: introduce "--format" option
ls-tree: detect and error on --name-only --name-status
ls-tree: split up "fast path" callbacks
hooks: fix "invoked hook" regression in a8cc5943338
reflog: convert to parse_options() API
reflog [show]: display sensible -h output
test-lib: have --immediate emit valid TAP on failure
pack-objects: lazily set up "struct rev_info", don't leak
reftable: make assignments portable to AIX xlc v12.01
Documentation/Makefile: fix "make info" regression in dad9cd7d518
Documentation: add --batch-command to cat-file synopsis
ls-tree doc: document interaction with submodules
^ permalink raw reply [relevance 3%]
* Re: [PATCH 0/7] rebase: make reflog messages independent of the backend
2022-02-21 11:10 3% [PATCH 0/7] rebase: make reflog messages independent of the backend Phillip Wood via GitGitGadget
` (2 preceding siblings ...)
2022-04-04 15:34 0% ` Review Request (was Re: [PATCH 0/7] rebase: make reflog messages independent of the backend) Phillip Wood
@ 2022-04-17 2:09 0% ` Elijah Newren
2022-04-20 9:56 3% ` [PATCH v2 0/8] " Phillip Wood via GitGitGadget
4 siblings, 0 replies; 200+ results
From: Elijah Newren @ 2022-04-17 2:09 UTC (permalink / raw)
To: Phillip Wood via GitGitGadget; +Cc: Git Mailing List, Phillip Wood
On Mon, Feb 21, 2022 at 9:04 PM Phillip Wood via GitGitGadget
<gitgitgadget@gmail.com> wrote:
>
> This is a series of rebase reflog related patches with the aim of unifying
> the reflog messages from the two rebase backends.
>
> * improve rebase reflog test coverage
> * rebase --merge: fix reflog messages for --continue and --skip
> * rebase --apply: respect GIT_REFLOG_ACTION
> * rebase --abort: improve reflog message
> * unify reflog messages between the two rebase backends
>
> This series is based on pw/use-inprocess-checkout-in-rebase
>
> Phillip Wood (7):
> rebase --apply: remove duplicated code
> rebase --merge: fix reflog when continuing
> rebase --merge: fix reflog message after skipping
> rebase --apply: respect GIT_REFLOG_ACTION
> rebase --apply: make reflog messages match rebase --merge
> rebase --abort: improve reflog message
> rebase: cleanup action handling
>
> builtin/rebase.c | 144 ++++++++++++-----------------
> sequencer.c | 5 ++
> t/t3406-rebase-message.sh | 185 +++++++++++++++++++++++++++++++-------
> 3 files changed, 214 insertions(+), 120 deletions(-)
>
>
> base-commit: 38c541ce94048cf72aa4f465be9314423a57f445
> Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-1150%2Fphillipwood%2Fwip%2Frebase-reflog-fixes-v1
> Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-1150/phillipwood/wip/rebase-reflog-fixes-v1
> Pull-Request: https://github.com/gitgitgadget/git/pull/1150
I read through the seven patches, then went back and commented on all
of them. Hard to find problems really, looks nicely written. I would
second Christian's request to have the second patch split with a
preparatory testcase cleanup, which it appears you already plan to do.
Other than patch, the series looks good to me.
^ permalink raw reply [relevance 0%]
* Re: Review Request (was Re: [PATCH 0/7] rebase: make reflog messages independent of the backend)
2022-04-04 15:34 0% ` Review Request (was Re: [PATCH 0/7] rebase: make reflog messages independent of the backend) Phillip Wood
@ 2022-04-17 2:13 0% ` Elijah Newren
2022-04-18 18:56 0% ` Phillip Wood
0 siblings, 1 reply; 200+ results
From: Elijah Newren @ 2022-04-17 2:13 UTC (permalink / raw)
To: Phillip Wood
Cc: Phillip Wood via GitGitGadget, Git Mailing List,
Johannes Schindelin, Ævar Arnfjörð Bjarmason
On Mon, Apr 4, 2022 at 8:34 AM Phillip Wood <phillip.wood123@gmail.com> wrote:
>
> If anyone has time to review these patches I'd be very grateful. I've
> cc'd this message to some list regulars who have reviewed rebase patches
> before but if anyone else fancies taking a look at them that would be great.
I apologize for the delay here...especially when it came after you had
already waited a month and a half. (This is the first git thing I've
done in over a month, sadly.) Anyway, I just read through the series
and left some comments; mostly looks good but I second the request to
split up one of the patches.
> On 21/02/2022 11:10, Phillip Wood via GitGitGadget wrote:
> > This is a series of rebase reflog related patches with the aim of unifying
> > the reflog messages from the two rebase backends.
> >
> > * improve rebase reflog test coverage
> > * rebase --merge: fix reflog messages for --continue and --skip
> > * rebase --apply: respect GIT_REFLOG_ACTION
> > * rebase --abort: improve reflog message
> > * unify reflog messages between the two rebase backends
> >
> > This series is based on pw/use-inprocess-checkout-in-rebase
> >
> > Phillip Wood (7):
> > rebase --apply: remove duplicated code
> > rebase --merge: fix reflog when continuing
> > rebase --merge: fix reflog message after skipping
> > rebase --apply: respect GIT_REFLOG_ACTION
> > rebase --apply: make reflog messages match rebase --merge
> > rebase --abort: improve reflog message
> > rebase: cleanup action handling
> >
> > builtin/rebase.c | 144 ++++++++++++-----------------
> > sequencer.c | 5 ++
> > t/t3406-rebase-message.sh | 185 +++++++++++++++++++++++++++++++-------
> > 3 files changed, 214 insertions(+), 120 deletions(-)
> >
> >
> > base-commit: 38c541ce94048cf72aa4f465be9314423a57f445
> > Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-1150%2Fphillipwood%2Fwip%2Frebase-reflog-fixes-v1
> > Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-1150/phillipwood/wip/rebase-reflog-fixes-v1
> > Pull-Request: https://github.com/gitgitgadget/git/pull/1150
^ permalink raw reply [relevance 0%]
* Re: [PATCH 3/7] rebase --merge: fix reflog message after skipping
2022-02-21 11:10 2% ` [PATCH 3/7] rebase --merge: fix reflog message after skipping Phillip Wood via GitGitGadget
@ 2022-04-17 1:58 2% ` Elijah Newren
0 siblings, 0 replies; 200+ results
From: Elijah Newren @ 2022-04-17 1:58 UTC (permalink / raw)
To: Phillip Wood via GitGitGadget; +Cc: Git Mailing List, Phillip Wood
On Mon, Feb 21, 2022 at 3:19 PM Phillip Wood via GitGitGadget
<gitgitgadget@gmail.com> wrote:
>
> From: Phillip Wood <phillip.wood@dunelm.org.uk>
>
> The reflog message for every pick after running "rebase --skip" looks
> like
>
> rebase (skip) (pick): commit subject line
>
> Fix this by not appending " (skip)" to the reflog action.
Nice catch, and cool that the fix was so simple.
> Signed-off-by: Phillip Wood <phillip.wood@dunelm.org.uk>
> ---
> builtin/rebase.c | 2 --
> t/t3406-rebase-message.sh | 24 ++++++++++++++++++++++++
> 2 files changed, 24 insertions(+), 2 deletions(-)
>
> diff --git a/builtin/rebase.c b/builtin/rebase.c
> index cd9a4f3e2f1..36863117fba 100644
> --- a/builtin/rebase.c
> +++ b/builtin/rebase.c
> @@ -1273,8 +1273,6 @@ int cmd_rebase(int argc, const char **argv, const char *prefix)
> struct string_list merge_rr = STRING_LIST_INIT_DUP;
>
> options.action = "skip";
> - set_reflog_action(&options);
> -
> rerere_clear(the_repository, &merge_rr);
> string_list_clear(&merge_rr, 1);
> ropts.flags = RESET_HEAD_HARD;
> diff --git a/t/t3406-rebase-message.sh b/t/t3406-rebase-message.sh
> index 3ca2fbb0d59..8aa6a79acc1 100755
> --- a/t/t3406-rebase-message.sh
> +++ b/t/t3406-rebase-message.sh
> @@ -163,6 +163,30 @@ test_reflog () {
> # check there is only one new entry in the branch reflog
> test_cmp_rev fast-forward@{1} X
> '
> +
> + test_expect_success "rebase $mode --skip reflog${reflog_action:+ GIT_REFLOG_ACTION=$reflog_action}" '
> + git checkout conflicts &&
> + test_when_finished "git reset --hard Q" &&
> +
> + (
> + if test -n "$reflog_action"
> + then
> + GIT_REFLOG_ACTION="$reflog_action" &&
> + export GIT_REFLOG_ACTION
> + fi &&
> + test_must_fail git rebase $mode main &&
> + git rebase --skip
> + ) &&
> +
> + git log -g --format=%gs -4 >actual &&
> + write_reflog_expect <<-EOF &&
> + ${reflog_action:-rebase} (finish): returning to refs/heads/conflicts
> + ${reflog_action:-rebase} (pick): Q
> + ${reflog_action:-rebase} (pick): P
> + ${reflog_action:-rebase} (start): checkout main
> + EOF
> + test_cmp expect actual
> + '
> }
>
> test_reflog --merge
> --
> gitgitgadget
>
^ permalink raw reply [relevance 2%]
* Re: [PATCH 2/7] rebase --merge: fix reflog when continuing
2022-04-15 14:00 2% ` Phillip Wood
@ 2022-04-17 1:57 2% ` Elijah Newren
0 siblings, 0 replies; 200+ results
From: Elijah Newren @ 2022-04-17 1:57 UTC (permalink / raw)
To: Phillip Wood; +Cc: Christian Couder, Phillip Wood via GitGitGadget, git
On Fri, Apr 15, 2022 at 5:23 PM Phillip Wood <phillip.wood123@gmail.com> wrote:
>
> Hi Chirstian
>
> Thanks for taking a look at this series
>
> On 07/04/2022 14:49, Christian Couder wrote:
> > On Tue, Feb 22, 2022 at 6:12 AM Phillip Wood via GitGitGadget
> > <gitgitgadget@gmail.com> wrote:
> >>
> >> From: Phillip Wood <phillip.wood@dunelm.org.uk>
> >>
> >> The reflog message for a conflict resolution committed by "rebase
> >> --continue" looks like
> >>
> >> rebase (continue): commit subject line
> >>
> >> Unfortunately the reflog message each subsequent pick look like
> >>
> >> rebase (continue) (pick): commit subject line
> >>
> >> Fix this by setting the reflog message for "rebase --continue" in
> >> sequencer_continue() so it does not affect subsequent commits. This
> >> introduces a memory leak similar to the one leaking GIT_REFLOG_ACTION
> >> in pick_commits(). Both of these will be fixed in a future series that
> >> stops the sequencer calling setenv().
> >
> > Yeah, it looks like we will leak only a small string.
> >
> >> Signed-off-by: Phillip Wood <phillip.wood@dunelm.org.uk>
> >> ---
> >> builtin/rebase.c | 2 -
> >> sequencer.c | 5 ++
> >> t/t3406-rebase-message.sh | 120 +++++++++++++++++++++++++-------------
> >
> > The changes to the test script look a bit involved and aren't
> > explained in the commit message. I wonder if some of those changes
> > could have been made in a preparatory commit.
>
> That's a good point. For some reason when I put the series together I
> thought it would be tricky to do that without the fixes in this commit
> but that is not actually the case so I'll split the test changes out.
That would be very nice; I'd like to see it split out too.
^ permalink raw reply [relevance 2%]
* Re: [PATCH 2/7] rebase --merge: fix reflog when continuing
2022-04-07 13:49 2% ` Christian Couder
@ 2022-04-15 14:00 2% ` Phillip Wood
2022-04-17 1:57 2% ` Elijah Newren
0 siblings, 1 reply; 200+ results
From: Phillip Wood @ 2022-04-15 14:00 UTC (permalink / raw)
To: Christian Couder, Phillip Wood via GitGitGadget; +Cc: git, Phillip Wood
Hi Chirstian
Thanks for taking a look at this series
On 07/04/2022 14:49, Christian Couder wrote:
> On Tue, Feb 22, 2022 at 6:12 AM Phillip Wood via GitGitGadget
> <gitgitgadget@gmail.com> wrote:
>>
>> From: Phillip Wood <phillip.wood@dunelm.org.uk>
>>
>> The reflog message for a conflict resolution committed by "rebase
>> --continue" looks like
>>
>> rebase (continue): commit subject line
>>
>> Unfortunately the reflog message each subsequent pick look like
>>
>> rebase (continue) (pick): commit subject line
>>
>> Fix this by setting the reflog message for "rebase --continue" in
>> sequencer_continue() so it does not affect subsequent commits. This
>> introduces a memory leak similar to the one leaking GIT_REFLOG_ACTION
>> in pick_commits(). Both of these will be fixed in a future series that
>> stops the sequencer calling setenv().
>
> Yeah, it looks like we will leak only a small string.
>
>> Signed-off-by: Phillip Wood <phillip.wood@dunelm.org.uk>
>> ---
>> builtin/rebase.c | 2 -
>> sequencer.c | 5 ++
>> t/t3406-rebase-message.sh | 120 +++++++++++++++++++++++++-------------
>
> The changes to the test script look a bit involved and aren't
> explained in the commit message. I wonder if some of those changes
> could have been made in a preparatory commit.
That's a good point. For some reason when I put the series together I
thought it would be tricky to do that without the fixes in this commit
but that is not actually the case so I'll split the test changes out.
Best Wishes
Phillip
>
>> 3 files changed, 86 insertions(+), 41 deletions(-)
^ permalink raw reply [relevance 2%]
* [ANNOUNCE] Git v2.36.0-rc2
@ 2022-04-12 17:03 3% Junio C Hamano
0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2022-04-12 17:03 UTC (permalink / raw)
To: git; +Cc: git-packagers
A release candidate Git v2.36.0-rc2 is now available for testing at
the usual places. It is comprised of 673 non-merge commits since
v2.35.2, contributed by 85 people, 25 of which are new faces [*].
It is a day earlier than scheduled; it contains the same fix for
CVE-2022-24765 in the maintenance releases released today.
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.36.0-rc2' tag and the 'master' branch that the tag points at:
url = https://git.kernel.org/pub/scm/git/git
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.35.2 are as follows.
Welcome to the Git development community!
Abhradeep Chakraborty, BRESSAT Jonathan, Chen Bojun,
COGONI Guillaume, David Cantrell, Des Preston, Hongyi Zhao,
Jason Yundt, Jayati Shrivastava, Jaydeep Das, Jaydeep P Das,
Jose Lopes, Justin Donnelly, Kraymer, Liginity Lee, Matheus
Felipe, Maximilian Reichel, Michael McClimon, Nihal Jere,
Pedro Martelletto, Robert Coup, Sean Allred, Shaoxuan Yuan,
Shubham Mishra, and Waleed Khan.
Returning contributors who helped this release are as follows.
Thanks for your continued support.
Adam Dinwoodie, Ævar Arnfjörð Bjarmason, Alex Henrie,
Atharva Raykar, Bagas Sanjaya, Beat Bolli, brian m. carlson,
Carlo Marcelo Arenas Belón, Christian Couder, Daniel Hahler,
Derrick Stolee, Elia Pinto, Elijah Newren, Emily Shaffer,
Eric Sunshine, Fabian Stelzer, Fangyi Zhou, Glen Choo, Greg
Hurrell, Han-Wen Nienhuys, Jacob Keller, Jean-Noël Avila, Jeff
Hostetler, Jeff King, Jerry Zhang, Jessica Clarke, Jiang Xin,
Joel Holdsworth, Johannes Altmanninger, Johannes Schindelin,
Johannes Sixt, John Cai, Jonathan Nieder, Jonathan Tan, Josh
Steadmon, Junio C Hamano, Kevin Willford, Lessley Dennington,
Marc Strapetz, Martin Ågren, Matt Cooper, Michael J Gruber,
Neeraj Singh, Patrick Steinhardt, Philip Oakley, Philippe Blain,
Phillip Wood, Ramkumar Ramachandra, Randall S. Becker, René
Scharfe, Shourya Shukla, SZEDER Gábor, Tao Klerks, Taylor Blau,
Teng Long, Thomas Gummerer, Thomas Koutcher, Tilman Vogel,
Todd Zullinger, and Victoria Dye.
[*] We are counting not just the authorship contribution but issue
reporting, mentoring, helping and reviewing that are recorded in
the commit trailers.
----------------------------------------------------------------
Git 2.36 Release Notes (draft)
==============================
Updates since Git 2.35
----------------------
Backward compatibility warts
* "git name-rev --stdin" has been deprecated and issues a warning
when used; use "git name-rev --annotate-stdin" instead.
* "git clone --filter=... --recurse-submodules" only makes the
top-level a partial clone, while submodules are fully cloned. This
behaviour is changed to pass the same filter down to the submodules.
Note to those who build from the source
* Since Git 2.31, our source assumed that the compiler you use to
build Git supports variadic macros, with an easy-to-use escape
hatch to allow compilation without variadic macros with an request
to report that you had to use the escape hatch to the list.
Because we haven't heard from anybody who actually needed to use
the escape hatch, it has been removed, making support of variadic
macros a hard requirement.
UI, Workflows & Features
* Assorted updates to "git cat-file", especially "-h".
* The command line completion (in contrib/) learns to complete
arguments to give to "git sparse-checkout" command.
* "git log --remerge-diff" shows the difference from mechanical merge
result and the result that is actually recorded in a merge commit.
* "git log" and friends learned an option --exclude-first-parent-only
to propagate UNINTERESTING bit down only along the first-parent
chain, just like --first-parent option shows commits that lack the
UNINTERESTING bit only along the first-parent chain.
* The command line completion script (in contrib/) learned to
complete all Git subcommands, including the ones that are normally
hidden, when GIT_COMPLETION_SHOW_ALL_COMMANDS is used.
* "git branch" learned the "--recurse-submodules" option.
* A not-so-common mistake is to write a script to feed "git bisect
run" without making it executable, in which case all tests will
exit with 126 or 127 error codes, even on revisions that are marked
as good. Try to recognize this situation and stop iteration early.
* When "index-pack" dies due to incoming data exceeding the maximum
allowed input size, include the value of the limit in the error
message.
* The error message given by "git switch HEAD~4" has been clarified
to suggest the "--detach" option that is required.
* In sparse-checkouts, files mis-marked as missing from the working tree
could lead to later problems. Such files were hard to discover, and
harder to correct. Automatically detecting and correcting the marking
of such files has been added to avoid these problems.
* "git cat-file" learns "--batch-command" mode, which is a more
flexible interface than the existing "--batch" or "--batch-check"
modes, to allow different kinds of inquiries made.
* The level of verbose output from the ort backend during inner merge
has been aligned to that of the recursive backend.
* "git remote rename A B", depending on the number of remote-tracking
refs involved, takes long time renaming them. The command has been
taught to show progress bar while making the user wait.
* Bundle file format gets extended to allow a partial bundle,
filtered by similar criteria you would give when making a
partial/lazy clone.
* A new built-in userdiff driver for kotlin has been added.
* "git repack" learned a new configuration to disable triggering of
age-old "update-server-info" command, which is rarely useful these
days.
* "git stash" does not allow subcommands it internally runs as its
implementation detail, except for "git reset", to emit messages;
now "git reset" part has also been squelched.
* "git ls-tree" learns "--oid-only" option, similar to "--name-only",
and more generalized "--format" option.
* "git fetch --refetch" learned to fetch everything without telling
the other side what we already have, which is useful when you
cannot trust what you have in the local object store.
* "git branch" gives hint when branch tracking cannot be established
because fetch refspecs from multiple remote repositories overlap.
* "git worktree list --porcelain" did not c-quote pathnames and lock
reasons with unsafe bytes correctly, which is worked around by
introducing NUL terminated output format with "-z".
Performance, Internal Implementation, Development Support etc.
* "git apply" (ab)used the util pointer of the string-list to keep
track of how each symbolic link needs to be handled, which has been
simplified by using strset.
* Fix a hand-rolled alloca() imitation that may have violated
alignment requirement of data being sorted in compatibility
implementation of qsort_s() and stable qsort().
* Use the parse-options API in "git reflog" command.
* The conditional inclusion mechanism of configuration files using
"[includeIf <condition>]" learns to base its decision on the
URL of the remote repository the repository interacts with.
(merge 399b198489 jt/conditional-config-on-remote-url later to maint).
* "git name-rev --stdin" does not behave like usual "--stdin" at
all. Start the process of renaming it to "--annotate-stdin".
(merge a2585719b3 jc/name-rev-stdin later to maint).
* "git update-index", "git checkout-index", and "git clean" are
taught to work better with the sparse checkout feature.
* Use an internal call to reset_head() helper function instead of
spawning "git checkout" in "rebase", and update code paths that are
involved in the change.
* Messages "ort" merge backend prepares while dealing with conflicted
paths were unnecessarily confusing since it did not differentiate
inner merges and outer merges.
* Small modernization of the rerere-train script (in contrib/).
* Use designated initializers we started using in mid 2017 in more
parts of the codebase that are relatively quiescent.
* Improve failure case behaviour of xdiff library when memory
allocation fails.
* General clean-up in reftable implementation, including
clarification of the API documentation, tightening the code to
honor documented length limit, etc.
* Remove the escape hatch we added when we introduced the weather
balloon to use variadic macros unconditionally, to make it official
that we now have a hard dependency on the feature.
* Makefile refactoring with a bit of suffixes rule stripping to
optimize the runtime overhead.
* "git stash drop" is reimplemented as an internal call to
reflog_delete() function, instead of invoking "git reflog delete"
via run_command() API.
* Count string_list items in size_t, not "unsigned int".
* The single-key interactive operation used by "git add -p" has been
made more robust.
* Remove unneeded <meta http-equiv=content-type...> from gitweb
output.
* "git name-rev" learned to use the generation numbers when setting
the lower bound of searching commits used to explain the revision,
when available, instead of committer time.
* Replace core.fsyncObjectFiles with two new configuration variables,
core.fsync and core.fsyncMethod.
* Updates to refs traditionally weren't fsync'ed, but we can
configure using core.fsync variable to do so.
* "git reflog" command now uses parse-options API to parse its
command line options.
Fixes since v2.35
-----------------
* "rebase" and "stash" in secondary worktrees are broken in
Git 2.35.0, which has been corrected.
* "git pull --rebase" ignored the rebase.autostash configuration
variable when the remote history is a descendant of our history,
which has been corrected.
(merge 3013d98d7a pb/pull-rebase-autostash-fix later to maint).
* "git update-index --refresh" has been taught to deal better with
racy timestamps (just like "git status" already does).
(merge 2ede073fd2 ms/update-index-racy later to maint).
* Avoid tests that are run under GIT_TRACE2 set from failing
unnecessarily.
(merge 944d808e42 js/test-unset-trace2-parents later to maint).
* The merge-ort misbehaved when merge.renameLimit configuration is
set too low and failed to find all renames.
(merge 9ae39fef7f en/merge-ort-restart-optim-fix later to maint).
* We explain that revs come first before the pathspec among command
line arguments, but did not spell out that dashed options come
before other args, which has been corrected.
(merge c11f95010c tl/doc-cli-options-first later to maint).
* "git add -p" rewritten in C regressed hunk splitting in some cases,
which has been corrected.
(merge 7008ddc645 pw/add-p-hunk-split-fix later to maint).
* "git fetch --negotiate-only" is an internal command used by "git
push" to figure out which part of our history is missing from the
other side. It should never recurse into submodules even when
fetch.recursesubmodules configuration variable is set, nor it
should trigger "gc". The code has been tightened up to ensure it
only does common ancestry discovery and nothing else.
(merge de4eaae63a gc/fetch-negotiate-only-early-return later to maint).
* The code path that verifies signatures made with ssh were made to
work better on a system with CRLF line endings.
(merge caeef01ea7 fs/ssh-signing-crlf later to maint).
* "git sparse-checkout init" failed to write into $GIT_DIR/info
directory when the repository was created without one, which has
been corrected to auto-create it.
(merge 7f44842ac1 jt/sparse-checkout-leading-dir-fix later to maint).
* Cloning from a repository that does not yet have any branches or
tags but has other refs resulted in a "remote transport reported
error", which has been corrected.
(merge dccea605b6 jt/clone-not-quite-empty later to maint).
* Mark in various places in the code that the sparse index and the
split index features are mutually incompatible.
(merge 451b66c533 js/sparse-vs-split-index later to maint).
* Update the logic to compute alignment requirement for our mem-pool.
(merge e38bcc66d8 jc/mem-pool-alignment later to maint).
* Pick a better random number generator and use it when we prepare
temporary filenames.
(merge 47efda967c bc/csprng-mktemps later to maint).
* Update the contributor-facing documents on proposed log messages.
(merge cdba0295b0 jc/doc-log-messages later to maint).
* When "git fetch --prune" failed to prune the refs it wanted to
prune, the command issued error messages but exited with exit
status 0, which has been corrected.
(merge c9e04d905e tg/fetch-prune-exit-code-fix later to maint).
* Problems identified by Coverity in the reftable code have been
corrected.
(merge 01033de49f hn/reftable-coverity-fixes later to maint).
* A bug that made multi-pack bitmap and the object order out-of-sync,
making the .midx data corrupt, has been fixed.
(merge f8b60cf99b tb/midx-bitmap-corruption-fix later to maint).
* The build procedure has been taught to notice older version of zlib
and enable our replacement uncompress2() automatically.
(merge 07564773c2 ab/auto-detect-zlib-compress2 later to maint).
* Interaction between fetch.negotiationAlgorithm and
feature.experimental configuration variables has been corrected.
(merge 714edc620c en/fetch-negotiation-default-fix later to maint).
* "git diff --diff-filter=aR" is now parsed correctly.
(merge 75408ca949 js/diff-filter-negation-fix later to maint).
* When "git subtree" wants to create a merge, it used "git merge" and
let it be affected by end-user's "merge.ff" configuration, which
has been corrected.
(merge 9158a3564a tk/subtree-merge-not-ff-only later to maint).
* Unlike "git apply", "git patch-id" did not handle patches with
hunks that has only 1 line in either preimage or postimage, which
has been corrected.
(merge 757e75c81e jz/patch-id-hunk-header-parsing-fix later to maint).
* "receive-pack" checks if it will do any ref updates (various
conditions could reject a push) before received objects are taken
out of the temporary directory used for quarantine purposes, so
that a push that is known-to-fail will not leave crufts that a
future "gc" needs to clean up.
(merge 5407764069 cb/clear-quarantine-early-on-all-ref-update-errors later to maint).
* Because a deletion of ref would need to remove it from both the
loose ref store and the packed ref store, a delete-ref operation
that logically removes one ref may end up invoking ref-transaction
hook twice, which has been corrected.
(merge 2ed1b64ebd ps/avoid-unnecessary-hook-invocation-with-packed-refs later to maint).
* When there is no object to write .bitmap file for, "git
multi-pack-index" triggered an error, instead of just skipping,
which has been corrected.
(merge eb57277ba3 tb/midx-no-bitmap-for-no-objects later to maint).
* "git cmd -h" outside a repository should error out cleanly for many
commands, but instead it hit a BUG(), which has been corrected.
(merge 87ad07d735 js/short-help-outside-repo-fix later to maint).
* "working tree" and "per-worktree ref" were in glossary, but
"worktree" itself wasn't, which has been corrected.
(merge 2df5387ed0 jc/glossary-worktree later to maint).
* L10n support for a few error messages.
(merge 3d3c23b3a7 bs/forbid-i18n-of-protocol-token-in-fetch-pack later to maint).
* Test modernization.
(merge d4fe066e4b sy/t0001-use-path-is-helper later to maint).
* "git log --graph --graph" used to leak a graph structure, and there
was no way to countermand "--graph" that appear earlier on the
command line. A "--no-graph" option has been added and resource
leakage has been plugged.
* Error output given in response to an ambiguous object name has been
improved.
(merge 3a73c1dfaf ab/ambiguous-object-name later to maint).
* "git sparse-checkout" wants to work with per-worktree configuration,
but did not work well in a worktree attached to a bare repository.
(merge 3ce1138272 ds/sparse-checkout-requires-per-worktree-config later to maint).
* Setting core.untrackedCache to true failed to add the untracked
cache extension to the index.
* Workaround we have for versions of PCRE2 before their version 10.36
were in effect only for their versions newer than 10.36 by mistake,
which has been corrected.
(merge 97169fc361 rs/pcre-invalid-utf8-fix-fix later to maint).
* Document Taylor as a new member of Git PLC at SFC. Welcome.
(merge e8d56ca863 tb/coc-plc-update later to maint).
* "git checkout -b branch/with/multi/level/name && git stash" only
recorded the last level component of the branch name, which has
been corrected.
* "git fetch" can make two separate fetches, but ref updates coming
from them were in two separate ref transactions under "--atomic",
which has been corrected.
* Check the return value from parse_tree_indirect() to turn segfaults
into calls to die().
(merge 8d2eaf649a gc/parse-tree-indirect-errors later to maint).
* Newer version of GPGSM changed its output in a backward
incompatible way to break our code that parses its output. It also
added more processes our tests need to kill when cleaning up.
Adjustments have been made to accommodate these changes.
(merge b0b70d54c4 fs/gpgsm-update later to maint).
* The untracked cache newly computed weren't written back to the
on-disk index file when there is no other change to the index,
which has been corrected.
* "git config -h" did not describe the "--type" option correctly.
(merge 5445124fad mf/fix-type-in-config-h later to maint).
* The way generation number v2 in the commit-graph files are
(not) handled has been corrected.
(merge 6dbf4b8172 ds/commit-graph-gen-v2-fixes later to maint).
* The method to trigger malloc check used in our tests no longer work
with newer versions of glibc.
(merge baedc59543 ep/test-malloc-check-with-glibc-2.34 later to maint).
* When "git fetch --recurse-submodules" grabbed submodule commits
that would be needed to recursively check out newly fetched commits
in the superproject, it only paid attention to submodules that are
in the current checkout of the superproject. We now do so for all
submodules that have been run "git submodule init" on.
* "git rebase $base $non_branch_commit", when $base is an ancestor or
the $non_branch_commit, modified the current branch, which has been
corrected.
* When "shallow" information is updated, we forgot to update the
in-core equivalent, which has been corrected.
* When creating a loose object file, we didn't report the exact
filename of the file we failed to fsync, even though the
information was readily available, which has been corrected.
* "git am" can read from the standard input when no mailbox is given
on the command line, but the end-user gets no indication when it
happens, making Git appear stuck.
(merge 7b20af6a06 jc/mailsplit-warn-on-tty later to maint).
* "git mv" failed to refresh the cached stat information for the
entry it moved.
(merge b7f9130a06 vd/mv-refresh-stat later to maint).
* Fix for CVE-2022-24765 has been merged up from 2.35.2 and others.
* Other code cleanup, docfix, build fix, etc.
(merge cfc5cf428b jc/find-header later to maint).
(merge 40e7cfdd46 jh/p4-fix-use-of-process-error-exception later to maint).
(merge 727e6ea350 jh/p4-spawning-external-commands-cleanup later to maint).
(merge 0a6adc26e2 rs/grep-expr-cleanup later to maint).
(merge 4ed7dfa713 po/readme-mention-contributor-hints later to maint).
(merge 6046f7a91c en/plug-leaks-in-merge later to maint).
(merge 8c591dbfce bc/clarify-eol-attr later to maint).
(merge 518e15db74 rs/parse-options-lithelp-help later to maint).
(merge cbac0076ef gh/doc-typos later to maint).
(merge ce14de03db ab/no-errno-from-resolve-ref-unsafe later to maint).
(merge 2826ffad8c rc/negotiate-only-typofix later to maint).
(merge 0f03f04c5c en/sparse-checkout-leakfix later to maint).
(merge 74f3390dde sy/diff-usage-typofix later to maint).
(merge 45d0212a71 ll/doc-mktree-typofix later to maint).
(merge e9b272e4c1 js/no-more-legacy-stash later to maint).
(merge 6798b08e84 ab/do-not-hide-failures-in-git-dot-pm later to maint).
(merge 9325285df4 po/doc-check-ignore-markup-fix later to maint).
(merge cd26cd6c7c sy/modernize-t-lib-read-tree-m-3way later to maint).
(merge d17294a05e ab/hash-object-leakfix later to maint).
(merge b8403129d3 jd/t0015-modernize later to maint).
(merge 332acc248d ds/mailmap later to maint).
(merge 04bf052eef ab/grep-patterntype later to maint).
(merge 6ee36364eb ab/diff-free-more later to maint).
(merge 63a36017fe nj/read-tree-doc-reffix later to maint).
(merge eed36fce38 sm/no-git-in-upstream-of-pipe-in-tests later to maint).
(merge c614beb933 ep/t6423-modernize later to maint).
(merge 57be9c6dee ab/reflog-prep-fix later to maint).
(merge 5327d8982a js/in-place-reverse-in-sequencer later to maint).
(merge 2e2c0be51e dp/worktree-repair-in-usage later to maint).
(merge 6563706568 jc/coding-guidelines-decl-in-for-loop later to maint).
----------------------------------------------------------------
Changes since v2.35.2 are as follows:
Abhradeep Chakraborty (2):
amend remaining usage strings according to style guide
partial-clone: add a partial-clone test case
Adam Dinwoodie (2):
configure.ac: fix HAVE_SYNC_FILE_RANGE definition
t9902: split test to run on appropriate systems
Alex Henrie (3):
log: fix memory leak if --graph is passed multiple times
log: add a --no-graph option
switch: mention the --detach option when dying due to lack of a branch
Atharva Raykar (5):
submodule--helper: get remote names from any repository
submodule--helper: refactor get_submodule_displaypath()
submodule--helper: allow setting superprefix for init_submodule()
submodule--helper: run update using child process struct
submodule: move core cmd_update() logic to C
Bagas Sanjaya (1):
fetch-pack: parameterize message containing 'ready' keyword
COGONI Guillaume (3):
t/t3903-stash.sh: replace test [-d|-f] with test_path_is_*
tests: allow testing if a path is truly a file or a directory
tests: make the code more readable
Carlo Marcelo Arenas Belón (1):
git-compat-util: really support openssl as a source of entropy
Chen Bojun (1):
receive-pack: purge temporary data if no command is ready to run
David Cantrell (1):
completion: tab completion of filenames for 'git restore'
Derrick Stolee (45):
Documentation: add extensions.worktreeConfig details
worktree: create init_worktree_config()
config: add repo_config_set_worktree_gently()
sparse-checkout: set worktree-config correctly
worktree: copy sparse-checkout patterns and config on add
config: make git_configset_get_string_tmp() private
mailmap: change primary address for Derrick Stolee
dir: force untracked cache with core.untrackedCache
worktree: combine two translatable messages
worktree: extract copy_filtered_worktree_config()
worktree: extract copy_sparse_checkout()
worktree: extract checkout_worktree()
worktree: use 'worktree' over 'working tree'
worktree: use 'worktree' over 'working tree'
worktree: use 'worktree' over 'working tree'
worktree: use 'worktree' over 'working tree'
worktree: use 'worktree' over 'working tree'
worktree: use 'worktree' over 'working tree'
worktree: use 'worktree' over 'working tree'
test-read-graph: include extra post-parse info
t5318: extract helpers to lib-commit-graph.sh
commit-graph: fix ordering bug in generation numbers
commit-graph: start parsing generation v2 (again)
commit-graph: fix generation number v2 overflow values
commit-graph: declare bankruptcy on GDAT chunks
index-pack: document and test the --promisor option
list-objects-filter-options: create copy helper
revision: put object filter into struct rev_info
pack-objects: use rev.filter when possible
pack-bitmap: drop filter in prepare_bitmap_walk()
list-objects: consolidate traverse_commit_list[_filtered]
MyFirstObjectWalk: update recommended usage
bundle: parse filter capability
rev-list: move --filter parsing into revision.c
bundle: create filtered bundles
bundle: unbundle promisor packs
clone: fail gracefully when cloning filtered bundle
maintenance: fix synopsis in documentation
list-objects-filter: remove CL_ARG__FILTER
pack-objects: move revs out of get_object_list()
pack-objects: parse --filter directly into revs.filter
bundle: move capabilities to end of 'verify'
bundle: output hash information in 'verify'
t7700: check post-condition in kept-pack test
test-lib-functions: remove test_subcommand_inexact
Des Preston (1):
worktree: include repair cmd in usage
Elia Pinto (8):
test-lib.sh: Use GLIBC_TUNABLES instead of MALLOC_CHECK_ on glibc >= 2.34
t6423-merge-rename-directories.sh: use the $(...) construct
attr.c: delete duplicate include
builtin/gc.c: delete duplicate include
builtin/sparse-checkout.c: delete duplicate include
builtin/stash.c: delete duplicate include
t/helper/test-run-command.c: delete duplicate include
attr.h: remove duplicate struct definition
Elijah Newren (32):
t1011: add testcase demonstrating accidental loss of user modifications
unpack-trees: fix accidental loss of user changes
repo_read_index: clear SKIP_WORKTREE bit from files present in worktree
Update documentation related to sparsity and the skip-worktree bit
Accelerate clear_skip_worktree_from_present_files() by caching
merge-ort: avoid assuming all renames detected
merge-ort: fix memory leak in merge_ort_internal()
merge: fix memory leaks in cmd_merge()
sparse-checkout: fix a couple minor memory leaks
repo-settings: fix checking for fetch.negotiationAlgorithm=default
repo-settings: fix error handling for unknown values
repo-settings: rename the traditional default fetch.negotiationAlgorithm
show, log: provide a --remerge-diff capability
log: clean unneeded objects during `log --remerge-diff`
ll-merge: make callers responsible for showing warnings
merge-ort: capture and print ll-merge warnings in our preferred fashion
merge-ort: mark a few more conflict messages as omittable
merge-ort: format messages slightly different for use in headers
diff: add ability to insert additional headers for paths
show, log: include conflict/warning messages in --remerge-diff headers
merge-ort: mark conflict/warning messages from inner merges as omittable
diff-merges: avoid history simplifications when diffing merges
merge-ort: make informational messages from recursive merges clearer
sparse-checkout: correct reapply's handling of options
sparse-checkout: correctly set non-cone mode when expected
sparse-checkout: pay attention to prefix for {set, add}
sparse-checkout: error or warn when given individual files
sparse-checkout: reject arguments in cone-mode that look like patterns
merge-ort: fix small memory leak in detect_and_process_renames()
merge-ort: fix small memory leak in unique_path()
merge-ort: exclude messages from inner merges by default
repo_read_index: add config to expect files outside sparse patterns
Emily Shaffer (14):
hook: add 'run' subcommand
gc: use hook library for pre-auto-gc hook
am: convert {pre,post}-applypatch to use hook.h
rebase: convert pre-rebase to use hook.h
am: convert applypatch-msg to use hook.h
merge: convert post-merge to use hook.h
hooks: convert non-worktree 'post-checkout' hook to hook library
hooks: convert worktree 'post-checkout' hook to hook library
send-email: use 'git hook run' for 'sendemail-validate'
git-p4: use 'git hook' to run hooks
commit: convert {pre-commit,prepare-commit-msg} hook to hook.h
read-cache: convert post-index-change to use hook.h
receive-pack: convert push-to-checkout hook to hook.h
run-command: remove old run_hook_{le,ve}() hook API
Fabian Stelzer (2):
gpg-interface: trim CR from ssh-keygen
gpg-interface/gpgsm: fix for v2.3
Fangyi Zhou (1):
submodule-helper: fix usage string
Glen Choo (39):
fetch: use goto cleanup in cmd_fetch()
fetch: skip tasks related to fetching objects
fetch --negotiate-only: do not update submodules
branch: move --set-upstream-to behavior to dwim_and_setup_tracking()
branch: make create_branch() always create a branch
branch: add a dry_run parameter to create_branch()
builtin/branch: consolidate action-picking logic in cmd_branch()
branch: add --recurse-submodules option for branch creation
branch.c: use 'goto cleanup' in setup_tracking() to fix memory leaks
stash: strip "refs/heads/" with skip_prefix
checkout, clone: die if tree cannot be parsed
submodule--helper: remove update-module-mode
submodule--helper: reorganize code for sh to C conversion
submodule--helper run-update-procedure: remove --suboid
submodule--helper run-update-procedure: learn --remote
submodule--helper update-clone: learn --init
submodule--helper: remove ensure-core-worktree
submodule update: add tests for --filter
submodule--helper update-clone: check for --filter and --init
t5526: introduce test helper to assert on fetches
t5526: stop asserting on stderr literally
t5526: create superproject commits with test helper
submodule: make static functions read submodules from commits
submodule: inline submodule_commits() into caller
submodule: store new submodule commits oid_array in a struct
submodule: extract get_fetch_task()
submodule: move logic into fetch_task_create()
submodule update: use die_message()
submodule--helper: teach update_data more options
submodule--helper: reduce logic in run_update_procedure()
submodule--helper: remove forward declaration
fetch: fetch unpopulated, changed submodules
submodule: fix latent check_has_commit() bug
branch: support more tracking modes when recursing
branch: give submodule updating advice before exit
branch --set-upstream-to: be consistent when advising
branch: remove negative exit code
branch: rework comments for future developers
branch.c: simplify advice-and-die sequence
Greg Hurrell (2):
Documentation/config/pgp.txt: replace stray <TAB> character with <SPC>
Documentation/config/pgp.txt: add missing apostrophe
Han-Wen Nienhuys (27):
reftable: fix OOB stack write in print functions
reftable: fix resource leak in block.c error path
reftable: fix resource leak blocksource.c
reftable: check reftable_stack_auto_compact() return value
reftable: ignore remove() return value in stack_test.c
reftable: fix resource warning
reftable: all xxx_free() functions accept NULL arguments
reftable: order unittests by complexity
reftable: drop stray printf in readwrite_test
reftable: handle null refnames in reftable_ref_record_equal
reftable: make reftable-record.h function signatures const correct
reftable: implement record equality generically
reftable: remove outdated file reftable.c
reftable: make reftable_record a tagged union
reftable: add print functions to the record types
t1405: explictly delete reflogs for reftable
t1405: mark test that checks existence as REFFILES
t5312: prepare for reftable
t1410: use test-tool ref-store to inspect reflogs
t1410: mark bufsize boundary test as REFFILES
Documentation: object_id_len goes up to 31
reftable: reject 0 object_id_len
reftable: add a test that verifies that writing empty keys fails
reftable: avoid writing empty keys at the block layer
reftable: ensure that obj_id_len is >= 2 on writing
reftable: add test for length of disambiguating prefix
reftable: rename writer_stats to reftable_writer_stats
Jacob Keller (1):
name-rev: use generation numbers if available
Jason Yundt (2):
comment: fix typo
gitweb: remove invalid http-equiv="content-type"
Jayati Shrivastava (1):
sequencer: use reverse_commit_list() helper
Jaydeep Das (1):
t/t0015-hash.sh: remove unnecessary '\' at line end
Jaydeep P Das (1):
userdiff: add builtin diff driver for kotlin language.
Jean-Noël Avila (5):
i18n: factorize more 'incompatible options' messages
i18n: factorize "invalid value" messages
i18n: remove from i18n strings that do not hold translatable parts
i18n: fix some misformated placeholders in command synopsis
i18n: fix some badly formatted i18n strings
Jeff Hostetler (30):
fsmonitor: enhance existing comments, clarify trivial response handling
fsmonitor-ipc: create client routines for git-fsmonitor--daemon
fsmonitor: config settings are repository-specific
fsmonitor: use IPC to query the builtin FSMonitor daemon
fsmonitor: document builtin fsmonitor
fsmonitor--daemon: add a built-in fsmonitor daemon
fsmonitor--daemon: implement 'stop' and 'status' commands
compat/fsmonitor/fsm-listen-win32: stub in backend for Windows
compat/fsmonitor/fsm-listen-darwin: stub in backend for Darwin
fsmonitor--daemon: implement 'run' command
fsmonitor--daemon: implement 'start' command
fsmonitor--daemon: add pathname classification
fsmonitor--daemon: define token-ids
fsmonitor--daemon: create token-based changed path cache
compat/fsmonitor/fsm-listen-win32: implement FSMonitor backend on Windows
compat/fsmonitor/fsm-listen-darwin: add MacOS header files for FSEvent
compat/fsmonitor/fsm-listen-darwin: implement FSEvent listener on MacOS
fsmonitor--daemon: implement handle_client callback
help: include fsmonitor--daemon feature flag in version info
t/helper/fsmonitor-client: create IPC client to talk to FSMonitor Daemon
t7527: create test for fsmonitor--daemon
t/perf: avoid copying builtin fsmonitor files into test repo
t/helper/test-chmtime: skip directories on Windows
t/perf/p7519: fix coding style
t/perf/p7519: speed up test on Windows
t/perf/p7519: add fsmonitor--daemon test cases
fsmonitor--daemon: periodically truncate list of modified files
fsmonitor--daemon: use a cookie file to sync with file system
fsmonitor: force update index after large responses
t7527: test status with untracked-cache and fsmonitor--daemon
Jerry Zhang (3):
git-rev-list: add --exclude-first-parent-only flag
patch-id: fix antipatterns in tests
patch-id: fix scan_hunk_header on diffs with 1 line of before/after
Jessica Clarke (1):
mem-pool: don't assume uintmax_t is aligned enough for all types
Joel Holdsworth (4):
git-p4: don't select shell mode using the type of the command argument
git-p4: pass command arguments as lists instead of using shell
git-p4: don't print shell commands as python lists
git-p4: fix instantiation of CalledProcessError
Johannes Schindelin (14):
sparse-index: sparse index is disallowed when split index is active
t1091: disable split index
split-index: it really is incompatible with the sparse index
git-sh-setup: remove remnant bits referring to `git-legacy-stash`
add: remove support for `git-legacy-stash`
stash: remove documentation for `stash.useBuiltin`
stash: stop warning about the obsolete `stash.useBuiltin` config setting
docs(diff): lose incorrect claim about `diff-files --diff-filter=A`
diff.c: move the diff filter bits definitions up a bit
diff-filter: be more careful when looking for negative bits
scalar: accept -C and -c options before the subcommand
checkout/fetch/pull/pack-objects: allow `-h` outside a repository
t0012: verify that built-ins handle `-h` even without gitdir
cocci: allow padding with `strbuf_addf()`
John Cai (15):
receive-pack.c: consolidate find header logic
name-rev: deprecate --stdin in favor of --annotate-stdin
name-rev.c: use strbuf_getline instead of limited size buffer
builtin/reflog.c: use parse-options api for expire, delete subcommands
name-rev: replace --stdin with --annotate-stdin in synopsis
cat-file: rename cmdmode to transform_mode
cat-file: introduce batch_mode enum to replace print_contents
cat-file: add remove_timestamp helper
cat-file: add --batch-command mode
stash: add tests to ensure reflog --rewrite --updatref behavior
reflog: libify delete reflog function and helpers
stash: call reflog_delete() in reflog.c
cat-file: skip expanding default format
rebase: use test_commit helper in setup
rebase: set REF_HEAD_DETACH in checkout_up_to_date()
Jonathan Tan (6):
config: make git_config_include() static
config: include file if remote URL matches a glob
sparse-checkout: create leading directory
clone: support unusual remote ref configurations
ls-files: support --recurse-submodules --stage
shallow: reset commit grafts when shallow is reset
Josh Steadmon (3):
test-lib: unset trace2 parent envvars
clone, submodule: pass partial clone filters to submodules
ls-tree: `-l` should not imply recursive listing
Junio C Hamano (32):
compat/qsort_s.c: avoid using potentially unaligned access
fetch: help translators by reusing the same message template
Start post 2.35 cycle
SubmittingPatches: write problem statement in the log in the present tense
CodingGuidelines: hint why we value clearly written log messages
SubmittingPatches: explain why we care about log messages
Name the next one 2.36 to prepare for 2.35.1
The first batch
The second batch for 2.36
glossary: describe "worktree"
The third batch
The fourth batch
The fifth batch
The sixth batch
The seventh batch
The eighth batch
rerere-train: two fixes to the use of "git show -s"
am/apply: warn if we end up reading patches from terminal
The ninth batch
The tenth batch
The eleventh batch
The twelfth batch
The thirteenth batch
The 14th batch
reset: show --no-refresh in the short-help
The 15th batch
The 16th batch
The 17th batch
CodingGuidelines: give deadline for "for (int i = 0; ..."
Git 2.36-rc0
Git 2.36-rc1
Git 2.36-rc2
Justin Donnelly (4):
git-prompt: rename `upstream` to `upstream_type`
git-prompt: make upstream state indicator location consistent
git-prompt: make long upstream state indicator consistent
git-prompt: put upstream comments together
Lessley Dennington (3):
completion: address sparse-checkout issues
completion: improve sparse-checkout cone mode directory completion
completion: handle unusual characters for sparse-checkout
Liginity Lee (1):
fix typo in git-mktree.txt
Marc Strapetz (4):
test-lib: introduce API for verifying file mtime
t7508: fix bogus mtime verification
t7508: add tests capturing racy timestamp handling
update-index: refresh should rewrite index in case of racy timestamps
Martin Ågren (1):
git-ls-tree.txt: fix the name of "%(objectsize:padded)"
Matheus Felipe (1):
config: correct "--type" option in "git config -h" output
Matt Cooper (1):
index-pack: clarify the breached limit
Michael J Gruber (2):
test-lib: declare local variables as local
tests: demonstrate "show --word-diff --color-moved" regression
Neeraj Singh (10):
wrapper: make inclusion of Windows csprng header tightly scoped
core.fsyncmethod: add writeout-only mode
core.fsync: introduce granular fsync control infrastructure
core.fsync: add configuration parsing
core.fsync: new option to harden the index
core.fsync: documentation and user-friendly aggregate options
core.fsync: fix incorrect expression for default configuration
trace2: add stats for fsync operations
core.fsyncmethod: correctly camel-case warning message
object-file: pass filename to fsync_or_die
Nihal Jere (1):
Documentation: git-read-tree: separate links using commas
Patrick Steinhardt (24):
refs: extract packed_refs_delete_refs() to allow control of transaction
refs: allow passing flags when beginning transactions
refs: allow skipping the reference-transaction hook
refs: demonstrate excessive execution of the reference-transaction hook
refs: do not execute reference-transaction hook on packing refs
refs: skip hooks when deleting uncovered packed refs
fetch-pack: use commit-graph when computing cutoff
fetch: skip computing output width when not printing anything
fetch: increase test coverage of fetches
fetch: backfill tags before setting upstream
fetch: control lifecycle of FETCH_HEAD in a single place
fetch: report errors when backfilling tags fails
refs: add interface to iterate over queued transactional updates
fetch: make `--atomic` flag cover backfilling of tags
fetch: make `--atomic` flag cover pruning of refs
upload-pack: look up "want" lines via commit-graph
fetch: avoid lookup of commits when not appending to FETCH_HEAD
refs: add ability for backends to special-case reading of symbolic refs
remote: read symbolic refs via `refs_read_symbolic_ref()`
refs/files-backend: optimize reading of symbolic refs
t5503: simplify setup of test which exercises failure of backfill
repack: refactor to avoid double-negation of update-server-info
repack: add config to skip updating server info
core.fsync: new option to harden references
Philip Oakley (2):
README.md: add CodingGuidelines and a link for Translators
doc: check-ignore: code-quote an exclamation mark
Philippe Blain (1):
pull --rebase: honor rebase.autostash when fast-forwarding
Phillip Wood (29):
t3701: clean up hunk splitting tests
builtin add -p: fix hunk splitting
rebase: factor out checkout for up to date branch
t5403: refactor rebase post-checkout hook tests
rebase: pass correct arguments to post-checkout hook
rebase: do not remove untracked files on checkout
rebase --apply: don't run post-checkout hook if there is an error
reset_head(): remove action parameter
reset_head(): factor out ref updates
reset_head(): make default_reflog_action optional
create_autostash(): remove unneeded parameter
rebase: cleanup reset_head() calls
reset_head(): take struct rebase_head_opts
rebase --apply: fix reflog
rebase --apply: set ORIG_HEAD correctly
rebase -m: don't fork git checkout
xdiff: fix a memory leak
xdiff: handle allocation failure in patience diff
xdiff: refactor a function
xdiff: handle allocation failure when merging
terminal: always reset terminal when reading without echo
terminal: pop signal handler when terminal is restored
terminal: set VMIN and VTIME in non-canonical mode
add -p: disable stdin buffering when interactive.singlekey is set
terminal: use flags for save_term()
terminal: don't assume stdin is /dev/tty
terminal: work around macos poll() bug
terminal: restore settings on SIGTSTP
worktree: add -z option for list subcommand
René Scharfe (10):
grep: use grep_or_expr() in compile_pattern_or()
grep: use grep_not_expr() in compile_pattern_not()
apply: use strsets to track symlinks
stable-qsort: avoid using potentially unaligned access
bisect--helper: report actual bisect_state() argument on error
bisect--helper: release strbuf and strvec on run error
bisect: document run behavior with exit codes 126 and 127
bisect--helper: double-check run command on exit code 126 and 127
parse-options: document bracketing of argh
grep: fix triggering PCRE2_NO_START_OPTIMIZE workaround
Robert Coup (8):
fetch: fix negotiate-only error message
fetch-negotiator: add specific noop initializer
fetch-pack: add refetch
builtin/fetch-pack: add --refetch option
fetch: add --refetch option
t5615-partial-clone: add test for fetch --refetch
fetch: after refetch, encourage auto gc repacking
docs: mention --refetch fetch option
SZEDER Gábor (1):
reflog: fix 'show' subcommand's argv
Shaoxuan Yuan (4):
builtin/diff.c: fix "git-diff" usage string typo
t/lib-read-tree-m-3way: modernize style
t/lib-read-tree-m-3way: indent with tabs
t0001: replace "test [-d|-f]" with test_path_is_* functions
Shubham Mishra (3):
t0003: avoid pipes with Git on LHS
t0001-t0028: avoid pipes with Git on LHS
t0030-t0050: avoid pipes with Git on LHS
Tao Klerks (6):
t7519: avoid file to index mtime race for untracked cache
t7519: populate untracked cache before test
untracked-cache: write index when populating empty untracked cache
t/helper/test-chmtime: update mingw to support chmtime on directories
t7063: mtime-mangling instead of delays in untracked cache testing
tracking branches: add advice to ambiguous refspec error
Taylor Blau (15):
grep: extract grep_binexp() from grep_or_expr()
grep: use grep_and_expr() in compile_pattern_and()
t5326: demonstrate bitmap corruption after permutation
midx.c: make changing the preferred pack safe
pack-revindex.c: instrument loading on-disk reverse index
t5326: drop unnecessary setup
t5326: extract `test_rev_exists`
t5326: move tests to t/lib-bitmap.sh
t/lib-bitmap.sh: parameterize tests over reverse index source
midx: read `RIDX` chunk when present
pack-bitmap.c: gracefully fallback after opening pack/MIDX
midx: prevent writing a .bitmap without any objects
CODE_OF_CONDUCT.md: update PLC members list
builtin/remote.c: parse options in 'rename'
builtin/remote.c: show progress when renaming remote references
Teng Long (6):
git-cli.txt: clarify "options first and then args"
ls-tree: rename "retval" to "recurse" in "show_tree()"
ls-tree: simplify nesting if/else logic in "show_tree()"
ls-tree: fix "--name-only" and "--long" combined use bug
ls-tree: slightly refactor `show_tree()`
ls-tree: support --object-only option for "git-ls-tree"
Thomas Gummerer (1):
fetch --prune: exit with error if pruning fails
Thomas Koutcher (1):
subtree: force merge commit
Todd Zullinger (3):
t/lib-gpg: reload gpg components after updating trustlist
t/lib-gpg: kill all gpg components, not just gpg-agent
doc: replace "--" with {litdd} in credential-cache/fsmonitor
Victoria Dye (30):
reset: fix validation in sparse index test
reset: reorder wildcard pathspec conditions
clean: integrate with sparse index
checkout-index: expand sparse checkout compatibility tests
checkout-index: add --ignore-skip-worktree-bits option
checkout-index: integrate with sparse index
update-index: add tests for sparse-checkout compatibility
update-index: integrate with sparse index
update-index: reduce scope of index expansion in do_reupdate
sparse-index: prevent repo root from becoming sparse
status: fix nested sparse directory diff in sparse index
read-tree: explicitly disallow prefixes with a leading '/'
read-tree: expand sparse checkout test coverage
read-tree: integrate with sparse index
read-tree: narrow scope of index expansion for '--prefix'
read-tree: make two-way merge sparse-aware
read-tree: make three-way merge sparse-aware
reset: revise index refresh advice
reset: introduce --[no-]refresh option to --mixed
reset: replace '--quiet' with '--no-refresh' in performance advice
reset: suppress '--no-refresh' advice if logging is silenced
stash: make internal resets quiet and refresh index
t1092: add sparse directory before cone in test repo
unpack-trees: increment cache_bottom for sparse directories
Revert "unpack-trees: improve performance of next_cache_entry"
reset: do not make '--quiet' disable index refresh
reset: remove 'reset.quiet' config option
reset: remove 'reset.refresh' config option
mv: refresh stat info for moved entry
contrib/scalar: fix 'all' target in Makefile
brian m. carlson (6):
t0027: add tests for eol without text in .gitattributes
docs: correct documentation about eol attribute
wrapper: add a helper to generate numbers from a CSPRNG
wrapper: use a CSPRNG to generate random file names
doc: clarify interaction between 'eol' and text=auto
block-sha1: remove use of obsolete x86 assembly
Ævar Arnfjörð Bjarmason (186):
cat-file tests: test bad usage
cat-file tests: test messaging on bad objects/paths
parse-options API: add a usage_msg_optf()
cat-file docs: fix SYNOPSIS and "-h" output
cat-file: move "usage" variable to cmd_cat_file()
cat-file: make --batch-all-objects a CMDMODE
cat-file: fix remaining usage bugs
cat-file: correct and improve usage information
object-name.c: don't have GET_OID_ONLY_TO_DIE imply *_QUIETLY
cat-file: use GET_OID_ONLY_TO_DIE in --(textconv|filters)
hook API: add a run_hooks() wrapper
hook API: add a run_hooks_l() wrapper
git hook run: add an --ignore-missing flag
cat-file: don't whitespace-pad "(...)" in SYNOPSIS and usage output
cat-file: s/_/-/ in typo'd usage_msg_optf() message
compat: auto-detect if zlib has uncompress2()
sequencer: don't use die_errno() on refs_resolve_ref_unsafe() failure
refs API: remove "failure_errno" from refs_resolve_ref_unsafe()
object-name tests: add tests for ambiguous object blind spots
object-name: explicitly handle OBJ_BAD in show_ambiguous_object()
object-name: explicitly handle bad tags in show_ambiguous_object()
object-name: make ambiguous object output translatable
object-name: show date for ambiguous tag objects
object-name: iterate ambiguous objects before showing header
object-name: re-use "struct strbuf" in show_ambiguous_object()
perl Git.pm: don't ignore signalled failure in _cmd_close()
completion tests: re-source git-completion.bash in a subshell
completion: add a GIT_COMPLETION_SHOW_ALL_COMMANDS
leak tests: fix a memory leak in "test-progress" helper
progress.c test helper: add missing braces
progress.c tests: make start/stop commands on stdin
progress.c tests: test some invalid usage
progress.h: format and be consistent with progress.c naming
progress.c: use dereferenced "progress" variable, not "(*p_progress)"
progress.c: refactor stop_progress{,_msg}() to use helpers
progress API: unify stop_progress{,_msg}(), fix trace2 bug
pack-bitmap-write.c: don't return without stop_progress()
t0051: use "skip_all" under !MINGW in single-test file
hash-object: fix a trivial leak in --path
ls-remote & transport API: release "struct transport_ls_refs_options"
grep.h: remove unused "regex_t regexp" from grep_opt
log tests: check if grep_config() is called by "log"-like cmds
grep tests: create a helper function for "BRE" or "ERE"
grep tests: add missing "grep.patternType" config tests
built-ins: trust the "prefix" from run_builtin()
grep.c: don't pass along NULL callback value
grep API: call grep_config() after grep_init()
grep.h: make "grep_opt.pattern_type_option" use its enum
grep.c: do "if (bool && memchr())" not "if (memchr() && bool)"
grep: simplify config parsing and option parsing
cache.h: remove always unused show_date_human() declaration
date API: create a date.h, split from cache.h
date API: provide and use a DATE_MODE_INIT
date API: add basic API docs
date API: add and use a date_mode_release()
diff.[ch]: have diff_free() call clear_pathspec(opts.pathspec)
diff.[ch]: have diff_free() free options->parseopts
hook tests: test for exact "pre-push" hook input
hook tests: use a modern style for "pre-push" tests
git-compat-util.h: clarify GCC v.s. C99-specific in comment
C99: remove hardcoded-out !HAVE_VARIADIC_MACROS code
help doc: add missing "]" to "[-a|--all]"
help.c: use puts() instead of printf{,_ln}() for consistency
help tests: test "git" and "git help [-a|-g] spacing
help.c: split up list_all_cmds_help() function
help: note the option name on option incompatibility
help: correct usage & behavior of "git help --all"
help: error if [-a|-g|-c] and [-i|-m|-w] are combined
help: add --no-[external-commands|aliases] for use with --all
help: don't print "\n" before single-section output
imap-send.c: use designated initializers for "struct imap_server_conf"
trace2: use designated initializers for "struct tr2_tgt"
trace2: use designated initializers for "struct tr2_dst"
object-file: use designated initializers for "struct git_hash_algo"
archive-*.c: use designated initializers for "struct archiver"
userdiff.c: use designated initializers for "struct userdiff_driver"
convert.c: use designated initializers for "struct stream_filter*"
refspec.c: use designated initializers for "struct refspec_item"
fast-import.c: use designated initializers for "partial" struct assignments
object-file.c: split up declaration of unrelated variables
object-file API: return "void", not "int" from hash_object_file()
object-file API: add a format_object_header() function
object-file API: have write_object_file() take "enum object_type"
object API: correct "buf" v.s. "map" mismatch in *.c and *.h
object API docs: move check_object_signature() docs to cache.h
object API users + docs: check <0, not !0 with check_object_signature()
object-file API: split up and simplify check_object_signature()
object API: rename hash_object_file_literally() to write_*()
object-file API: have hash_object_file() take "enum object_type"
object-file.c: add a literal version of write_object_file_prepare()
object-file API: pass an enum to read_object_with_reference()
test-lib: add GIT_SAN_OPTIONS, inherit [AL]SAN_OPTIONS
test-lib: correct and assert TEST_DIRECTORY overriding
test-lib: make $GIT_BUILD_DIR an absolute path
test-lib: add "fast_unwind_on_malloc=0" to LSAN_OPTIONS
scalar Makefile: use "The default target of..." pattern
Makefiles: add "shared.mak", move ".DELETE_ON_ERROR" to it
Makefile: disable GNU make built-in wildcard rules
Makefile: define $(LIB_H) in terms of $(FIND_SOURCE_FILES)
Makefile: move ".SUFFIXES" rule to shared.mak
Makefile: move $(comma), $(empty) and $(space) to shared.mak
Makefile: add "$(QUIET)" boilerplate to shared.mak
Makefiles: add and use wildcard "mkdir -p" template
log tests: fix "abort tests early" regression in ff37a60c369
index-pack: fix memory leaks
merge-base: free() allocated "struct commit **" list
diff.c: free "buf" in diff_words_flush()
urlmatch.c: add and use a *_release() function
remote-curl.c: free memory in cmd_main()
bundle: call strvec_clear() on allocated strvec
transport: stop needlessly copying bundle header references
submodule--helper: fix trivial leak in module_add()
commit-graph: fix memory leak in misused string_list API
commit-graph: stop fill_oids_from_packs() progress on error and free()
lockfile API users: simplify and don't leak "path"
range-diff: plug memory leak in common invocation
range-diff: plug memory leak in read_patches()
repository.c: free the "path cache" in repo_clear()
submodule tests: test for init and update failure output
submodule--helper: don't use bitfield indirection for parse_options()
gettext API users: don't explicitly cast ngettext()'s "n"
string-list API: change "nr" and "alloc" to "size_t"
merge: don't run post-hook logic on --no-verify
hooks: fix an obscure TOCTOU "did we just run a hook?" race
tests: change some 'test $(git) = "x"' to test_cmp
tests: use "test_stdout_line_count", not "test $(git [...] | wc -l)"
read-tree tests: check "diff-files" exit code on failure
diff tests: don't ignore "git diff" exit code
diff tests: don't ignore "git diff" exit code in "read" loop
apply tests: use "test_must_fail" instead of ad-hoc pattern
merge tests: use "test_must_fail" instead of ad-hoc pattern
rev-parse tests: don't ignore "git reflog" exit code
notes tests: don't ignore "git" exit code
diff tests: don't ignore "git rev-list" exit code
rev-list tests: don't hide abort() in "test_expect_failure"
gettext tests: don't ignore "test-tool regex" exit code
apply tests: don't ignore "git ls-files" exit code, drop sub-shell
checkout tests: don't ignore "git <cmd>" exit code
rev-list simplify tests: don't ignore "git" exit code
list-objects: handle NULL function pointers
reflog: don't be noisy on empty reflogs
builtin/submodule--helper.c: rename option struct to "opt"
test-lib-functions: add and use a "test_hook" wrapper
hook tests: turn exit code assertions into a loop
http tests: don't rely on "hook/post-update.sample"
tests: assume the hooks are disabled by default
bugreport tests: tighten up "git bugreport -s hooks" test
fetch+push tests: use "test_hook" and "test_when_finished" pattern
gc + p4 tests: use "test_hook", remove sub-shells
tests: change "cat && chmod +x" to use "test_hook"
tests: change "mkdir -p && write_script" to use "test_hook"
tests: use "test_hook" for misc "mkdir -p" and "chmod" cases
diff.c: fix a double-free regression in a18d66cefb
refs: use designated initializers for "struct ref_storage_be"
refs: use designated initializers for "struct ref_iterator_vtable"
misc *.c: use designated initializers for struct assignments
packed-backend: remove stub BUG(...) functions
refs debug: add a wrapper for "read_symbolic_ref"
tests: extend "test_hook" for "rm" and "chmod -x", convert "$HOOK"
proc-receive hook tests: use "test_hook" instead of "write_script"
http tests: use "test_hook" for "smart" and "dumb" http tests
reflog.c: indent argument lists
reflog: refactor cmd_reflog() to "if" branches
reflog tests: add missing "git reflog exists" tests
reflog: move "usage" variables and use macros
git reflog [expire|delete]: make -h output consistent with SYNOPSIS
reflog exists: use parse_options() API
Makefile: use ' ', not non-existing $(wspfx_SQ)
ls-tree tests: add tests for --name-status
ls-tree: remove commented-out code
ls-tree: add missing braces to "else" arms
ls-tree: use "enum object_type", not {blob,tree,commit}_type
ls-tree: use "size_t", not "int" for "struct strbuf"'s "len"
ls-tree: introduce struct "show_tree_data"
ls-tree: introduce "--format" option
ls-tree: detect and error on --name-only --name-status
ls-tree: split up "fast path" callbacks
hooks: fix "invoked hook" regression in a8cc5943338
reflog: convert to parse_options() API
reflog [show]: display sensible -h output
test-lib: have --immediate emit valid TAP on failure
pack-objects: lazily set up "struct rev_info", don't leak
reftable: make assignments portable to AIX xlc v12.01
Documentation/Makefile: fix "make info" regression in dad9cd7d518
Documentation: add --batch-command to cat-file synopsis
ls-tree doc: document interaction with submodules
^ permalink raw reply [relevance 3%]
* [ANNOUNCE] Git v2.36.0-rc1
@ 2022-04-08 23:30 3% Junio C Hamano
0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2022-04-08 23:30 UTC (permalink / raw)
To: git; +Cc: git-packagers
A release candidate Git v2.36.0-rc1 is now available for testing at
the usual places. It is comprised of 673 non-merge commits since
v2.35.0, contributed by 85 people, 25 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.36.0-rc1' tag and the 'master' branch that the tag points at:
url = https://git.kernel.org/pub/scm/git/git
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.35.0 are as follows.
Welcome to the Git development community!
Abhradeep Chakraborty, BRESSAT Jonathan, Chen Bojun,
COGONI Guillaume, David Cantrell, Des Preston, Hongyi Zhao,
Jason Yundt, Jayati Shrivastava, Jaydeep Das, Jaydeep P Das,
Jose Lopes, Justin Donnelly, Kraymer, Liginity Lee, Matheus
Felipe, Maximilian Reichel, Michael McClimon, Nihal Jere,
Pedro Martelletto, Robert Coup, Sean Allred, Shaoxuan Yuan,
Shubham Mishra, and Waleed Khan.
Returning contributors who helped this release are as follows.
Thanks for your continued support.
Adam Dinwoodie, Ævar Arnfjörð Bjarmason, Alex Henrie,
Atharva Raykar, Bagas Sanjaya, Beat Bolli, brian m. carlson,
Carlo Marcelo Arenas Belón, Christian Couder, Daniel Hahler,
Derrick Stolee, Elia Pinto, Elijah Newren, Emily Shaffer,
Eric Sunshine, Fabian Stelzer, Fangyi Zhou, Glen Choo, Greg
Hurrell, Han-Wen Nienhuys, Jacob Keller, Jean-Noël Avila, Jeff
Hostetler, Jeff King, Jerry Zhang, Jessica Clarke, Jiang Xin,
Joel Holdsworth, Johannes Altmanninger, Johannes Schindelin,
Johannes Sixt, John Cai, Jonathan Nieder, Jonathan Tan, Josh
Steadmon, Junio C Hamano, Kevin Willford, Lessley Dennington,
Marc Strapetz, Martin Ågren, Matt Cooper, Michael J Gruber,
Neeraj Singh, Patrick Steinhardt, Philip Oakley, Philippe Blain,
Phillip Wood, Ramkumar Ramachandra, Randall S. Becker, René
Scharfe, Shourya Shukla, SZEDER Gábor, Tao Klerks, Taylor Blau,
Teng Long, Thomas Gummerer, Thomas Koutcher, Tilman Vogel,
Todd Zullinger, and Victoria Dye.
[*] We are counting not just the authorship contribution but issue
reporting, mentoring, helping and reviewing that are recorded in
the commit trailers.
----------------------------------------------------------------
Git 2.36 Release Notes (draft)
==============================
Updates since Git 2.35
----------------------
Backward compatibility warts
* "git name-rev --stdin" has been deprecated and issues a warning
when used; use "git name-rev --annotate-stdin" instead.
* "git clone --filter=... --recurse-submodules" only makes the
top-level a partial clone, while submodules are fully cloned. This
behaviour is changed to pass the same filter down to the submodules.
Note to those who build from the source
* Since Git 2.31, our source assumed that the compiler you use to
build Git supports variadic macros, with an easy-to-use escape
hatch to allow compilation without variadic macros with an request
to report that you had to use the escape hatch to the list.
Because we haven't heard from anybody who actually needed to use
the escape hatch, it has been removed, making support of variadic
macros a hard requirement.
UI, Workflows & Features
* Assorted updates to "git cat-file", especially "-h".
* The command line completion (in contrib/) learns to complete
arguments to give to "git sparse-checkout" command.
* "git log --remerge-diff" shows the difference from mechanical merge
result and the result that is actually recorded in a merge commit.
* "git log" and friends learned an option --exclude-first-parent-only
to propagate UNINTERESTING bit down only along the first-parent
chain, just like --first-parent option shows commits that lack the
UNINTERESTING bit only along the first-parent chain.
* The command line completion script (in contrib/) learned to
complete all Git subcommands, including the ones that are normally
hidden, when GIT_COMPLETION_SHOW_ALL_COMMANDS is used.
* "git branch" learned the "--recurse-submodules" option.
* A not-so-common mistake is to write a script to feed "git bisect
run" without making it executable, in which case all tests will
exit with 126 or 127 error codes, even on revisions that are marked
as good. Try to recognize this situation and stop iteration early.
* When "index-pack" dies due to incoming data exceeding the maximum
allowed input size, include the value of the limit in the error
message.
* The error message given by "git switch HEAD~4" has been clarified
to suggest the "--detach" option that is required.
* In sparse-checkouts, files mis-marked as missing from the working tree
could lead to later problems. Such files were hard to discover, and
harder to correct. Automatically detecting and correcting the marking
of such files has been added to avoid these problems.
* "git cat-file" learns "--batch-command" mode, which is a more
flexible interface than the existing "--batch" or "--batch-check"
modes, to allow different kinds of inquiries made.
* The level of verbose output from the ort backend during inner merge
has been aligned to that of the recursive backend.
* "git remote rename A B", depending on the number of remote-tracking
refs involved, takes long time renaming them. The command has been
taught to show progress bar while making the user wait.
* Bundle file format gets extended to allow a partial bundle,
filtered by similar criteria you would give when making a
partial/lazy clone.
* A new built-in userdiff driver for kotlin has been added.
* "git repack" learned a new configuration to disable triggering of
age-old "update-server-info" command, which is rarely useful these
days.
* "git stash" does not allow subcommands it internally runs as its
implementation detail, except for "git reset", to emit messages;
now "git reset" part has also been squelched.
* "git ls-tree" learns "--oid-only" option, similar to "--name-only",
and more generalized "--format" option.
* "git fetch --refetch" learned to fetch everything without telling
the other side what we already have, which is useful when you
cannot trust what you have in the local object store.
* "git branch" gives hint when branch tracking cannot be established
because fetch refspecs from multiple remote repositories overlap.
* "git worktree list --porcelain" did not c-quote pathnames and lock
reasons with unsafe bytes correctly, which is worked around by
introducing NUL terminated output format with "-z".
Performance, Internal Implementation, Development Support etc.
* "git apply" (ab)used the util pointer of the string-list to keep
track of how each symbolic link needs to be handled, which has been
simplified by using strset.
* Fix a hand-rolled alloca() imitation that may have violated
alignment requirement of data being sorted in compatibility
implementation of qsort_s() and stable qsort().
* Use the parse-options API in "git reflog" command.
* The conditional inclusion mechanism of configuration files using
"[includeIf <condition>]" learns to base its decision on the
URL of the remote repository the repository interacts with.
(merge 399b198489 jt/conditional-config-on-remote-url later to maint).
* "git name-rev --stdin" does not behave like usual "--stdin" at
all. Start the process of renaming it to "--annotate-stdin".
(merge a2585719b3 jc/name-rev-stdin later to maint).
* "git update-index", "git checkout-index", and "git clean" are
taught to work better with the sparse checkout feature.
* Use an internal call to reset_head() helper function instead of
spawning "git checkout" in "rebase", and update code paths that are
involved in the change.
* Messages "ort" merge backend prepares while dealing with conflicted
paths were unnecessarily confusing since it did not differentiate
inner merges and outer merges.
* Small modernization of the rerere-train script (in contrib/).
* Use designated initializers we started using in mid 2017 in more
parts of the codebase that are relatively quiescent.
* Improve failure case behaviour of xdiff library when memory
allocation fails.
* General clean-up in reftable implementation, including
clarification of the API documentation, tightening the code to
honor documented length limit, etc.
* Remove the escape hatch we added when we introduced the weather
balloon to use variadic macros unconditionally, to make it official
that we now have a hard dependency on the feature.
* Makefile refactoring with a bit of suffixes rule stripping to
optimize the runtime overhead.
* "git stash drop" is reimplemented as an internal call to
reflog_delete() function, instead of invoking "git reflog delete"
via run_command() API.
* Count string_list items in size_t, not "unsigned int".
* The single-key interactive operation used by "git add -p" has been
made more robust.
* Remove unneeded <meta http-equiv=content-type...> from gitweb
output.
* "git name-rev" learned to use the generation numbers when setting
the lower bound of searching commits used to explain the revision,
when available, instead of committer time.
* Replace core.fsyncObjectFiles with two new configuration variables,
core.fsync and core.fsyncMethod.
* Updates to refs traditionally weren't fsync'ed, but we can
configure using core.fsync variable to do so.
* "git reflog" command now uses parse-options API to parse its
command line options.
Fixes since v2.35
-----------------
* "rebase" and "stash" in secondary worktrees are broken in
Git 2.35.0, which has been corrected.
* "git pull --rebase" ignored the rebase.autostash configuration
variable when the remote history is a descendant of our history,
which has been corrected.
(merge 3013d98d7a pb/pull-rebase-autostash-fix later to maint).
* "git update-index --refresh" has been taught to deal better with
racy timestamps (just like "git status" already does).
(merge 2ede073fd2 ms/update-index-racy later to maint).
* Avoid tests that are run under GIT_TRACE2 set from failing
unnecessarily.
(merge 944d808e42 js/test-unset-trace2-parents later to maint).
* The merge-ort misbehaved when merge.renameLimit configuration is
set too low and failed to find all renames.
(merge 9ae39fef7f en/merge-ort-restart-optim-fix later to maint).
* We explain that revs come first before the pathspec among command
line arguments, but did not spell out that dashed options come
before other args, which has been corrected.
(merge c11f95010c tl/doc-cli-options-first later to maint).
* "git add -p" rewritten in C regressed hunk splitting in some cases,
which has been corrected.
(merge 7008ddc645 pw/add-p-hunk-split-fix later to maint).
* "git fetch --negotiate-only" is an internal command used by "git
push" to figure out which part of our history is missing from the
other side. It should never recurse into submodules even when
fetch.recursesubmodules configuration variable is set, nor it
should trigger "gc". The code has been tightened up to ensure it
only does common ancestry discovery and nothing else.
(merge de4eaae63a gc/fetch-negotiate-only-early-return later to maint).
* The code path that verifies signatures made with ssh were made to
work better on a system with CRLF line endings.
(merge caeef01ea7 fs/ssh-signing-crlf later to maint).
* "git sparse-checkout init" failed to write into $GIT_DIR/info
directory when the repository was created without one, which has
been corrected to auto-create it.
(merge 7f44842ac1 jt/sparse-checkout-leading-dir-fix later to maint).
* Cloning from a repository that does not yet have any branches or
tags but has other refs resulted in a "remote transport reported
error", which has been corrected.
(merge dccea605b6 jt/clone-not-quite-empty later to maint).
* Mark in various places in the code that the sparse index and the
split index features are mutually incompatible.
(merge 451b66c533 js/sparse-vs-split-index later to maint).
* Update the logic to compute alignment requirement for our mem-pool.
(merge e38bcc66d8 jc/mem-pool-alignment later to maint).
* Pick a better random number generator and use it when we prepare
temporary filenames.
(merge 47efda967c bc/csprng-mktemps later to maint).
* Update the contributor-facing documents on proposed log messages.
(merge cdba0295b0 jc/doc-log-messages later to maint).
* When "git fetch --prune" failed to prune the refs it wanted to
prune, the command issued error messages but exited with exit
status 0, which has been corrected.
(merge c9e04d905e tg/fetch-prune-exit-code-fix later to maint).
* Problems identified by Coverity in the reftable code have been
corrected.
(merge 01033de49f hn/reftable-coverity-fixes later to maint).
* A bug that made multi-pack bitmap and the object order out-of-sync,
making the .midx data corrupt, has been fixed.
(merge f8b60cf99b tb/midx-bitmap-corruption-fix later to maint).
* The build procedure has been taught to notice older version of zlib
and enable our replacement uncompress2() automatically.
(merge 07564773c2 ab/auto-detect-zlib-compress2 later to maint).
* Interaction between fetch.negotiationAlgorithm and
feature.experimental configuration variables has been corrected.
(merge 714edc620c en/fetch-negotiation-default-fix later to maint).
* "git diff --diff-filter=aR" is now parsed correctly.
(merge 75408ca949 js/diff-filter-negation-fix later to maint).
* When "git subtree" wants to create a merge, it used "git merge" and
let it be affected by end-user's "merge.ff" configuration, which
has been corrected.
(merge 9158a3564a tk/subtree-merge-not-ff-only later to maint).
* Unlike "git apply", "git patch-id" did not handle patches with
hunks that has only 1 line in either preimage or postimage, which
has been corrected.
(merge 757e75c81e jz/patch-id-hunk-header-parsing-fix later to maint).
* "receive-pack" checks if it will do any ref updates (various
conditions could reject a push) before received objects are taken
out of the temporary directory used for quarantine purposes, so
that a push that is known-to-fail will not leave crufts that a
future "gc" needs to clean up.
(merge 5407764069 cb/clear-quarantine-early-on-all-ref-update-errors later to maint).
* Because a deletion of ref would need to remove it from both the
loose ref store and the packed ref store, a delete-ref operation
that logically removes one ref may end up invoking ref-transaction
hook twice, which has been corrected.
(merge 2ed1b64ebd ps/avoid-unnecessary-hook-invocation-with-packed-refs later to maint).
* When there is no object to write .bitmap file for, "git
multi-pack-index" triggered an error, instead of just skipping,
which has been corrected.
(merge eb57277ba3 tb/midx-no-bitmap-for-no-objects later to maint).
* "git cmd -h" outside a repository should error out cleanly for many
commands, but instead it hit a BUG(), which has been corrected.
(merge 87ad07d735 js/short-help-outside-repo-fix later to maint).
* "working tree" and "per-worktree ref" were in glossary, but
"worktree" itself wasn't, which has been corrected.
(merge 2df5387ed0 jc/glossary-worktree later to maint).
* L10n support for a few error messages.
(merge 3d3c23b3a7 bs/forbid-i18n-of-protocol-token-in-fetch-pack later to maint).
* Test modernization.
(merge d4fe066e4b sy/t0001-use-path-is-helper later to maint).
* "git log --graph --graph" used to leak a graph structure, and there
was no way to countermand "--graph" that appear earlier on the
command line. A "--no-graph" option has been added and resource
leakage has been plugged.
* Error output given in response to an ambiguous object name has been
improved.
(merge 3a73c1dfaf ab/ambiguous-object-name later to maint).
* "git sparse-checkout" wants to work with per-worktree configuration,
but did not work well in a worktree attached to a bare repository.
(merge 3ce1138272 ds/sparse-checkout-requires-per-worktree-config later to maint).
* Setting core.untrackedCache to true failed to add the untracked
cache extension to the index.
* Workaround we have for versions of PCRE2 before their version 10.36
were in effect only for their versions newer than 10.36 by mistake,
which has been corrected.
(merge 97169fc361 rs/pcre-invalid-utf8-fix-fix later to maint).
* Document Taylor as a new member of Git PLC at SFC. Welcome.
(merge e8d56ca863 tb/coc-plc-update later to maint).
* "git checkout -b branch/with/multi/level/name && git stash" only
recorded the last level component of the branch name, which has
been corrected.
* "git fetch" can make two separate fetches, but ref updates coming
from them were in two separate ref transactions under "--atomic",
which has been corrected.
* Check the return value from parse_tree_indirect() to turn segfaults
into calls to die().
(merge 8d2eaf649a gc/parse-tree-indirect-errors later to maint).
* Newer version of GPGSM changed its output in a backward
incompatible way to break our code that parses its output. It also
added more processes our tests need to kill when cleaning up.
Adjustments have been made to accommodate these changes.
(merge b0b70d54c4 fs/gpgsm-update later to maint).
* The untracked cache newly computed weren't written back to the
on-disk index file when there is no other change to the index,
which has been corrected.
* "git config -h" did not describe the "--type" option correctly.
(merge 5445124fad mf/fix-type-in-config-h later to maint).
* The way generation number v2 in the commit-graph files are
(not) handled has been corrected.
(merge 6dbf4b8172 ds/commit-graph-gen-v2-fixes later to maint).
* The method to trigger malloc check used in our tests no longer work
with newer versions of glibc.
(merge baedc59543 ep/test-malloc-check-with-glibc-2.34 later to maint).
* When "git fetch --recurse-submodules" grabbed submodule commits
that would be needed to recursively check out newly fetched commits
in the superproject, it only paid attention to submodules that are
in the current checkout of the superproject. We now do so for all
submodules that have been run "git submodule init" on.
* "git rebase $base $non_branch_commit", when $base is an ancestor or
the $non_branch_commit, modified the current branch, which has been
corrected.
* When "shallow" information is updated, we forgot to update the
in-core equivalent, which has been corrected.
* When creating a loose object file, we didn't report the exact
filename of the file we failed to fsync, even though the
information was readily available, which has been corrected.
* "git am" can read from the standard input when no mailbox is given
on the command line, but the end-user gets no indication when it
happens, making Git appear stuck.
(merge 7b20af6a06 jc/mailsplit-warn-on-tty later to maint).
* "git mv" failed to refresh the cached stat information for the
entry it moved.
(merge b7f9130a06 vd/mv-refresh-stat later to maint).
* Other code cleanup, docfix, build fix, etc.
(merge cfc5cf428b jc/find-header later to maint).
(merge 40e7cfdd46 jh/p4-fix-use-of-process-error-exception later to maint).
(merge 727e6ea350 jh/p4-spawning-external-commands-cleanup later to maint).
(merge 0a6adc26e2 rs/grep-expr-cleanup later to maint).
(merge 4ed7dfa713 po/readme-mention-contributor-hints later to maint).
(merge 6046f7a91c en/plug-leaks-in-merge later to maint).
(merge 8c591dbfce bc/clarify-eol-attr later to maint).
(merge 518e15db74 rs/parse-options-lithelp-help later to maint).
(merge cbac0076ef gh/doc-typos later to maint).
(merge ce14de03db ab/no-errno-from-resolve-ref-unsafe later to maint).
(merge 2826ffad8c rc/negotiate-only-typofix later to maint).
(merge 0f03f04c5c en/sparse-checkout-leakfix later to maint).
(merge 74f3390dde sy/diff-usage-typofix later to maint).
(merge 45d0212a71 ll/doc-mktree-typofix later to maint).
(merge e9b272e4c1 js/no-more-legacy-stash later to maint).
(merge 6798b08e84 ab/do-not-hide-failures-in-git-dot-pm later to maint).
(merge 9325285df4 po/doc-check-ignore-markup-fix later to maint).
(merge cd26cd6c7c sy/modernize-t-lib-read-tree-m-3way later to maint).
(merge d17294a05e ab/hash-object-leakfix later to maint).
(merge b8403129d3 jd/t0015-modernize later to maint).
(merge 332acc248d ds/mailmap later to maint).
(merge 04bf052eef ab/grep-patterntype later to maint).
(merge 6ee36364eb ab/diff-free-more later to maint).
(merge 63a36017fe nj/read-tree-doc-reffix later to maint).
(merge eed36fce38 sm/no-git-in-upstream-of-pipe-in-tests later to maint).
(merge c614beb933 ep/t6423-modernize later to maint).
(merge 57be9c6dee ab/reflog-prep-fix later to maint).
(merge 5327d8982a js/in-place-reverse-in-sequencer later to maint).
(merge 2e2c0be51e dp/worktree-repair-in-usage later to maint).
(merge 6563706568 jc/coding-guidelines-decl-in-for-loop later to maint).
----------------------------------------------------------------
Changes since v2.35.0 are as follows:
Abhradeep Chakraborty (2):
amend remaining usage strings according to style guide
partial-clone: add a partial-clone test case
Adam Dinwoodie (2):
configure.ac: fix HAVE_SYNC_FILE_RANGE definition
t9902: split test to run on appropriate systems
Alex Henrie (3):
log: fix memory leak if --graph is passed multiple times
log: add a --no-graph option
switch: mention the --detach option when dying due to lack of a branch
Atharva Raykar (5):
submodule--helper: get remote names from any repository
submodule--helper: refactor get_submodule_displaypath()
submodule--helper: allow setting superprefix for init_submodule()
submodule--helper: run update using child process struct
submodule: move core cmd_update() logic to C
Bagas Sanjaya (1):
fetch-pack: parameterize message containing 'ready' keyword
COGONI Guillaume (3):
t/t3903-stash.sh: replace test [-d|-f] with test_path_is_*
tests: allow testing if a path is truly a file or a directory
tests: make the code more readable
Carlo Marcelo Arenas Belón (1):
git-compat-util: really support openssl as a source of entropy
Chen Bojun (1):
receive-pack: purge temporary data if no command is ready to run
David Cantrell (1):
completion: tab completion of filenames for 'git restore'
Derrick Stolee (45):
Documentation: add extensions.worktreeConfig details
worktree: create init_worktree_config()
config: add repo_config_set_worktree_gently()
sparse-checkout: set worktree-config correctly
worktree: copy sparse-checkout patterns and config on add
config: make git_configset_get_string_tmp() private
mailmap: change primary address for Derrick Stolee
dir: force untracked cache with core.untrackedCache
worktree: combine two translatable messages
worktree: extract copy_filtered_worktree_config()
worktree: extract copy_sparse_checkout()
worktree: extract checkout_worktree()
worktree: use 'worktree' over 'working tree'
worktree: use 'worktree' over 'working tree'
worktree: use 'worktree' over 'working tree'
worktree: use 'worktree' over 'working tree'
worktree: use 'worktree' over 'working tree'
worktree: use 'worktree' over 'working tree'
worktree: use 'worktree' over 'working tree'
test-read-graph: include extra post-parse info
t5318: extract helpers to lib-commit-graph.sh
commit-graph: fix ordering bug in generation numbers
commit-graph: start parsing generation v2 (again)
commit-graph: fix generation number v2 overflow values
commit-graph: declare bankruptcy on GDAT chunks
index-pack: document and test the --promisor option
list-objects-filter-options: create copy helper
revision: put object filter into struct rev_info
pack-objects: use rev.filter when possible
pack-bitmap: drop filter in prepare_bitmap_walk()
list-objects: consolidate traverse_commit_list[_filtered]
MyFirstObjectWalk: update recommended usage
bundle: parse filter capability
rev-list: move --filter parsing into revision.c
bundle: create filtered bundles
bundle: unbundle promisor packs
clone: fail gracefully when cloning filtered bundle
maintenance: fix synopsis in documentation
list-objects-filter: remove CL_ARG__FILTER
pack-objects: move revs out of get_object_list()
pack-objects: parse --filter directly into revs.filter
bundle: move capabilities to end of 'verify'
bundle: output hash information in 'verify'
t7700: check post-condition in kept-pack test
test-lib-functions: remove test_subcommand_inexact
Des Preston (1):
worktree: include repair cmd in usage
Elia Pinto (8):
test-lib.sh: Use GLIBC_TUNABLES instead of MALLOC_CHECK_ on glibc >= 2.34
t6423-merge-rename-directories.sh: use the $(...) construct
attr.c: delete duplicate include
builtin/gc.c: delete duplicate include
builtin/sparse-checkout.c: delete duplicate include
builtin/stash.c: delete duplicate include
t/helper/test-run-command.c: delete duplicate include
attr.h: remove duplicate struct definition
Elijah Newren (33):
t1011: add testcase demonstrating accidental loss of user modifications
unpack-trees: fix accidental loss of user changes
repo_read_index: clear SKIP_WORKTREE bit from files present in worktree
Update documentation related to sparsity and the skip-worktree bit
Accelerate clear_skip_worktree_from_present_files() by caching
merge-ort: avoid assuming all renames detected
merge-ort: fix memory leak in merge_ort_internal()
merge: fix memory leaks in cmd_merge()
sequencer, stash: fix running from worktree subdir
sparse-checkout: fix a couple minor memory leaks
repo-settings: fix checking for fetch.negotiationAlgorithm=default
repo-settings: fix error handling for unknown values
repo-settings: rename the traditional default fetch.negotiationAlgorithm
show, log: provide a --remerge-diff capability
log: clean unneeded objects during `log --remerge-diff`
ll-merge: make callers responsible for showing warnings
merge-ort: capture and print ll-merge warnings in our preferred fashion
merge-ort: mark a few more conflict messages as omittable
merge-ort: format messages slightly different for use in headers
diff: add ability to insert additional headers for paths
show, log: include conflict/warning messages in --remerge-diff headers
merge-ort: mark conflict/warning messages from inner merges as omittable
diff-merges: avoid history simplifications when diffing merges
merge-ort: make informational messages from recursive merges clearer
sparse-checkout: correct reapply's handling of options
sparse-checkout: correctly set non-cone mode when expected
sparse-checkout: pay attention to prefix for {set, add}
sparse-checkout: error or warn when given individual files
sparse-checkout: reject arguments in cone-mode that look like patterns
merge-ort: fix small memory leak in detect_and_process_renames()
merge-ort: fix small memory leak in unique_path()
merge-ort: exclude messages from inner merges by default
repo_read_index: add config to expect files outside sparse patterns
Emily Shaffer (14):
hook: add 'run' subcommand
gc: use hook library for pre-auto-gc hook
am: convert {pre,post}-applypatch to use hook.h
rebase: convert pre-rebase to use hook.h
am: convert applypatch-msg to use hook.h
merge: convert post-merge to use hook.h
hooks: convert non-worktree 'post-checkout' hook to hook library
hooks: convert worktree 'post-checkout' hook to hook library
send-email: use 'git hook run' for 'sendemail-validate'
git-p4: use 'git hook' to run hooks
commit: convert {pre-commit,prepare-commit-msg} hook to hook.h
read-cache: convert post-index-change to use hook.h
receive-pack: convert push-to-checkout hook to hook.h
run-command: remove old run_hook_{le,ve}() hook API
Fabian Stelzer (2):
gpg-interface: trim CR from ssh-keygen
gpg-interface/gpgsm: fix for v2.3
Fangyi Zhou (1):
submodule-helper: fix usage string
Glen Choo (39):
fetch: use goto cleanup in cmd_fetch()
fetch: skip tasks related to fetching objects
fetch --negotiate-only: do not update submodules
branch: move --set-upstream-to behavior to dwim_and_setup_tracking()
branch: make create_branch() always create a branch
branch: add a dry_run parameter to create_branch()
builtin/branch: consolidate action-picking logic in cmd_branch()
branch: add --recurse-submodules option for branch creation
branch.c: use 'goto cleanup' in setup_tracking() to fix memory leaks
stash: strip "refs/heads/" with skip_prefix
checkout, clone: die if tree cannot be parsed
submodule--helper: remove update-module-mode
submodule--helper: reorganize code for sh to C conversion
submodule--helper run-update-procedure: remove --suboid
submodule--helper run-update-procedure: learn --remote
submodule--helper update-clone: learn --init
submodule--helper: remove ensure-core-worktree
submodule update: add tests for --filter
submodule--helper update-clone: check for --filter and --init
t5526: introduce test helper to assert on fetches
t5526: stop asserting on stderr literally
t5526: create superproject commits with test helper
submodule: make static functions read submodules from commits
submodule: inline submodule_commits() into caller
submodule: store new submodule commits oid_array in a struct
submodule: extract get_fetch_task()
submodule: move logic into fetch_task_create()
submodule update: use die_message()
submodule--helper: teach update_data more options
submodule--helper: reduce logic in run_update_procedure()
submodule--helper: remove forward declaration
fetch: fetch unpopulated, changed submodules
submodule: fix latent check_has_commit() bug
branch: support more tracking modes when recursing
branch: give submodule updating advice before exit
branch --set-upstream-to: be consistent when advising
branch: remove negative exit code
branch: rework comments for future developers
branch.c: simplify advice-and-die sequence
Greg Hurrell (2):
Documentation/config/pgp.txt: replace stray <TAB> character with <SPC>
Documentation/config/pgp.txt: add missing apostrophe
Han-Wen Nienhuys (27):
reftable: fix OOB stack write in print functions
reftable: fix resource leak in block.c error path
reftable: fix resource leak blocksource.c
reftable: check reftable_stack_auto_compact() return value
reftable: ignore remove() return value in stack_test.c
reftable: fix resource warning
reftable: all xxx_free() functions accept NULL arguments
reftable: order unittests by complexity
reftable: drop stray printf in readwrite_test
reftable: handle null refnames in reftable_ref_record_equal
reftable: make reftable-record.h function signatures const correct
reftable: implement record equality generically
reftable: remove outdated file reftable.c
reftable: make reftable_record a tagged union
reftable: add print functions to the record types
t1405: explictly delete reflogs for reftable
t1405: mark test that checks existence as REFFILES
t5312: prepare for reftable
t1410: use test-tool ref-store to inspect reflogs
t1410: mark bufsize boundary test as REFFILES
Documentation: object_id_len goes up to 31
reftable: reject 0 object_id_len
reftable: add a test that verifies that writing empty keys fails
reftable: avoid writing empty keys at the block layer
reftable: ensure that obj_id_len is >= 2 on writing
reftable: add test for length of disambiguating prefix
reftable: rename writer_stats to reftable_writer_stats
Jacob Keller (1):
name-rev: use generation numbers if available
Jason Yundt (2):
comment: fix typo
gitweb: remove invalid http-equiv="content-type"
Jayati Shrivastava (1):
sequencer: use reverse_commit_list() helper
Jaydeep Das (1):
t/t0015-hash.sh: remove unnecessary '\' at line end
Jaydeep P Das (1):
userdiff: add builtin diff driver for kotlin language.
Jean-Noël Avila (4):
i18n: factorize more 'incompatible options' messages
i18n: factorize "invalid value" messages
i18n: remove from i18n strings that do not hold translatable parts
i18n: fix some misformated placeholders in command synopsis
Jeff Hostetler (30):
fsmonitor: enhance existing comments, clarify trivial response handling
fsmonitor-ipc: create client routines for git-fsmonitor--daemon
fsmonitor: config settings are repository-specific
fsmonitor: use IPC to query the builtin FSMonitor daemon
fsmonitor: document builtin fsmonitor
fsmonitor--daemon: add a built-in fsmonitor daemon
fsmonitor--daemon: implement 'stop' and 'status' commands
compat/fsmonitor/fsm-listen-win32: stub in backend for Windows
compat/fsmonitor/fsm-listen-darwin: stub in backend for Darwin
fsmonitor--daemon: implement 'run' command
fsmonitor--daemon: implement 'start' command
fsmonitor--daemon: add pathname classification
fsmonitor--daemon: define token-ids
fsmonitor--daemon: create token-based changed path cache
compat/fsmonitor/fsm-listen-win32: implement FSMonitor backend on Windows
compat/fsmonitor/fsm-listen-darwin: add MacOS header files for FSEvent
compat/fsmonitor/fsm-listen-darwin: implement FSEvent listener on MacOS
fsmonitor--daemon: implement handle_client callback
help: include fsmonitor--daemon feature flag in version info
t/helper/fsmonitor-client: create IPC client to talk to FSMonitor Daemon
t7527: create test for fsmonitor--daemon
t/perf: avoid copying builtin fsmonitor files into test repo
t/helper/test-chmtime: skip directories on Windows
t/perf/p7519: fix coding style
t/perf/p7519: speed up test on Windows
t/perf/p7519: add fsmonitor--daemon test cases
fsmonitor--daemon: periodically truncate list of modified files
fsmonitor--daemon: use a cookie file to sync with file system
fsmonitor: force update index after large responses
t7527: test status with untracked-cache and fsmonitor--daemon
Jerry Zhang (3):
git-rev-list: add --exclude-first-parent-only flag
patch-id: fix antipatterns in tests
patch-id: fix scan_hunk_header on diffs with 1 line of before/after
Jessica Clarke (1):
mem-pool: don't assume uintmax_t is aligned enough for all types
Joel Holdsworth (4):
git-p4: don't select shell mode using the type of the command argument
git-p4: pass command arguments as lists instead of using shell
git-p4: don't print shell commands as python lists
git-p4: fix instantiation of CalledProcessError
Johannes Schindelin (14):
sparse-index: sparse index is disallowed when split index is active
t1091: disable split index
split-index: it really is incompatible with the sparse index
git-sh-setup: remove remnant bits referring to `git-legacy-stash`
add: remove support for `git-legacy-stash`
stash: remove documentation for `stash.useBuiltin`
stash: stop warning about the obsolete `stash.useBuiltin` config setting
docs(diff): lose incorrect claim about `diff-files --diff-filter=A`
diff.c: move the diff filter bits definitions up a bit
diff-filter: be more careful when looking for negative bits
scalar: accept -C and -c options before the subcommand
checkout/fetch/pull/pack-objects: allow `-h` outside a repository
t0012: verify that built-ins handle `-h` even without gitdir
cocci: allow padding with `strbuf_addf()`
John Cai (15):
receive-pack.c: consolidate find header logic
name-rev: deprecate --stdin in favor of --annotate-stdin
name-rev.c: use strbuf_getline instead of limited size buffer
builtin/reflog.c: use parse-options api for expire, delete subcommands
name-rev: replace --stdin with --annotate-stdin in synopsis
cat-file: rename cmdmode to transform_mode
cat-file: introduce batch_mode enum to replace print_contents
cat-file: add remove_timestamp helper
cat-file: add --batch-command mode
stash: add tests to ensure reflog --rewrite --updatref behavior
reflog: libify delete reflog function and helpers
stash: call reflog_delete() in reflog.c
cat-file: skip expanding default format
rebase: use test_commit helper in setup
rebase: set REF_HEAD_DETACH in checkout_up_to_date()
Jonathan Tan (6):
config: make git_config_include() static
config: include file if remote URL matches a glob
sparse-checkout: create leading directory
clone: support unusual remote ref configurations
ls-files: support --recurse-submodules --stage
shallow: reset commit grafts when shallow is reset
Josh Steadmon (3):
test-lib: unset trace2 parent envvars
clone, submodule: pass partial clone filters to submodules
ls-tree: `-l` should not imply recursive listing
Junio C Hamano (32):
compat/qsort_s.c: avoid using potentially unaligned access
fetch: help translators by reusing the same message template
Start post 2.35 cycle
SubmittingPatches: write problem statement in the log in the present tense
CodingGuidelines: hint why we value clearly written log messages
SubmittingPatches: explain why we care about log messages
Git 2.35.1
Name the next one 2.36 to prepare for 2.35.1
The first batch
The second batch for 2.36
glossary: describe "worktree"
The third batch
The fourth batch
The fifth batch
The sixth batch
The seventh batch
The eighth batch
rerere-train: two fixes to the use of "git show -s"
am/apply: warn if we end up reading patches from terminal
The ninth batch
The tenth batch
The eleventh batch
The twelfth batch
The thirteenth batch
The 14th batch
reset: show --no-refresh in the short-help
The 15th batch
The 16th batch
The 17th batch
CodingGuidelines: give deadline for "for (int i = 0; ..."
Git 2.36-rc0
Git 2.36-rc1
Justin Donnelly (4):
git-prompt: rename `upstream` to `upstream_type`
git-prompt: make upstream state indicator location consistent
git-prompt: make long upstream state indicator consistent
git-prompt: put upstream comments together
Lessley Dennington (3):
completion: address sparse-checkout issues
completion: improve sparse-checkout cone mode directory completion
completion: handle unusual characters for sparse-checkout
Liginity Lee (1):
fix typo in git-mktree.txt
Marc Strapetz (4):
test-lib: introduce API for verifying file mtime
t7508: fix bogus mtime verification
t7508: add tests capturing racy timestamp handling
update-index: refresh should rewrite index in case of racy timestamps
Martin Ågren (1):
git-ls-tree.txt: fix the name of "%(objectsize:padded)"
Matheus Felipe (1):
config: correct "--type" option in "git config -h" output
Matt Cooper (1):
index-pack: clarify the breached limit
Michael J Gruber (2):
test-lib: declare local variables as local
tests: demonstrate "show --word-diff --color-moved" regression
Neeraj Singh (10):
wrapper: make inclusion of Windows csprng header tightly scoped
core.fsyncmethod: add writeout-only mode
core.fsync: introduce granular fsync control infrastructure
core.fsync: add configuration parsing
core.fsync: new option to harden the index
core.fsync: documentation and user-friendly aggregate options
core.fsync: fix incorrect expression for default configuration
trace2: add stats for fsync operations
core.fsyncmethod: correctly camel-case warning message
object-file: pass filename to fsync_or_die
Nihal Jere (1):
Documentation: git-read-tree: separate links using commas
Patrick Steinhardt (24):
refs: extract packed_refs_delete_refs() to allow control of transaction
refs: allow passing flags when beginning transactions
refs: allow skipping the reference-transaction hook
refs: demonstrate excessive execution of the reference-transaction hook
refs: do not execute reference-transaction hook on packing refs
refs: skip hooks when deleting uncovered packed refs
fetch-pack: use commit-graph when computing cutoff
fetch: skip computing output width when not printing anything
fetch: increase test coverage of fetches
fetch: backfill tags before setting upstream
fetch: control lifecycle of FETCH_HEAD in a single place
fetch: report errors when backfilling tags fails
refs: add interface to iterate over queued transactional updates
fetch: make `--atomic` flag cover backfilling of tags
fetch: make `--atomic` flag cover pruning of refs
upload-pack: look up "want" lines via commit-graph
fetch: avoid lookup of commits when not appending to FETCH_HEAD
refs: add ability for backends to special-case reading of symbolic refs
remote: read symbolic refs via `refs_read_symbolic_ref()`
refs/files-backend: optimize reading of symbolic refs
t5503: simplify setup of test which exercises failure of backfill
repack: refactor to avoid double-negation of update-server-info
repack: add config to skip updating server info
core.fsync: new option to harden references
Philip Oakley (2):
README.md: add CodingGuidelines and a link for Translators
doc: check-ignore: code-quote an exclamation mark
Philippe Blain (1):
pull --rebase: honor rebase.autostash when fast-forwarding
Phillip Wood (29):
t3701: clean up hunk splitting tests
builtin add -p: fix hunk splitting
rebase: factor out checkout for up to date branch
t5403: refactor rebase post-checkout hook tests
rebase: pass correct arguments to post-checkout hook
rebase: do not remove untracked files on checkout
rebase --apply: don't run post-checkout hook if there is an error
reset_head(): remove action parameter
reset_head(): factor out ref updates
reset_head(): make default_reflog_action optional
create_autostash(): remove unneeded parameter
rebase: cleanup reset_head() calls
reset_head(): take struct rebase_head_opts
rebase --apply: fix reflog
rebase --apply: set ORIG_HEAD correctly
rebase -m: don't fork git checkout
xdiff: fix a memory leak
xdiff: handle allocation failure in patience diff
xdiff: refactor a function
xdiff: handle allocation failure when merging
terminal: always reset terminal when reading without echo
terminal: pop signal handler when terminal is restored
terminal: set VMIN and VTIME in non-canonical mode
add -p: disable stdin buffering when interactive.singlekey is set
terminal: use flags for save_term()
terminal: don't assume stdin is /dev/tty
terminal: work around macos poll() bug
terminal: restore settings on SIGTSTP
worktree: add -z option for list subcommand
René Scharfe (10):
grep: use grep_or_expr() in compile_pattern_or()
grep: use grep_not_expr() in compile_pattern_not()
apply: use strsets to track symlinks
stable-qsort: avoid using potentially unaligned access
bisect--helper: report actual bisect_state() argument on error
bisect--helper: release strbuf and strvec on run error
bisect: document run behavior with exit codes 126 and 127
bisect--helper: double-check run command on exit code 126 and 127
parse-options: document bracketing of argh
grep: fix triggering PCRE2_NO_START_OPTIMIZE workaround
Robert Coup (8):
fetch: fix negotiate-only error message
fetch-negotiator: add specific noop initializer
fetch-pack: add refetch
builtin/fetch-pack: add --refetch option
fetch: add --refetch option
t5615-partial-clone: add test for fetch --refetch
fetch: after refetch, encourage auto gc repacking
docs: mention --refetch fetch option
SZEDER Gábor (1):
reflog: fix 'show' subcommand's argv
Shaoxuan Yuan (4):
builtin/diff.c: fix "git-diff" usage string typo
t/lib-read-tree-m-3way: modernize style
t/lib-read-tree-m-3way: indent with tabs
t0001: replace "test [-d|-f]" with test_path_is_* functions
Shubham Mishra (3):
t0003: avoid pipes with Git on LHS
t0001-t0028: avoid pipes with Git on LHS
t0030-t0050: avoid pipes with Git on LHS
Tao Klerks (6):
t7519: avoid file to index mtime race for untracked cache
t7519: populate untracked cache before test
untracked-cache: write index when populating empty untracked cache
t/helper/test-chmtime: update mingw to support chmtime on directories
t7063: mtime-mangling instead of delays in untracked cache testing
tracking branches: add advice to ambiguous refspec error
Taylor Blau (15):
grep: extract grep_binexp() from grep_or_expr()
grep: use grep_and_expr() in compile_pattern_and()
t5326: demonstrate bitmap corruption after permutation
midx.c: make changing the preferred pack safe
pack-revindex.c: instrument loading on-disk reverse index
t5326: drop unnecessary setup
t5326: extract `test_rev_exists`
t5326: move tests to t/lib-bitmap.sh
t/lib-bitmap.sh: parameterize tests over reverse index source
midx: read `RIDX` chunk when present
pack-bitmap.c: gracefully fallback after opening pack/MIDX
midx: prevent writing a .bitmap without any objects
CODE_OF_CONDUCT.md: update PLC members list
builtin/remote.c: parse options in 'rename'
builtin/remote.c: show progress when renaming remote references
Teng Long (6):
git-cli.txt: clarify "options first and then args"
ls-tree: rename "retval" to "recurse" in "show_tree()"
ls-tree: simplify nesting if/else logic in "show_tree()"
ls-tree: fix "--name-only" and "--long" combined use bug
ls-tree: slightly refactor `show_tree()`
ls-tree: support --object-only option for "git-ls-tree"
Thomas Gummerer (1):
fetch --prune: exit with error if pruning fails
Thomas Koutcher (1):
subtree: force merge commit
Todd Zullinger (3):
t/lib-gpg: reload gpg components after updating trustlist
t/lib-gpg: kill all gpg components, not just gpg-agent
doc: replace "--" with {litdd} in credential-cache/fsmonitor
Victoria Dye (30):
reset: fix validation in sparse index test
reset: reorder wildcard pathspec conditions
clean: integrate with sparse index
checkout-index: expand sparse checkout compatibility tests
checkout-index: add --ignore-skip-worktree-bits option
checkout-index: integrate with sparse index
update-index: add tests for sparse-checkout compatibility
update-index: integrate with sparse index
update-index: reduce scope of index expansion in do_reupdate
sparse-index: prevent repo root from becoming sparse
status: fix nested sparse directory diff in sparse index
read-tree: explicitly disallow prefixes with a leading '/'
read-tree: expand sparse checkout test coverage
read-tree: integrate with sparse index
read-tree: narrow scope of index expansion for '--prefix'
read-tree: make two-way merge sparse-aware
read-tree: make three-way merge sparse-aware
reset: revise index refresh advice
reset: introduce --[no-]refresh option to --mixed
reset: replace '--quiet' with '--no-refresh' in performance advice
reset: suppress '--no-refresh' advice if logging is silenced
stash: make internal resets quiet and refresh index
t1092: add sparse directory before cone in test repo
unpack-trees: increment cache_bottom for sparse directories
Revert "unpack-trees: improve performance of next_cache_entry"
reset: do not make '--quiet' disable index refresh
reset: remove 'reset.quiet' config option
reset: remove 'reset.refresh' config option
mv: refresh stat info for moved entry
contrib/scalar: fix 'all' target in Makefile
brian m. carlson (6):
t0027: add tests for eol without text in .gitattributes
docs: correct documentation about eol attribute
wrapper: add a helper to generate numbers from a CSPRNG
wrapper: use a CSPRNG to generate random file names
doc: clarify interaction between 'eol' and text=auto
block-sha1: remove use of obsolete x86 assembly
Ævar Arnfjörð Bjarmason (186):
cat-file tests: test bad usage
cat-file tests: test messaging on bad objects/paths
parse-options API: add a usage_msg_optf()
cat-file docs: fix SYNOPSIS and "-h" output
cat-file: move "usage" variable to cmd_cat_file()
cat-file: make --batch-all-objects a CMDMODE
cat-file: fix remaining usage bugs
cat-file: correct and improve usage information
object-name.c: don't have GET_OID_ONLY_TO_DIE imply *_QUIETLY
cat-file: use GET_OID_ONLY_TO_DIE in --(textconv|filters)
hook API: add a run_hooks() wrapper
hook API: add a run_hooks_l() wrapper
git hook run: add an --ignore-missing flag
cat-file: don't whitespace-pad "(...)" in SYNOPSIS and usage output
cat-file: s/_/-/ in typo'd usage_msg_optf() message
compat: auto-detect if zlib has uncompress2()
sequencer: don't use die_errno() on refs_resolve_ref_unsafe() failure
refs API: remove "failure_errno" from refs_resolve_ref_unsafe()
object-name tests: add tests for ambiguous object blind spots
object-name: explicitly handle OBJ_BAD in show_ambiguous_object()
object-name: explicitly handle bad tags in show_ambiguous_object()
object-name: make ambiguous object output translatable
object-name: show date for ambiguous tag objects
object-name: iterate ambiguous objects before showing header
object-name: re-use "struct strbuf" in show_ambiguous_object()
perl Git.pm: don't ignore signalled failure in _cmd_close()
completion tests: re-source git-completion.bash in a subshell
completion: add a GIT_COMPLETION_SHOW_ALL_COMMANDS
leak tests: fix a memory leak in "test-progress" helper
progress.c test helper: add missing braces
progress.c tests: make start/stop commands on stdin
progress.c tests: test some invalid usage
progress.h: format and be consistent with progress.c naming
progress.c: use dereferenced "progress" variable, not "(*p_progress)"
progress.c: refactor stop_progress{,_msg}() to use helpers
progress API: unify stop_progress{,_msg}(), fix trace2 bug
pack-bitmap-write.c: don't return without stop_progress()
t0051: use "skip_all" under !MINGW in single-test file
hash-object: fix a trivial leak in --path
ls-remote & transport API: release "struct transport_ls_refs_options"
grep.h: remove unused "regex_t regexp" from grep_opt
log tests: check if grep_config() is called by "log"-like cmds
grep tests: create a helper function for "BRE" or "ERE"
grep tests: add missing "grep.patternType" config tests
built-ins: trust the "prefix" from run_builtin()
grep.c: don't pass along NULL callback value
grep API: call grep_config() after grep_init()
grep.h: make "grep_opt.pattern_type_option" use its enum
grep.c: do "if (bool && memchr())" not "if (memchr() && bool)"
grep: simplify config parsing and option parsing
cache.h: remove always unused show_date_human() declaration
date API: create a date.h, split from cache.h
date API: provide and use a DATE_MODE_INIT
date API: add basic API docs
date API: add and use a date_mode_release()
diff.[ch]: have diff_free() call clear_pathspec(opts.pathspec)
diff.[ch]: have diff_free() free options->parseopts
hook tests: test for exact "pre-push" hook input
hook tests: use a modern style for "pre-push" tests
git-compat-util.h: clarify GCC v.s. C99-specific in comment
C99: remove hardcoded-out !HAVE_VARIADIC_MACROS code
help doc: add missing "]" to "[-a|--all]"
help.c: use puts() instead of printf{,_ln}() for consistency
help tests: test "git" and "git help [-a|-g] spacing
help.c: split up list_all_cmds_help() function
help: note the option name on option incompatibility
help: correct usage & behavior of "git help --all"
help: error if [-a|-g|-c] and [-i|-m|-w] are combined
help: add --no-[external-commands|aliases] for use with --all
help: don't print "\n" before single-section output
imap-send.c: use designated initializers for "struct imap_server_conf"
trace2: use designated initializers for "struct tr2_tgt"
trace2: use designated initializers for "struct tr2_dst"
object-file: use designated initializers for "struct git_hash_algo"
archive-*.c: use designated initializers for "struct archiver"
userdiff.c: use designated initializers for "struct userdiff_driver"
convert.c: use designated initializers for "struct stream_filter*"
refspec.c: use designated initializers for "struct refspec_item"
fast-import.c: use designated initializers for "partial" struct assignments
object-file.c: split up declaration of unrelated variables
object-file API: return "void", not "int" from hash_object_file()
object-file API: add a format_object_header() function
object-file API: have write_object_file() take "enum object_type"
object API: correct "buf" v.s. "map" mismatch in *.c and *.h
object API docs: move check_object_signature() docs to cache.h
object API users + docs: check <0, not !0 with check_object_signature()
object-file API: split up and simplify check_object_signature()
object API: rename hash_object_file_literally() to write_*()
object-file API: have hash_object_file() take "enum object_type"
object-file.c: add a literal version of write_object_file_prepare()
object-file API: pass an enum to read_object_with_reference()
test-lib: add GIT_SAN_OPTIONS, inherit [AL]SAN_OPTIONS
test-lib: correct and assert TEST_DIRECTORY overriding
test-lib: make $GIT_BUILD_DIR an absolute path
test-lib: add "fast_unwind_on_malloc=0" to LSAN_OPTIONS
scalar Makefile: use "The default target of..." pattern
Makefiles: add "shared.mak", move ".DELETE_ON_ERROR" to it
Makefile: disable GNU make built-in wildcard rules
Makefile: define $(LIB_H) in terms of $(FIND_SOURCE_FILES)
Makefile: move ".SUFFIXES" rule to shared.mak
Makefile: move $(comma), $(empty) and $(space) to shared.mak
Makefile: add "$(QUIET)" boilerplate to shared.mak
Makefiles: add and use wildcard "mkdir -p" template
log tests: fix "abort tests early" regression in ff37a60c369
index-pack: fix memory leaks
merge-base: free() allocated "struct commit **" list
diff.c: free "buf" in diff_words_flush()
urlmatch.c: add and use a *_release() function
remote-curl.c: free memory in cmd_main()
bundle: call strvec_clear() on allocated strvec
transport: stop needlessly copying bundle header references
submodule--helper: fix trivial leak in module_add()
commit-graph: fix memory leak in misused string_list API
commit-graph: stop fill_oids_from_packs() progress on error and free()
lockfile API users: simplify and don't leak "path"
range-diff: plug memory leak in common invocation
range-diff: plug memory leak in read_patches()
repository.c: free the "path cache" in repo_clear()
submodule tests: test for init and update failure output
submodule--helper: don't use bitfield indirection for parse_options()
gettext API users: don't explicitly cast ngettext()'s "n"
string-list API: change "nr" and "alloc" to "size_t"
merge: don't run post-hook logic on --no-verify
hooks: fix an obscure TOCTOU "did we just run a hook?" race
tests: change some 'test $(git) = "x"' to test_cmp
tests: use "test_stdout_line_count", not "test $(git [...] | wc -l)"
read-tree tests: check "diff-files" exit code on failure
diff tests: don't ignore "git diff" exit code
diff tests: don't ignore "git diff" exit code in "read" loop
apply tests: use "test_must_fail" instead of ad-hoc pattern
merge tests: use "test_must_fail" instead of ad-hoc pattern
rev-parse tests: don't ignore "git reflog" exit code
notes tests: don't ignore "git" exit code
diff tests: don't ignore "git rev-list" exit code
rev-list tests: don't hide abort() in "test_expect_failure"
gettext tests: don't ignore "test-tool regex" exit code
apply tests: don't ignore "git ls-files" exit code, drop sub-shell
checkout tests: don't ignore "git <cmd>" exit code
rev-list simplify tests: don't ignore "git" exit code
list-objects: handle NULL function pointers
reflog: don't be noisy on empty reflogs
builtin/submodule--helper.c: rename option struct to "opt"
test-lib-functions: add and use a "test_hook" wrapper
hook tests: turn exit code assertions into a loop
http tests: don't rely on "hook/post-update.sample"
tests: assume the hooks are disabled by default
bugreport tests: tighten up "git bugreport -s hooks" test
fetch+push tests: use "test_hook" and "test_when_finished" pattern
gc + p4 tests: use "test_hook", remove sub-shells
tests: change "cat && chmod +x" to use "test_hook"
tests: change "mkdir -p && write_script" to use "test_hook"
tests: use "test_hook" for misc "mkdir -p" and "chmod" cases
diff.c: fix a double-free regression in a18d66cefb
refs: use designated initializers for "struct ref_storage_be"
refs: use designated initializers for "struct ref_iterator_vtable"
misc *.c: use designated initializers for struct assignments
packed-backend: remove stub BUG(...) functions
refs debug: add a wrapper for "read_symbolic_ref"
tests: extend "test_hook" for "rm" and "chmod -x", convert "$HOOK"
proc-receive hook tests: use "test_hook" instead of "write_script"
http tests: use "test_hook" for "smart" and "dumb" http tests
reflog.c: indent argument lists
reflog: refactor cmd_reflog() to "if" branches
reflog tests: add missing "git reflog exists" tests
reflog: move "usage" variables and use macros
git reflog [expire|delete]: make -h output consistent with SYNOPSIS
reflog exists: use parse_options() API
Makefile: use ' ', not non-existing $(wspfx_SQ)
ls-tree tests: add tests for --name-status
ls-tree: remove commented-out code
ls-tree: add missing braces to "else" arms
ls-tree: use "enum object_type", not {blob,tree,commit}_type
ls-tree: use "size_t", not "int" for "struct strbuf"'s "len"
ls-tree: introduce struct "show_tree_data"
ls-tree: introduce "--format" option
ls-tree: detect and error on --name-only --name-status
ls-tree: split up "fast path" callbacks
hooks: fix "invoked hook" regression in a8cc5943338
reflog: convert to parse_options() API
reflog [show]: display sensible -h output
test-lib: have --immediate emit valid TAP on failure
pack-objects: lazily set up "struct rev_info", don't leak
reftable: make assignments portable to AIX xlc v12.01
Documentation/Makefile: fix "make info" regression in dad9cd7d518
Documentation: add --batch-command to cat-file synopsis
ls-tree doc: document interaction with submodules
^ permalink raw reply [relevance 3%]
* Re: [PATCH 2/7] rebase --merge: fix reflog when continuing
2022-02-21 11:10 1% ` [PATCH 2/7] rebase --merge: fix reflog when continuing Phillip Wood via GitGitGadget
@ 2022-04-07 13:49 2% ` Christian Couder
2022-04-15 14:00 2% ` Phillip Wood
0 siblings, 1 reply; 200+ results
From: Christian Couder @ 2022-04-07 13:49 UTC (permalink / raw)
To: Phillip Wood via GitGitGadget; +Cc: git, Phillip Wood
On Tue, Feb 22, 2022 at 6:12 AM Phillip Wood via GitGitGadget
<gitgitgadget@gmail.com> wrote:
>
> From: Phillip Wood <phillip.wood@dunelm.org.uk>
>
> The reflog message for a conflict resolution committed by "rebase
> --continue" looks like
>
> rebase (continue): commit subject line
>
> Unfortunately the reflog message each subsequent pick look like
>
> rebase (continue) (pick): commit subject line
>
> Fix this by setting the reflog message for "rebase --continue" in
> sequencer_continue() so it does not affect subsequent commits. This
> introduces a memory leak similar to the one leaking GIT_REFLOG_ACTION
> in pick_commits(). Both of these will be fixed in a future series that
> stops the sequencer calling setenv().
Yeah, it looks like we will leak only a small string.
> Signed-off-by: Phillip Wood <phillip.wood@dunelm.org.uk>
> ---
> builtin/rebase.c | 2 -
> sequencer.c | 5 ++
> t/t3406-rebase-message.sh | 120 +++++++++++++++++++++++++-------------
The changes to the test script look a bit involved and aren't
explained in the commit message. I wonder if some of those changes
could have been made in a preparatory commit.
> 3 files changed, 86 insertions(+), 41 deletions(-)
^ permalink raw reply [relevance 2%]
* [ANNOUNCE] Git v2.36.0-rc0
@ 2022-04-04 20:43 3% Junio C Hamano
0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2022-04-04 20:43 UTC (permalink / raw)
To: git; +Cc: git-packagers
An early preview release Git v2.36.0-rc0 is now available for
testing at the usual places. It is comprised of 661 non-merge
commits since v2.35.0, contributed by 80 people, 25 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.36.0-rc0' tag and the 'master' branch that the tag points at:
url = https://git.kernel.org/pub/scm/git/git
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.35.0 are as follows.
Welcome to the Git development community!
Abhradeep Chakraborty, BRESSAT Jonathan, Chen Bojun,
COGONI Guillaume, David Cantrell, Des Preston, Hongyi Zhao,
Jason Yundt, Jayati Shrivastava, Jaydeep Das, Jaydeep P Das,
Jose Lopes, Justin Donnelly, Kraymer, Liginity Lee, Matheus
Felipe, Maximilian Reichel, Michael McClimon, Nihal Jere,
Pedro Martelletto, Robert Coup, Sean Allred, Shaoxuan Yuan,
Shubham Mishra, and Waleed Khan.
Returning contributors who helped this release are as follows.
Thanks for your continued support.
Ævar Arnfjörð Bjarmason, Alex Henrie, Atharva Raykar,
Bagas Sanjaya, Beat Bolli, brian m. carlson, Christian Couder,
Daniel Hahler, Derrick Stolee, Elia Pinto, Elijah Newren,
Emily Shaffer, Eric Sunshine, Fabian Stelzer, Glen Choo, Greg
Hurrell, Han-Wen Nienhuys, Jacob Keller, Jean-Noël Avila, Jeff
Hostetler, Jeff King, Jerry Zhang, Jessica Clarke, Jiang Xin,
Joel Holdsworth, Johannes Altmanninger, Johannes Schindelin,
Johannes Sixt, John Cai, Jonathan Nieder, Jonathan Tan, Josh
Steadmon, Junio C Hamano, Kevin Willford, Lessley Dennington,
Marc Strapetz, Matt Cooper, Michael J Gruber, Neeraj Singh,
Patrick Steinhardt, Philip Oakley, Philippe Blain, Phillip Wood,
Ramkumar Ramachandra, René Scharfe, Shourya Shukla, SZEDER
Gábor, Tao Klerks, Taylor Blau, Teng Long, Thomas Gummerer,
Thomas Koutcher, Tilman Vogel, Todd Zullinger, and Victoria Dye.
[*] We are counting not just the authorship contribution but issue
reporting, mentoring, helping and reviewing that are recorded in
the commit trailers.
----------------------------------------------------------------
Git 2.36 Release Notes (draft)
==============================
Updates since Git 2.35
----------------------
Backward compatibility warts
* "git name-rev --stdin" has been deprecated and issues a warning
when used; use "git name-rev --annotate-stdin" instead.
* "git clone --filter=... --recurse-submodules" only makes the
top-level a partial clone, while submodules are fully cloned. This
behaviour is changed to pass the same filter down to the submodules.
Note to those who build from the source
* Since Git 2.31, our source assumed that the compiler you use to
build Git supports variadic macros, with an easy-to-use escape
hatch to allow compilation without variadic macros with an request
to report that you had to use the escape hatch to the list.
Because we haven't heard from anybody who actually needed to use
the escape hatch, it has been removed, making support of variadic
macros a hard requirement.
UI, Workflows & Features
* Assorted updates to "git cat-file", especially "-h".
* The command line completion (in contrib/) learns to complete
arguments to give to "git sparse-checkout" command.
* "git log --remerge-diff" shows the difference from mechanical merge
result and the result that is actually recorded in a merge commit.
* "git log" and friends learned an option --exclude-first-parent-only
to propagate UNINTERESTING bit down only along the first-parent
chain, just like --first-parent option shows commits that lack the
UNINTERESTING bit only along the first-parent chain.
* The command line completion script (in contrib/) learned to
complete all Git subcommands, including the ones that are normally
hidden, when GIT_COMPLETION_SHOW_ALL_COMMANDS is used.
* "git branch" learned the "--recurse-submodules" option.
* A not-so-common mistake is to write a script to feed "git bisect
run" without making it executable, in which case all tests will
exit with 126 or 127 error codes, even on revisions that are marked
as good. Try to recognize this situation and stop iteration early.
* When "index-pack" dies due to incoming data exceeding the maximum
allowed input size, include the value of the limit in the error
message.
* The error message given by "git switch HEAD~4" has been clarified
to suggest the "--detach" option that is required.
* In sparse-checkouts, files mis-marked as missing from the working tree
could lead to later problems. Such files were hard to discover, and
harder to correct. Automatically detecting and correcting the marking
of such files has been added to avoid these problems.
* "git cat-file" learns "--batch-command" mode, which is a more
flexible interface than the existing "--batch" or "--batch-check"
modes, to allow different kinds of inquiries made.
* The level of verbose output from the ort backend during inner merge
has been aligned to that of the recursive backend.
* "git remote rename A B", depending on the number of remote-tracking
refs involved, takes long time renaming them. The command has been
taught to show progress bar while making the user wait.
* Bundle file format gets extended to allow a partial bundle,
filtered by similar criteria you would give when making a
partial/lazy clone.
* A new built-in userdiff driver for kotlin has been added.
* "git repack" learned a new configuration to disable triggering of
age-old "update-server-info" command, which is rarely useful these
days.
* "git stash" does not allow subcommands it internally runs as its
implementation detail, except for "git reset", to emit messages;
now "git reset" part has also been squelched.
* "git ls-tree" learns "--oid-only" option, similar to "--name-only",
and more generalized "--format" option.
* "git fetch --refetch" learned to fetch everything without telling
the other side what we already have, which is useful when you
cannot trust what you have in the local object store.
* "git branch" gives hint when branch tracking cannot be established
because fetch refspecs from multiple remote repositories overlap.
* "git worktree list --porcelain" did not c-quote pathnames and lock
reasons with unsafe bytes correctly, which is worked around by
introducing NUL terminated output format with "-z".
Performance, Internal Implementation, Development Support etc.
* "git apply" (ab)used the util pointer of the string-list to keep
track of how each symbolic link needs to be handled, which has been
simplified by using strset.
* Fix a hand-rolled alloca() imitation that may have violated
alignment requirement of data being sorted in compatibility
implementation of qsort_s() and stable qsort().
* Use the parse-options API in "git reflog" command.
* The conditional inclusion mechanism of configuration files using
"[includeIf <condition>]" learns to base its decision on the
URL of the remote repository the repository interacts with.
(merge 399b198489 jt/conditional-config-on-remote-url later to maint).
* "git name-rev --stdin" does not behave like usual "--stdin" at
all. Start the process of renaming it to "--annotate-stdin".
(merge a2585719b3 jc/name-rev-stdin later to maint).
* "git update-index", "git checkout-index", and "git clean" are
taught to work better with the sparse checkout feature.
* Use an internal call to reset_head() helper function instead of
spawning "git checkout" in "rebase", and update code paths that are
involved in the change.
* Messages "ort" merge backend prepares while dealing with conflicted
paths were unnecessarily confusing since it did not differentiate
inner merges and outer merges.
* Small modernization of the rerere-train script (in contrib/).
* Use designated initializers we started using in mid 2017 in more
parts of the codebase that are relatively quiescent.
* Improve failure case behaviour of xdiff library when memory
allocation fails.
* General clean-up in reftable implementation, including
clarification of the API documentation, tightening the code to
honor documented length limit, etc.
* Remove the escape hatch we added when we introduced the weather
balloon to use variadic macros unconditionally, to make it official
that we now have a hard dependency on the feature.
* Makefile refactoring with a bit of suffixes rule stripping to
optimize the runtime overhead.
* "git stash drop" is reimplemented as an internal call to
reflog_delete() function, instead of invoking "git reflog delete"
via run_command() API.
* Count string_list items in size_t, not "unsigned int".
* The single-key interactive operation used by "git add -p" has been
made more robust.
* Remove unneeded <meta http-equiv=content-type...> from gitweb
output.
* "git name-rev" learned to use the generation numbers when setting
the lower bound of searching commits used to explain the revision,
when available, instead of committer time.
* Replace core.fsyncObjectFiles with two new configuration variables,
core.fsync and core.fsyncMethod.
* Updates to refs traditionally weren't fsync'ed, but we can
configure using core.fsync variable to do so.
* "git reflog" command now uses parse-options API to parse its
command line options.
Fixes since v2.35
-----------------
* "rebase" and "stash" in secondary worktrees are broken in
Git 2.35.0, which has been corrected.
* "git pull --rebase" ignored the rebase.autostash configuration
variable when the remote history is a descendant of our history,
which has been corrected.
(merge 3013d98d7a pb/pull-rebase-autostash-fix later to maint).
* "git update-index --refresh" has been taught to deal better with
racy timestamps (just like "git status" already does).
(merge 2ede073fd2 ms/update-index-racy later to maint).
* Avoid tests that are run under GIT_TRACE2 set from failing
unnecessarily.
(merge 944d808e42 js/test-unset-trace2-parents later to maint).
* The merge-ort misbehaved when merge.renameLimit configuration is
set too low and failed to find all renames.
(merge 9ae39fef7f en/merge-ort-restart-optim-fix later to maint).
* We explain that revs come first before the pathspec among command
line arguments, but did not spell out that dashed options come
before other args, which has been corrected.
(merge c11f95010c tl/doc-cli-options-first later to maint).
* "git add -p" rewritten in C regressed hunk splitting in some cases,
which has been corrected.
(merge 7008ddc645 pw/add-p-hunk-split-fix later to maint).
* "git fetch --negotiate-only" is an internal command used by "git
push" to figure out which part of our history is missing from the
other side. It should never recurse into submodules even when
fetch.recursesubmodules configuration variable is set, nor it
should trigger "gc". The code has been tightened up to ensure it
only does common ancestry discovery and nothing else.
(merge de4eaae63a gc/fetch-negotiate-only-early-return later to maint).
* The code path that verifies signatures made with ssh were made to
work better on a system with CRLF line endings.
(merge caeef01ea7 fs/ssh-signing-crlf later to maint).
* "git sparse-checkout init" failed to write into $GIT_DIR/info
directory when the repository was created without one, which has
been corrected to auto-create it.
(merge 7f44842ac1 jt/sparse-checkout-leading-dir-fix later to maint).
* Cloning from a repository that does not yet have any branches or
tags but has other refs resulted in a "remote transport reported
error", which has been corrected.
(merge dccea605b6 jt/clone-not-quite-empty later to maint).
* Mark in various places in the code that the sparse index and the
split index features are mutually incompatible.
(merge 451b66c533 js/sparse-vs-split-index later to maint).
* Update the logic to compute alignment requirement for our mem-pool.
(merge e38bcc66d8 jc/mem-pool-alignment later to maint).
* Pick a better random number generator and use it when we prepare
temporary filenames.
(merge 47efda967c bc/csprng-mktemps later to maint).
* Update the contributor-facing documents on proposed log messages.
(merge cdba0295b0 jc/doc-log-messages later to maint).
* When "git fetch --prune" failed to prune the refs it wanted to
prune, the command issued error messages but exited with exit
status 0, which has been corrected.
(merge c9e04d905e tg/fetch-prune-exit-code-fix later to maint).
* Problems identified by Coverity in the reftable code have been
corrected.
(merge 01033de49f hn/reftable-coverity-fixes later to maint).
* A bug that made multi-pack bitmap and the object order out-of-sync,
making the .midx data corrupt, has been fixed.
(merge f8b60cf99b tb/midx-bitmap-corruption-fix later to maint).
* The build procedure has been taught to notice older version of zlib
and enable our replacement uncompress2() automatically.
(merge 07564773c2 ab/auto-detect-zlib-compress2 later to maint).
* Interaction between fetch.negotiationAlgorithm and
feature.experimental configuration variables has been corrected.
(merge 714edc620c en/fetch-negotiation-default-fix later to maint).
* "git diff --diff-filter=aR" is now parsed correctly.
(merge 75408ca949 js/diff-filter-negation-fix later to maint).
* When "git subtree" wants to create a merge, it used "git merge" and
let it be affected by end-user's "merge.ff" configuration, which
has been corrected.
(merge 9158a3564a tk/subtree-merge-not-ff-only later to maint).
* Unlike "git apply", "git patch-id" did not handle patches with
hunks that has only 1 line in either preimage or postimage, which
has been corrected.
(merge 757e75c81e jz/patch-id-hunk-header-parsing-fix later to maint).
* "receive-pack" checks if it will do any ref updates (various
conditions could reject a push) before received objects are taken
out of the temporary directory used for quarantine purposes, so
that a push that is known-to-fail will not leave crufts that a
future "gc" needs to clean up.
(merge 5407764069 cb/clear-quarantine-early-on-all-ref-update-errors later to maint).
* Because a deletion of ref would need to remove it from both the
loose ref store and the packed ref store, a delete-ref operation
that logically removes one ref may end up invoking ref-transaction
hook twice, which has been corrected.
(merge 2ed1b64ebd ps/avoid-unnecessary-hook-invocation-with-packed-refs later to maint).
* When there is no object to write .bitmap file for, "git
multi-pack-index" triggered an error, instead of just skipping,
which has been corrected.
(merge eb57277ba3 tb/midx-no-bitmap-for-no-objects later to maint).
* "git cmd -h" outside a repository should error out cleanly for many
commands, but instead it hit a BUG(), which has been corrected.
(merge 87ad07d735 js/short-help-outside-repo-fix later to maint).
* "working tree" and "per-worktree ref" were in glossary, but
"worktree" itself wasn't, which has been corrected.
(merge 2df5387ed0 jc/glossary-worktree later to maint).
* L10n support for a few error messages.
(merge 3d3c23b3a7 bs/forbid-i18n-of-protocol-token-in-fetch-pack later to maint).
* Test modernization.
(merge d4fe066e4b sy/t0001-use-path-is-helper later to maint).
* "git log --graph --graph" used to leak a graph structure, and there
was no way to countermand "--graph" that appear earlier on the
command line. A "--no-graph" option has been added and resource
leakage has been plugged.
* Error output given in response to an ambiguous object name has been
improved.
(merge 3a73c1dfaf ab/ambiguous-object-name later to maint).
* "git sparse-checkout" wants to work with per-worktree configuration,
but did not work well in a worktree attached to a bare repository.
(merge 3ce1138272 ds/sparse-checkout-requires-per-worktree-config later to maint).
* Setting core.untrackedCache to true failed to add the untracked
cache extension to the index.
* Workaround we have for versions of PCRE2 before their version 10.36
were in effect only for their versions newer than 10.36 by mistake,
which has been corrected.
(merge 97169fc361 rs/pcre-invalid-utf8-fix-fix later to maint).
* Document Taylor as a new member of Git PLC at SFC. Welcome.
(merge e8d56ca863 tb/coc-plc-update later to maint).
* "git checkout -b branch/with/multi/level/name && git stash" only
recorded the last level component of the branch name, which has
been corrected.
* "git fetch" can make two separate fetches, but ref updates coming
from them were in two separate ref transactions under "--atomic",
which has been corrected.
* Check the return value from parse_tree_indirect() to turn segfaults
into calls to die().
(merge 8d2eaf649a gc/parse-tree-indirect-errors later to maint).
* Newer version of GPGSM changed its output in a backward
incompatible way to break our code that parses its output. It also
added more processes our tests need to kill when cleaning up.
Adjustments have been made to accommodate these changes.
(merge b0b70d54c4 fs/gpgsm-update later to maint).
* The untracked cache newly computed weren't written back to the
on-disk index file when there is no other change to the index,
which has been corrected.
* "git config -h" did not describe the "--type" option correctly.
(merge 5445124fad mf/fix-type-in-config-h later to maint).
* The way generation number v2 in the commit-graph files are
(not) handled has been corrected.
(merge 6dbf4b8172 ds/commit-graph-gen-v2-fixes later to maint).
* The method to trigger malloc check used in our tests no longer work
with newer versions of glibc.
(merge baedc59543 ep/test-malloc-check-with-glibc-2.34 later to maint).
* When "git fetch --recurse-submodules" grabbed submodule commits
that would be needed to recursively check out newly fetched commits
in the superproject, it only paid attention to submodules that are
in the current checkout of the superproject. We now do so for all
submodules that have been run "git submodule init" on.
* "git rebase $base $non_branch_commit", when $base is an ancestor or
the $non_branch_commit, modified the current branch, which has been
corrected.
* When "shallow" information is updated, we forgot to update the
in-core equivalent, which has been corrected.
* When creating a loose object file, we didn't report the exact
filename of the file we failed to fsync, even though the
information was readily available, which has been corrected.
* "git am" can read from the standard input when no mailbox is given
on the command line, but the end-user gets no indication when it
happens, making Git appear stuck.
(merge 7b20af6a06 jc/mailsplit-warn-on-tty later to maint).
* "git mv" failed to refresh the cached stat information for the
entry it moved.
(merge b7f9130a06 vd/mv-refresh-stat later to maint).
* Other code cleanup, docfix, build fix, etc.
(merge cfc5cf428b jc/find-header later to maint).
(merge 40e7cfdd46 jh/p4-fix-use-of-process-error-exception later to maint).
(merge 727e6ea350 jh/p4-spawning-external-commands-cleanup later to maint).
(merge 0a6adc26e2 rs/grep-expr-cleanup later to maint).
(merge 4ed7dfa713 po/readme-mention-contributor-hints later to maint).
(merge 6046f7a91c en/plug-leaks-in-merge later to maint).
(merge 8c591dbfce bc/clarify-eol-attr later to maint).
(merge 518e15db74 rs/parse-options-lithelp-help later to maint).
(merge cbac0076ef gh/doc-typos later to maint).
(merge ce14de03db ab/no-errno-from-resolve-ref-unsafe later to maint).
(merge 2826ffad8c rc/negotiate-only-typofix later to maint).
(merge 0f03f04c5c en/sparse-checkout-leakfix later to maint).
(merge 74f3390dde sy/diff-usage-typofix later to maint).
(merge 45d0212a71 ll/doc-mktree-typofix later to maint).
(merge e9b272e4c1 js/no-more-legacy-stash later to maint).
(merge 6798b08e84 ab/do-not-hide-failures-in-git-dot-pm later to maint).
(merge 9325285df4 po/doc-check-ignore-markup-fix later to maint).
(merge cd26cd6c7c sy/modernize-t-lib-read-tree-m-3way later to maint).
(merge d17294a05e ab/hash-object-leakfix later to maint).
(merge b8403129d3 jd/t0015-modernize later to maint).
(merge 332acc248d ds/mailmap later to maint).
(merge 04bf052eef ab/grep-patterntype later to maint).
(merge 6ee36364eb ab/diff-free-more later to maint).
(merge 63a36017fe nj/read-tree-doc-reffix later to maint).
(merge eed36fce38 sm/no-git-in-upstream-of-pipe-in-tests later to maint).
(merge c614beb933 ep/t6423-modernize later to maint).
(merge 57be9c6dee ab/reflog-prep-fix later to maint).
(merge 5327d8982a js/in-place-reverse-in-sequencer later to maint).
(merge 2e2c0be51e dp/worktree-repair-in-usage later to maint).
(merge 6563706568 jc/coding-guidelines-decl-in-for-loop later to maint).
----------------------------------------------------------------
Changes since v2.35.0 are as follows:
Abhradeep Chakraborty (2):
amend remaining usage strings according to style guide
partial-clone: add a partial-clone test case
Alex Henrie (3):
log: fix memory leak if --graph is passed multiple times
log: add a --no-graph option
switch: mention the --detach option when dying due to lack of a branch
Atharva Raykar (5):
submodule--helper: get remote names from any repository
submodule--helper: refactor get_submodule_displaypath()
submodule--helper: allow setting superprefix for init_submodule()
submodule--helper: run update using child process struct
submodule: move core cmd_update() logic to C
Bagas Sanjaya (1):
fetch-pack: parameterize message containing 'ready' keyword
COGONI Guillaume (3):
t/t3903-stash.sh: replace test [-d|-f] with test_path_is_*
tests: allow testing if a path is truly a file or a directory
tests: make the code more readable
Chen Bojun (1):
receive-pack: purge temporary data if no command is ready to run
David Cantrell (1):
completion: tab completion of filenames for 'git restore'
Derrick Stolee (45):
Documentation: add extensions.worktreeConfig details
worktree: create init_worktree_config()
config: add repo_config_set_worktree_gently()
sparse-checkout: set worktree-config correctly
worktree: copy sparse-checkout patterns and config on add
config: make git_configset_get_string_tmp() private
mailmap: change primary address for Derrick Stolee
dir: force untracked cache with core.untrackedCache
worktree: combine two translatable messages
worktree: extract copy_filtered_worktree_config()
worktree: extract copy_sparse_checkout()
worktree: extract checkout_worktree()
worktree: use 'worktree' over 'working tree'
worktree: use 'worktree' over 'working tree'
worktree: use 'worktree' over 'working tree'
worktree: use 'worktree' over 'working tree'
worktree: use 'worktree' over 'working tree'
worktree: use 'worktree' over 'working tree'
worktree: use 'worktree' over 'working tree'
test-read-graph: include extra post-parse info
t5318: extract helpers to lib-commit-graph.sh
commit-graph: fix ordering bug in generation numbers
commit-graph: start parsing generation v2 (again)
commit-graph: fix generation number v2 overflow values
commit-graph: declare bankruptcy on GDAT chunks
index-pack: document and test the --promisor option
list-objects-filter-options: create copy helper
revision: put object filter into struct rev_info
pack-objects: use rev.filter when possible
pack-bitmap: drop filter in prepare_bitmap_walk()
list-objects: consolidate traverse_commit_list[_filtered]
MyFirstObjectWalk: update recommended usage
bundle: parse filter capability
rev-list: move --filter parsing into revision.c
bundle: create filtered bundles
bundle: unbundle promisor packs
clone: fail gracefully when cloning filtered bundle
maintenance: fix synopsis in documentation
list-objects-filter: remove CL_ARG__FILTER
pack-objects: move revs out of get_object_list()
pack-objects: parse --filter directly into revs.filter
bundle: move capabilities to end of 'verify'
bundle: output hash information in 'verify'
t7700: check post-condition in kept-pack test
test-lib-functions: remove test_subcommand_inexact
Des Preston (1):
worktree: include repair cmd in usage
Elia Pinto (8):
test-lib.sh: Use GLIBC_TUNABLES instead of MALLOC_CHECK_ on glibc >= 2.34
t6423-merge-rename-directories.sh: use the $(...) construct
attr.c: delete duplicate include
builtin/gc.c: delete duplicate include
builtin/sparse-checkout.c: delete duplicate include
builtin/stash.c: delete duplicate include
t/helper/test-run-command.c: delete duplicate include
attr.h: remove duplicate struct definition
Elijah Newren (33):
t1011: add testcase demonstrating accidental loss of user modifications
unpack-trees: fix accidental loss of user changes
repo_read_index: clear SKIP_WORKTREE bit from files present in worktree
Update documentation related to sparsity and the skip-worktree bit
Accelerate clear_skip_worktree_from_present_files() by caching
merge-ort: avoid assuming all renames detected
merge-ort: fix memory leak in merge_ort_internal()
merge: fix memory leaks in cmd_merge()
sequencer, stash: fix running from worktree subdir
sparse-checkout: fix a couple minor memory leaks
repo-settings: fix checking for fetch.negotiationAlgorithm=default
repo-settings: fix error handling for unknown values
repo-settings: rename the traditional default fetch.negotiationAlgorithm
show, log: provide a --remerge-diff capability
log: clean unneeded objects during `log --remerge-diff`
ll-merge: make callers responsible for showing warnings
merge-ort: capture and print ll-merge warnings in our preferred fashion
merge-ort: mark a few more conflict messages as omittable
merge-ort: format messages slightly different for use in headers
diff: add ability to insert additional headers for paths
show, log: include conflict/warning messages in --remerge-diff headers
merge-ort: mark conflict/warning messages from inner merges as omittable
diff-merges: avoid history simplifications when diffing merges
merge-ort: make informational messages from recursive merges clearer
sparse-checkout: correct reapply's handling of options
sparse-checkout: correctly set non-cone mode when expected
sparse-checkout: pay attention to prefix for {set, add}
sparse-checkout: error or warn when given individual files
sparse-checkout: reject arguments in cone-mode that look like patterns
merge-ort: fix small memory leak in detect_and_process_renames()
merge-ort: fix small memory leak in unique_path()
merge-ort: exclude messages from inner merges by default
repo_read_index: add config to expect files outside sparse patterns
Emily Shaffer (14):
hook: add 'run' subcommand
gc: use hook library for pre-auto-gc hook
am: convert {pre,post}-applypatch to use hook.h
rebase: convert pre-rebase to use hook.h
am: convert applypatch-msg to use hook.h
merge: convert post-merge to use hook.h
hooks: convert non-worktree 'post-checkout' hook to hook library
hooks: convert worktree 'post-checkout' hook to hook library
send-email: use 'git hook run' for 'sendemail-validate'
git-p4: use 'git hook' to run hooks
commit: convert {pre-commit,prepare-commit-msg} hook to hook.h
read-cache: convert post-index-change to use hook.h
receive-pack: convert push-to-checkout hook to hook.h
run-command: remove old run_hook_{le,ve}() hook API
Fabian Stelzer (2):
gpg-interface: trim CR from ssh-keygen
gpg-interface/gpgsm: fix for v2.3
Glen Choo (39):
fetch: use goto cleanup in cmd_fetch()
fetch: skip tasks related to fetching objects
fetch --negotiate-only: do not update submodules
branch: move --set-upstream-to behavior to dwim_and_setup_tracking()
branch: make create_branch() always create a branch
branch: add a dry_run parameter to create_branch()
builtin/branch: consolidate action-picking logic in cmd_branch()
branch: add --recurse-submodules option for branch creation
branch.c: use 'goto cleanup' in setup_tracking() to fix memory leaks
stash: strip "refs/heads/" with skip_prefix
checkout, clone: die if tree cannot be parsed
submodule--helper: remove update-module-mode
submodule--helper: reorganize code for sh to C conversion
submodule--helper run-update-procedure: remove --suboid
submodule--helper run-update-procedure: learn --remote
submodule--helper update-clone: learn --init
submodule--helper: remove ensure-core-worktree
submodule update: add tests for --filter
submodule--helper update-clone: check for --filter and --init
t5526: introduce test helper to assert on fetches
t5526: stop asserting on stderr literally
t5526: create superproject commits with test helper
submodule: make static functions read submodules from commits
submodule: inline submodule_commits() into caller
submodule: store new submodule commits oid_array in a struct
submodule: extract get_fetch_task()
submodule: move logic into fetch_task_create()
submodule update: use die_message()
submodule--helper: teach update_data more options
submodule--helper: reduce logic in run_update_procedure()
submodule--helper: remove forward declaration
fetch: fetch unpopulated, changed submodules
submodule: fix latent check_has_commit() bug
branch: support more tracking modes when recursing
branch: give submodule updating advice before exit
branch --set-upstream-to: be consistent when advising
branch: remove negative exit code
branch: rework comments for future developers
branch.c: simplify advice-and-die sequence
Greg Hurrell (2):
Documentation/config/pgp.txt: replace stray <TAB> character with <SPC>
Documentation/config/pgp.txt: add missing apostrophe
Han-Wen Nienhuys (27):
reftable: fix OOB stack write in print functions
reftable: fix resource leak in block.c error path
reftable: fix resource leak blocksource.c
reftable: check reftable_stack_auto_compact() return value
reftable: ignore remove() return value in stack_test.c
reftable: fix resource warning
reftable: all xxx_free() functions accept NULL arguments
reftable: order unittests by complexity
reftable: drop stray printf in readwrite_test
reftable: handle null refnames in reftable_ref_record_equal
reftable: make reftable-record.h function signatures const correct
reftable: implement record equality generically
reftable: remove outdated file reftable.c
reftable: make reftable_record a tagged union
reftable: add print functions to the record types
t1405: explictly delete reflogs for reftable
t1405: mark test that checks existence as REFFILES
t5312: prepare for reftable
t1410: use test-tool ref-store to inspect reflogs
t1410: mark bufsize boundary test as REFFILES
Documentation: object_id_len goes up to 31
reftable: reject 0 object_id_len
reftable: add a test that verifies that writing empty keys fails
reftable: avoid writing empty keys at the block layer
reftable: ensure that obj_id_len is >= 2 on writing
reftable: add test for length of disambiguating prefix
reftable: rename writer_stats to reftable_writer_stats
Jacob Keller (1):
name-rev: use generation numbers if available
Jason Yundt (2):
comment: fix typo
gitweb: remove invalid http-equiv="content-type"
Jayati Shrivastava (1):
sequencer: use reverse_commit_list() helper
Jaydeep Das (1):
t/t0015-hash.sh: remove unnecessary '\' at line end
Jaydeep P Das (1):
userdiff: add builtin diff driver for kotlin language.
Jean-Noël Avila (4):
i18n: factorize more 'incompatible options' messages
i18n: factorize "invalid value" messages
i18n: remove from i18n strings that do not hold translatable parts
i18n: fix some misformated placeholders in command synopsis
Jeff Hostetler (30):
fsmonitor: enhance existing comments, clarify trivial response handling
fsmonitor-ipc: create client routines for git-fsmonitor--daemon
fsmonitor: config settings are repository-specific
fsmonitor: use IPC to query the builtin FSMonitor daemon
fsmonitor: document builtin fsmonitor
fsmonitor--daemon: add a built-in fsmonitor daemon
fsmonitor--daemon: implement 'stop' and 'status' commands
compat/fsmonitor/fsm-listen-win32: stub in backend for Windows
compat/fsmonitor/fsm-listen-darwin: stub in backend for Darwin
fsmonitor--daemon: implement 'run' command
fsmonitor--daemon: implement 'start' command
fsmonitor--daemon: add pathname classification
fsmonitor--daemon: define token-ids
fsmonitor--daemon: create token-based changed path cache
compat/fsmonitor/fsm-listen-win32: implement FSMonitor backend on Windows
compat/fsmonitor/fsm-listen-darwin: add MacOS header files for FSEvent
compat/fsmonitor/fsm-listen-darwin: implement FSEvent listener on MacOS
fsmonitor--daemon: implement handle_client callback
help: include fsmonitor--daemon feature flag in version info
t/helper/fsmonitor-client: create IPC client to talk to FSMonitor Daemon
t7527: create test for fsmonitor--daemon
t/perf: avoid copying builtin fsmonitor files into test repo
t/helper/test-chmtime: skip directories on Windows
t/perf/p7519: fix coding style
t/perf/p7519: speed up test on Windows
t/perf/p7519: add fsmonitor--daemon test cases
fsmonitor--daemon: periodically truncate list of modified files
fsmonitor--daemon: use a cookie file to sync with file system
fsmonitor: force update index after large responses
t7527: test status with untracked-cache and fsmonitor--daemon
Jerry Zhang (3):
git-rev-list: add --exclude-first-parent-only flag
patch-id: fix antipatterns in tests
patch-id: fix scan_hunk_header on diffs with 1 line of before/after
Jessica Clarke (1):
mem-pool: don't assume uintmax_t is aligned enough for all types
Joel Holdsworth (4):
git-p4: don't select shell mode using the type of the command argument
git-p4: pass command arguments as lists instead of using shell
git-p4: don't print shell commands as python lists
git-p4: fix instantiation of CalledProcessError
Johannes Schindelin (14):
sparse-index: sparse index is disallowed when split index is active
t1091: disable split index
split-index: it really is incompatible with the sparse index
git-sh-setup: remove remnant bits referring to `git-legacy-stash`
add: remove support for `git-legacy-stash`
stash: remove documentation for `stash.useBuiltin`
stash: stop warning about the obsolete `stash.useBuiltin` config setting
docs(diff): lose incorrect claim about `diff-files --diff-filter=A`
diff.c: move the diff filter bits definitions up a bit
diff-filter: be more careful when looking for negative bits
scalar: accept -C and -c options before the subcommand
checkout/fetch/pull/pack-objects: allow `-h` outside a repository
t0012: verify that built-ins handle `-h` even without gitdir
cocci: allow padding with `strbuf_addf()`
John Cai (15):
receive-pack.c: consolidate find header logic
name-rev: deprecate --stdin in favor of --annotate-stdin
name-rev.c: use strbuf_getline instead of limited size buffer
builtin/reflog.c: use parse-options api for expire, delete subcommands
name-rev: replace --stdin with --annotate-stdin in synopsis
cat-file: rename cmdmode to transform_mode
cat-file: introduce batch_mode enum to replace print_contents
cat-file: add remove_timestamp helper
cat-file: add --batch-command mode
stash: add tests to ensure reflog --rewrite --updatref behavior
reflog: libify delete reflog function and helpers
stash: call reflog_delete() in reflog.c
cat-file: skip expanding default format
rebase: use test_commit helper in setup
rebase: set REF_HEAD_DETACH in checkout_up_to_date()
Jonathan Tan (6):
config: make git_config_include() static
config: include file if remote URL matches a glob
sparse-checkout: create leading directory
clone: support unusual remote ref configurations
ls-files: support --recurse-submodules --stage
shallow: reset commit grafts when shallow is reset
Josh Steadmon (2):
test-lib: unset trace2 parent envvars
clone, submodule: pass partial clone filters to submodules
Junio C Hamano (31):
compat/qsort_s.c: avoid using potentially unaligned access
fetch: help translators by reusing the same message template
Start post 2.35 cycle
SubmittingPatches: write problem statement in the log in the present tense
CodingGuidelines: hint why we value clearly written log messages
SubmittingPatches: explain why we care about log messages
Git 2.35.1
Name the next one 2.36 to prepare for 2.35.1
The first batch
The second batch for 2.36
glossary: describe "worktree"
The third batch
The fourth batch
The fifth batch
The sixth batch
The seventh batch
The eighth batch
rerere-train: two fixes to the use of "git show -s"
am/apply: warn if we end up reading patches from terminal
The ninth batch
The tenth batch
The eleventh batch
The twelfth batch
The thirteenth batch
The 14th batch
reset: show --no-refresh in the short-help
The 15th batch
The 16th batch
The 17th batch
CodingGuidelines: give deadline for "for (int i = 0; ..."
Git 2.36-rc0
Justin Donnelly (4):
git-prompt: rename `upstream` to `upstream_type`
git-prompt: make upstream state indicator location consistent
git-prompt: make long upstream state indicator consistent
git-prompt: put upstream comments together
Lessley Dennington (3):
completion: address sparse-checkout issues
completion: improve sparse-checkout cone mode directory completion
completion: handle unusual characters for sparse-checkout
Liginity Lee (1):
fix typo in git-mktree.txt
Marc Strapetz (4):
test-lib: introduce API for verifying file mtime
t7508: fix bogus mtime verification
t7508: add tests capturing racy timestamp handling
update-index: refresh should rewrite index in case of racy timestamps
Matheus Felipe (1):
config: correct "--type" option in "git config -h" output
Matt Cooper (1):
index-pack: clarify the breached limit
Michael J Gruber (2):
test-lib: declare local variables as local
tests: demonstrate "show --word-diff --color-moved" regression
Neeraj Singh (10):
wrapper: make inclusion of Windows csprng header tightly scoped
core.fsyncmethod: add writeout-only mode
core.fsync: introduce granular fsync control infrastructure
core.fsync: add configuration parsing
core.fsync: new option to harden the index
core.fsync: documentation and user-friendly aggregate options
core.fsync: fix incorrect expression for default configuration
trace2: add stats for fsync operations
core.fsyncmethod: correctly camel-case warning message
object-file: pass filename to fsync_or_die
Nihal Jere (1):
Documentation: git-read-tree: separate links using commas
Patrick Steinhardt (24):
refs: extract packed_refs_delete_refs() to allow control of transaction
refs: allow passing flags when beginning transactions
refs: allow skipping the reference-transaction hook
refs: demonstrate excessive execution of the reference-transaction hook
refs: do not execute reference-transaction hook on packing refs
refs: skip hooks when deleting uncovered packed refs
fetch-pack: use commit-graph when computing cutoff
fetch: skip computing output width when not printing anything
fetch: increase test coverage of fetches
fetch: backfill tags before setting upstream
fetch: control lifecycle of FETCH_HEAD in a single place
fetch: report errors when backfilling tags fails
refs: add interface to iterate over queued transactional updates
fetch: make `--atomic` flag cover backfilling of tags
fetch: make `--atomic` flag cover pruning of refs
upload-pack: look up "want" lines via commit-graph
fetch: avoid lookup of commits when not appending to FETCH_HEAD
refs: add ability for backends to special-case reading of symbolic refs
remote: read symbolic refs via `refs_read_symbolic_ref()`
refs/files-backend: optimize reading of symbolic refs
t5503: simplify setup of test which exercises failure of backfill
repack: refactor to avoid double-negation of update-server-info
repack: add config to skip updating server info
core.fsync: new option to harden references
Philip Oakley (2):
README.md: add CodingGuidelines and a link for Translators
doc: check-ignore: code-quote an exclamation mark
Philippe Blain (1):
pull --rebase: honor rebase.autostash when fast-forwarding
Phillip Wood (29):
t3701: clean up hunk splitting tests
builtin add -p: fix hunk splitting
rebase: factor out checkout for up to date branch
t5403: refactor rebase post-checkout hook tests
rebase: pass correct arguments to post-checkout hook
rebase: do not remove untracked files on checkout
rebase --apply: don't run post-checkout hook if there is an error
reset_head(): remove action parameter
reset_head(): factor out ref updates
reset_head(): make default_reflog_action optional
create_autostash(): remove unneeded parameter
rebase: cleanup reset_head() calls
reset_head(): take struct rebase_head_opts
rebase --apply: fix reflog
rebase --apply: set ORIG_HEAD correctly
rebase -m: don't fork git checkout
xdiff: fix a memory leak
xdiff: handle allocation failure in patience diff
xdiff: refactor a function
xdiff: handle allocation failure when merging
terminal: always reset terminal when reading without echo
terminal: pop signal handler when terminal is restored
terminal: set VMIN and VTIME in non-canonical mode
add -p: disable stdin buffering when interactive.singlekey is set
terminal: use flags for save_term()
terminal: don't assume stdin is /dev/tty
terminal: work around macos poll() bug
terminal: restore settings on SIGTSTP
worktree: add -z option for list subcommand
René Scharfe (10):
grep: use grep_or_expr() in compile_pattern_or()
grep: use grep_not_expr() in compile_pattern_not()
apply: use strsets to track symlinks
stable-qsort: avoid using potentially unaligned access
bisect--helper: report actual bisect_state() argument on error
bisect--helper: release strbuf and strvec on run error
bisect: document run behavior with exit codes 126 and 127
bisect--helper: double-check run command on exit code 126 and 127
parse-options: document bracketing of argh
grep: fix triggering PCRE2_NO_START_OPTIMIZE workaround
Robert Coup (8):
fetch: fix negotiate-only error message
fetch-negotiator: add specific noop initializer
fetch-pack: add refetch
builtin/fetch-pack: add --refetch option
fetch: add --refetch option
t5615-partial-clone: add test for fetch --refetch
fetch: after refetch, encourage auto gc repacking
docs: mention --refetch fetch option
SZEDER Gábor (1):
reflog: fix 'show' subcommand's argv
Shaoxuan Yuan (4):
builtin/diff.c: fix "git-diff" usage string typo
t/lib-read-tree-m-3way: modernize style
t/lib-read-tree-m-3way: indent with tabs
t0001: replace "test [-d|-f]" with test_path_is_* functions
Shubham Mishra (3):
t0003: avoid pipes with Git on LHS
t0001-t0028: avoid pipes with Git on LHS
t0030-t0050: avoid pipes with Git on LHS
Tao Klerks (6):
t7519: avoid file to index mtime race for untracked cache
t7519: populate untracked cache before test
untracked-cache: write index when populating empty untracked cache
t/helper/test-chmtime: update mingw to support chmtime on directories
t7063: mtime-mangling instead of delays in untracked cache testing
tracking branches: add advice to ambiguous refspec error
Taylor Blau (15):
grep: extract grep_binexp() from grep_or_expr()
grep: use grep_and_expr() in compile_pattern_and()
t5326: demonstrate bitmap corruption after permutation
midx.c: make changing the preferred pack safe
pack-revindex.c: instrument loading on-disk reverse index
t5326: drop unnecessary setup
t5326: extract `test_rev_exists`
t5326: move tests to t/lib-bitmap.sh
t/lib-bitmap.sh: parameterize tests over reverse index source
midx: read `RIDX` chunk when present
pack-bitmap.c: gracefully fallback after opening pack/MIDX
midx: prevent writing a .bitmap without any objects
CODE_OF_CONDUCT.md: update PLC members list
builtin/remote.c: parse options in 'rename'
builtin/remote.c: show progress when renaming remote references
Teng Long (6):
git-cli.txt: clarify "options first and then args"
ls-tree: rename "retval" to "recurse" in "show_tree()"
ls-tree: simplify nesting if/else logic in "show_tree()"
ls-tree: fix "--name-only" and "--long" combined use bug
ls-tree: slightly refactor `show_tree()`
ls-tree: support --object-only option for "git-ls-tree"
Thomas Gummerer (1):
fetch --prune: exit with error if pruning fails
Thomas Koutcher (1):
subtree: force merge commit
Todd Zullinger (2):
t/lib-gpg: reload gpg components after updating trustlist
t/lib-gpg: kill all gpg components, not just gpg-agent
Victoria Dye (29):
reset: fix validation in sparse index test
reset: reorder wildcard pathspec conditions
clean: integrate with sparse index
checkout-index: expand sparse checkout compatibility tests
checkout-index: add --ignore-skip-worktree-bits option
checkout-index: integrate with sparse index
update-index: add tests for sparse-checkout compatibility
update-index: integrate with sparse index
update-index: reduce scope of index expansion in do_reupdate
sparse-index: prevent repo root from becoming sparse
status: fix nested sparse directory diff in sparse index
read-tree: explicitly disallow prefixes with a leading '/'
read-tree: expand sparse checkout test coverage
read-tree: integrate with sparse index
read-tree: narrow scope of index expansion for '--prefix'
read-tree: make two-way merge sparse-aware
read-tree: make three-way merge sparse-aware
reset: revise index refresh advice
reset: introduce --[no-]refresh option to --mixed
reset: replace '--quiet' with '--no-refresh' in performance advice
reset: suppress '--no-refresh' advice if logging is silenced
stash: make internal resets quiet and refresh index
t1092: add sparse directory before cone in test repo
unpack-trees: increment cache_bottom for sparse directories
Revert "unpack-trees: improve performance of next_cache_entry"
reset: do not make '--quiet' disable index refresh
reset: remove 'reset.quiet' config option
reset: remove 'reset.refresh' config option
mv: refresh stat info for moved entry
brian m. carlson (6):
t0027: add tests for eol without text in .gitattributes
docs: correct documentation about eol attribute
wrapper: add a helper to generate numbers from a CSPRNG
wrapper: use a CSPRNG to generate random file names
doc: clarify interaction between 'eol' and text=auto
block-sha1: remove use of obsolete x86 assembly
Ævar Arnfjörð Bjarmason (183):
cat-file tests: test bad usage
cat-file tests: test messaging on bad objects/paths
parse-options API: add a usage_msg_optf()
cat-file docs: fix SYNOPSIS and "-h" output
cat-file: move "usage" variable to cmd_cat_file()
cat-file: make --batch-all-objects a CMDMODE
cat-file: fix remaining usage bugs
cat-file: correct and improve usage information
object-name.c: don't have GET_OID_ONLY_TO_DIE imply *_QUIETLY
cat-file: use GET_OID_ONLY_TO_DIE in --(textconv|filters)
hook API: add a run_hooks() wrapper
hook API: add a run_hooks_l() wrapper
git hook run: add an --ignore-missing flag
cat-file: don't whitespace-pad "(...)" in SYNOPSIS and usage output
cat-file: s/_/-/ in typo'd usage_msg_optf() message
compat: auto-detect if zlib has uncompress2()
sequencer: don't use die_errno() on refs_resolve_ref_unsafe() failure
refs API: remove "failure_errno" from refs_resolve_ref_unsafe()
object-name tests: add tests for ambiguous object blind spots
object-name: explicitly handle OBJ_BAD in show_ambiguous_object()
object-name: explicitly handle bad tags in show_ambiguous_object()
object-name: make ambiguous object output translatable
object-name: show date for ambiguous tag objects
object-name: iterate ambiguous objects before showing header
object-name: re-use "struct strbuf" in show_ambiguous_object()
perl Git.pm: don't ignore signalled failure in _cmd_close()
completion tests: re-source git-completion.bash in a subshell
completion: add a GIT_COMPLETION_SHOW_ALL_COMMANDS
leak tests: fix a memory leak in "test-progress" helper
progress.c test helper: add missing braces
progress.c tests: make start/stop commands on stdin
progress.c tests: test some invalid usage
progress.h: format and be consistent with progress.c naming
progress.c: use dereferenced "progress" variable, not "(*p_progress)"
progress.c: refactor stop_progress{,_msg}() to use helpers
progress API: unify stop_progress{,_msg}(), fix trace2 bug
pack-bitmap-write.c: don't return without stop_progress()
t0051: use "skip_all" under !MINGW in single-test file
hash-object: fix a trivial leak in --path
ls-remote & transport API: release "struct transport_ls_refs_options"
grep.h: remove unused "regex_t regexp" from grep_opt
log tests: check if grep_config() is called by "log"-like cmds
grep tests: create a helper function for "BRE" or "ERE"
grep tests: add missing "grep.patternType" config tests
built-ins: trust the "prefix" from run_builtin()
grep.c: don't pass along NULL callback value
grep API: call grep_config() after grep_init()
grep.h: make "grep_opt.pattern_type_option" use its enum
grep.c: do "if (bool && memchr())" not "if (memchr() && bool)"
grep: simplify config parsing and option parsing
cache.h: remove always unused show_date_human() declaration
date API: create a date.h, split from cache.h
date API: provide and use a DATE_MODE_INIT
date API: add basic API docs
date API: add and use a date_mode_release()
diff.[ch]: have diff_free() call clear_pathspec(opts.pathspec)
diff.[ch]: have diff_free() free options->parseopts
hook tests: test for exact "pre-push" hook input
hook tests: use a modern style for "pre-push" tests
git-compat-util.h: clarify GCC v.s. C99-specific in comment
C99: remove hardcoded-out !HAVE_VARIADIC_MACROS code
help doc: add missing "]" to "[-a|--all]"
help.c: use puts() instead of printf{,_ln}() for consistency
help tests: test "git" and "git help [-a|-g] spacing
help.c: split up list_all_cmds_help() function
help: note the option name on option incompatibility
help: correct usage & behavior of "git help --all"
help: error if [-a|-g|-c] and [-i|-m|-w] are combined
help: add --no-[external-commands|aliases] for use with --all
help: don't print "\n" before single-section output
imap-send.c: use designated initializers for "struct imap_server_conf"
trace2: use designated initializers for "struct tr2_tgt"
trace2: use designated initializers for "struct tr2_dst"
object-file: use designated initializers for "struct git_hash_algo"
archive-*.c: use designated initializers for "struct archiver"
userdiff.c: use designated initializers for "struct userdiff_driver"
convert.c: use designated initializers for "struct stream_filter*"
refspec.c: use designated initializers for "struct refspec_item"
fast-import.c: use designated initializers for "partial" struct assignments
object-file.c: split up declaration of unrelated variables
object-file API: return "void", not "int" from hash_object_file()
object-file API: add a format_object_header() function
object-file API: have write_object_file() take "enum object_type"
object API: correct "buf" v.s. "map" mismatch in *.c and *.h
object API docs: move check_object_signature() docs to cache.h
object API users + docs: check <0, not !0 with check_object_signature()
object-file API: split up and simplify check_object_signature()
object API: rename hash_object_file_literally() to write_*()
object-file API: have hash_object_file() take "enum object_type"
object-file.c: add a literal version of write_object_file_prepare()
object-file API: pass an enum to read_object_with_reference()
test-lib: add GIT_SAN_OPTIONS, inherit [AL]SAN_OPTIONS
test-lib: correct and assert TEST_DIRECTORY overriding
test-lib: make $GIT_BUILD_DIR an absolute path
test-lib: add "fast_unwind_on_malloc=0" to LSAN_OPTIONS
scalar Makefile: use "The default target of..." pattern
Makefiles: add "shared.mak", move ".DELETE_ON_ERROR" to it
Makefile: disable GNU make built-in wildcard rules
Makefile: define $(LIB_H) in terms of $(FIND_SOURCE_FILES)
Makefile: move ".SUFFIXES" rule to shared.mak
Makefile: move $(comma), $(empty) and $(space) to shared.mak
Makefile: add "$(QUIET)" boilerplate to shared.mak
Makefiles: add and use wildcard "mkdir -p" template
log tests: fix "abort tests early" regression in ff37a60c369
index-pack: fix memory leaks
merge-base: free() allocated "struct commit **" list
diff.c: free "buf" in diff_words_flush()
urlmatch.c: add and use a *_release() function
remote-curl.c: free memory in cmd_main()
bundle: call strvec_clear() on allocated strvec
transport: stop needlessly copying bundle header references
submodule--helper: fix trivial leak in module_add()
commit-graph: fix memory leak in misused string_list API
commit-graph: stop fill_oids_from_packs() progress on error and free()
lockfile API users: simplify and don't leak "path"
range-diff: plug memory leak in common invocation
range-diff: plug memory leak in read_patches()
repository.c: free the "path cache" in repo_clear()
submodule tests: test for init and update failure output
submodule--helper: don't use bitfield indirection for parse_options()
gettext API users: don't explicitly cast ngettext()'s "n"
string-list API: change "nr" and "alloc" to "size_t"
merge: don't run post-hook logic on --no-verify
hooks: fix an obscure TOCTOU "did we just run a hook?" race
tests: change some 'test $(git) = "x"' to test_cmp
tests: use "test_stdout_line_count", not "test $(git [...] | wc -l)"
read-tree tests: check "diff-files" exit code on failure
diff tests: don't ignore "git diff" exit code
diff tests: don't ignore "git diff" exit code in "read" loop
apply tests: use "test_must_fail" instead of ad-hoc pattern
merge tests: use "test_must_fail" instead of ad-hoc pattern
rev-parse tests: don't ignore "git reflog" exit code
notes tests: don't ignore "git" exit code
diff tests: don't ignore "git rev-list" exit code
rev-list tests: don't hide abort() in "test_expect_failure"
gettext tests: don't ignore "test-tool regex" exit code
apply tests: don't ignore "git ls-files" exit code, drop sub-shell
checkout tests: don't ignore "git <cmd>" exit code
rev-list simplify tests: don't ignore "git" exit code
list-objects: handle NULL function pointers
reflog: don't be noisy on empty reflogs
builtin/submodule--helper.c: rename option struct to "opt"
test-lib-functions: add and use a "test_hook" wrapper
hook tests: turn exit code assertions into a loop
http tests: don't rely on "hook/post-update.sample"
tests: assume the hooks are disabled by default
bugreport tests: tighten up "git bugreport -s hooks" test
fetch+push tests: use "test_hook" and "test_when_finished" pattern
gc + p4 tests: use "test_hook", remove sub-shells
tests: change "cat && chmod +x" to use "test_hook"
tests: change "mkdir -p && write_script" to use "test_hook"
tests: use "test_hook" for misc "mkdir -p" and "chmod" cases
diff.c: fix a double-free regression in a18d66cefb
refs: use designated initializers for "struct ref_storage_be"
refs: use designated initializers for "struct ref_iterator_vtable"
misc *.c: use designated initializers for struct assignments
packed-backend: remove stub BUG(...) functions
refs debug: add a wrapper for "read_symbolic_ref"
tests: extend "test_hook" for "rm" and "chmod -x", convert "$HOOK"
proc-receive hook tests: use "test_hook" instead of "write_script"
http tests: use "test_hook" for "smart" and "dumb" http tests
reflog.c: indent argument lists
reflog: refactor cmd_reflog() to "if" branches
reflog tests: add missing "git reflog exists" tests
reflog: move "usage" variables and use macros
git reflog [expire|delete]: make -h output consistent with SYNOPSIS
reflog exists: use parse_options() API
Makefile: use ' ', not non-existing $(wspfx_SQ)
ls-tree tests: add tests for --name-status
ls-tree: remove commented-out code
ls-tree: add missing braces to "else" arms
ls-tree: use "enum object_type", not {blob,tree,commit}_type
ls-tree: use "size_t", not "int" for "struct strbuf"'s "len"
ls-tree: introduce struct "show_tree_data"
ls-tree: introduce "--format" option
ls-tree: detect and error on --name-only --name-status
ls-tree: split up "fast path" callbacks
hooks: fix "invoked hook" regression in a8cc5943338
reflog: convert to parse_options() API
reflog [show]: display sensible -h output
test-lib: have --immediate emit valid TAP on failure
pack-objects: lazily set up "struct rev_info", don't leak
reftable: make assignments portable to AIX xlc v12.01
^ permalink raw reply [relevance 3%]
* Review Request (was Re: [PATCH 0/7] rebase: make reflog messages independent of the backend)
2022-02-21 11:10 3% [PATCH 0/7] rebase: make reflog messages independent of the backend Phillip Wood via GitGitGadget
2022-02-21 11:10 1% ` [PATCH 2/7] rebase --merge: fix reflog when continuing Phillip Wood via GitGitGadget
2022-02-21 11:10 2% ` [PATCH 3/7] rebase --merge: fix reflog message after skipping Phillip Wood via GitGitGadget
@ 2022-04-04 15:34 0% ` Phillip Wood
2022-04-17 2:13 0% ` Elijah Newren
2022-04-17 2:09 0% ` [PATCH 0/7] rebase: make reflog messages independent of the backend Elijah Newren
2022-04-20 9:56 3% ` [PATCH v2 0/8] " Phillip Wood via GitGitGadget
4 siblings, 1 reply; 200+ results
From: Phillip Wood @ 2022-04-04 15:34 UTC (permalink / raw)
To: Phillip Wood via GitGitGadget, git
Cc: Johannes Schindelin, Elijah Newren,
Ævar Arnfjörð Bjarmason
If anyone has time to review these patches I'd be very grateful. I've
cc'd this message to some list regulars who have reviewed rebase patches
before but if anyone else fancies taking a look at them that would be great.
Thanks
Phillip
On 21/02/2022 11:10, Phillip Wood via GitGitGadget wrote:
> This is a series of rebase reflog related patches with the aim of unifying
> the reflog messages from the two rebase backends.
>
> * improve rebase reflog test coverage
> * rebase --merge: fix reflog messages for --continue and --skip
> * rebase --apply: respect GIT_REFLOG_ACTION
> * rebase --abort: improve reflog message
> * unify reflog messages between the two rebase backends
>
> This series is based on pw/use-inprocess-checkout-in-rebase
>
> Phillip Wood (7):
> rebase --apply: remove duplicated code
> rebase --merge: fix reflog when continuing
> rebase --merge: fix reflog message after skipping
> rebase --apply: respect GIT_REFLOG_ACTION
> rebase --apply: make reflog messages match rebase --merge
> rebase --abort: improve reflog message
> rebase: cleanup action handling
>
> builtin/rebase.c | 144 ++++++++++++-----------------
> sequencer.c | 5 ++
> t/t3406-rebase-message.sh | 185 +++++++++++++++++++++++++++++++-------
> 3 files changed, 214 insertions(+), 120 deletions(-)
>
>
> base-commit: 38c541ce94048cf72aa4f465be9314423a57f445
> Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-1150%2Fphillipwood%2Fwip%2Frebase-reflog-fixes-v1
> Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-1150/phillipwood/wip/rebase-reflog-fixes-v1
> Pull-Request: https://github.com/gitgitgadget/git/pull/1150
^ permalink raw reply [relevance 0%]
* [PATCH 3/7] rebase --merge: fix reflog message after skipping
2022-02-21 11:10 3% [PATCH 0/7] rebase: make reflog messages independent of the backend Phillip Wood via GitGitGadget
2022-02-21 11:10 1% ` [PATCH 2/7] rebase --merge: fix reflog when continuing Phillip Wood via GitGitGadget
@ 2022-02-21 11:10 2% ` Phillip Wood via GitGitGadget
2022-04-17 1:58 2% ` Elijah Newren
2022-04-04 15:34 0% ` Review Request (was Re: [PATCH 0/7] rebase: make reflog messages independent of the backend) Phillip Wood
` (2 subsequent siblings)
4 siblings, 1 reply; 200+ results
From: Phillip Wood via GitGitGadget @ 2022-02-21 11:10 UTC (permalink / raw)
To: git; +Cc: Phillip Wood, Phillip Wood
From: Phillip Wood <phillip.wood@dunelm.org.uk>
The reflog message for every pick after running "rebase --skip" looks
like
rebase (skip) (pick): commit subject line
Fix this by not appending " (skip)" to the reflog action.
Signed-off-by: Phillip Wood <phillip.wood@dunelm.org.uk>
---
builtin/rebase.c | 2 --
t/t3406-rebase-message.sh | 24 ++++++++++++++++++++++++
2 files changed, 24 insertions(+), 2 deletions(-)
diff --git a/builtin/rebase.c b/builtin/rebase.c
index cd9a4f3e2f1..36863117fba 100644
--- a/builtin/rebase.c
+++ b/builtin/rebase.c
@@ -1273,8 +1273,6 @@ int cmd_rebase(int argc, const char **argv, const char *prefix)
struct string_list merge_rr = STRING_LIST_INIT_DUP;
options.action = "skip";
- set_reflog_action(&options);
-
rerere_clear(the_repository, &merge_rr);
string_list_clear(&merge_rr, 1);
ropts.flags = RESET_HEAD_HARD;
diff --git a/t/t3406-rebase-message.sh b/t/t3406-rebase-message.sh
index 3ca2fbb0d59..8aa6a79acc1 100755
--- a/t/t3406-rebase-message.sh
+++ b/t/t3406-rebase-message.sh
@@ -163,6 +163,30 @@ test_reflog () {
# check there is only one new entry in the branch reflog
test_cmp_rev fast-forward@{1} X
'
+
+ test_expect_success "rebase $mode --skip reflog${reflog_action:+ GIT_REFLOG_ACTION=$reflog_action}" '
+ git checkout conflicts &&
+ test_when_finished "git reset --hard Q" &&
+
+ (
+ if test -n "$reflog_action"
+ then
+ GIT_REFLOG_ACTION="$reflog_action" &&
+ export GIT_REFLOG_ACTION
+ fi &&
+ test_must_fail git rebase $mode main &&
+ git rebase --skip
+ ) &&
+
+ git log -g --format=%gs -4 >actual &&
+ write_reflog_expect <<-EOF &&
+ ${reflog_action:-rebase} (finish): returning to refs/heads/conflicts
+ ${reflog_action:-rebase} (pick): Q
+ ${reflog_action:-rebase} (pick): P
+ ${reflog_action:-rebase} (start): checkout main
+ EOF
+ test_cmp expect actual
+ '
}
test_reflog --merge
--
gitgitgadget
^ permalink raw reply related [relevance 2%]
* [PATCH 2/7] rebase --merge: fix reflog when continuing
2022-02-21 11:10 3% [PATCH 0/7] rebase: make reflog messages independent of the backend Phillip Wood via GitGitGadget
@ 2022-02-21 11:10 1% ` Phillip Wood via GitGitGadget
2022-04-07 13:49 2% ` Christian Couder
2022-02-21 11:10 2% ` [PATCH 3/7] rebase --merge: fix reflog message after skipping Phillip Wood via GitGitGadget
` (3 subsequent siblings)
4 siblings, 1 reply; 200+ results
From: Phillip Wood via GitGitGadget @ 2022-02-21 11:10 UTC (permalink / raw)
To: git; +Cc: Phillip Wood, Phillip Wood
From: Phillip Wood <phillip.wood@dunelm.org.uk>
The reflog message for a conflict resolution committed by "rebase
--continue" looks like
rebase (continue): commit subject line
Unfortunately the reflog message each subsequent pick look like
rebase (continue) (pick): commit subject line
Fix this by setting the reflog message for "rebase --continue" in
sequencer_continue() so it does not affect subsequent commits. This
introduces a memory leak similar to the one leaking GIT_REFLOG_ACTION
in pick_commits(). Both of these will be fixed in a future series that
stops the sequencer calling setenv().
Signed-off-by: Phillip Wood <phillip.wood@dunelm.org.uk>
---
builtin/rebase.c | 2 -
sequencer.c | 5 ++
t/t3406-rebase-message.sh | 120 +++++++++++++++++++++++++-------------
3 files changed, 86 insertions(+), 41 deletions(-)
diff --git a/builtin/rebase.c b/builtin/rebase.c
index 4832f16e675..cd9a4f3e2f1 100644
--- a/builtin/rebase.c
+++ b/builtin/rebase.c
@@ -1247,8 +1247,6 @@ int cmd_rebase(int argc, const char **argv, const char *prefix)
int fd;
options.action = "continue";
- set_reflog_action(&options);
-
/* Sanity check */
if (get_oid("HEAD", &head))
die(_("Cannot read HEAD"));
diff --git a/sequencer.c b/sequencer.c
index bdd66b4b67a..3634ad5baa9 100644
--- a/sequencer.c
+++ b/sequencer.c
@@ -4777,6 +4777,8 @@ int sequencer_continue(struct repository *r, struct replay_opts *opts)
if (read_populate_opts(opts))
return -1;
if (is_rebase_i(opts)) {
+ char *previous_reflog_action;
+
if ((res = read_populate_todo(r, &todo_list, opts)))
goto release_todo_list;
@@ -4787,10 +4789,13 @@ int sequencer_continue(struct repository *r, struct replay_opts *opts)
unlink(rebase_path_dropped());
}
+ previous_reflog_action = xstrdup(getenv(GIT_REFLOG_ACTION));
+ setenv(GIT_REFLOG_ACTION, reflog_message(opts, "continue", NULL), 1);
if (commit_staged_changes(r, opts, &todo_list)) {
res = -1;
goto release_todo_list;
}
+ setenv(GIT_REFLOG_ACTION, previous_reflog_action, 1);
} else if (!file_exists(get_todo_path(opts)))
return continue_single_pick(r, opts);
else if ((res = read_populate_todo(r, &todo_list, opts)))
diff --git a/t/t3406-rebase-message.sh b/t/t3406-rebase-message.sh
index d17b450e811..3ca2fbb0d59 100755
--- a/t/t3406-rebase-message.sh
+++ b/t/t3406-rebase-message.sh
@@ -10,10 +10,16 @@ export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME
test_expect_success 'setup' '
test_commit O fileO &&
test_commit X fileX &&
+ git branch fast-forward &&
test_commit A fileA &&
test_commit B fileB &&
test_commit Y fileY &&
+ git checkout -b conflicts O &&
+ test_commit P &&
+ test_commit conflict-X fileX &&
+ test_commit Q &&
+
git checkout -b topic O &&
git cherry-pick A B &&
test_commit Z fileZ &&
@@ -79,54 +85,90 @@ test_expect_success 'error out early upon -C<n> or --whitespace=<bad>' '
test_i18ngrep "Invalid whitespace option" err
'
-test_expect_success 'GIT_REFLOG_ACTION' '
- git checkout start &&
- test_commit reflog-onto &&
- git checkout -b reflog-topic start &&
- test_commit reflog-to-rebase &&
-
- git rebase reflog-onto &&
- git log -g --format=%gs -3 >actual &&
- cat >expect <<-\EOF &&
- rebase (finish): returning to refs/heads/reflog-topic
- rebase (pick): reflog-to-rebase
- rebase (start): checkout reflog-onto
+write_reflog_expect () {
+ if test $mode = --apply
+ then
+ sed 's/.*(finish)/rebase finished/; s/ ([^)]*)//'
+ else
+ cat
+ fi >expect
+}
+
+test_reflog () {
+ mode=$1
+ reflog_action="$2"
+
+ test_expect_success "rebase $mode reflog${reflog_action:+ GIT_REFLOG_ACTION=$reflog_action}" '
+ git checkout conflicts &&
+ test_when_finished "git reset --hard Q" &&
+
+ (
+ if test -n "$reflog_action"
+ then
+ GIT_REFLOG_ACTION="$reflog_action" &&
+ export GIT_REFLOG_ACTION
+ fi &&
+ test_must_fail git rebase $mode main &&
+ echo resolved >fileX &&
+ git add fileX &&
+ git rebase --continue
+ ) &&
+
+ git log -g --format=%gs -5 >actual &&
+ write_reflog_expect <<-EOF &&
+ ${reflog_action:-rebase} (finish): returning to refs/heads/conflicts
+ ${reflog_action:-rebase} (pick): Q
+ ${reflog_action:-rebase} (continue): conflict-X
+ ${reflog_action:-rebase} (pick): P
+ ${reflog_action:-rebase} (start): checkout main
EOF
test_cmp expect actual &&
- git checkout -b reflog-prefix reflog-to-rebase &&
- GIT_REFLOG_ACTION=change-the-reflog git rebase reflog-onto &&
- git log -g --format=%gs -3 >actual &&
- cat >expect <<-\EOF &&
- change-the-reflog (finish): returning to refs/heads/reflog-prefix
- change-the-reflog (pick): reflog-to-rebase
- change-the-reflog (start): checkout reflog-onto
+ git log -g --format=%gs -1 conflicts >actual &&
+ write_reflog_expect <<-EOF &&
+ ${reflog_action:-rebase} (finish): refs/heads/conflicts onto $(git rev-parse main)
EOF
- test_cmp expect actual
-'
-
-test_expect_success 'rebase --apply reflog' '
- git checkout -b reflog-apply start &&
- old_head_reflog="$(git log -g --format=%gs -1 HEAD)" &&
-
- git rebase --apply Y &&
+ test_cmp expect actual &&
- git log -g --format=%gs -4 HEAD >actual &&
- cat >expect <<-EOF &&
- rebase finished: returning to refs/heads/reflog-apply
- rebase: Z
- rebase: checkout Y
- $old_head_reflog
+ # check there is only one new entry in the branch reflog
+ test_cmp_rev conflicts@{1} Q
+ '
+
+ test_expect_success "rebase $mode fast-forward reflog${reflog_action:+ GIT_REFLOG_ACTION=$reflog_action}" '
+ git checkout fast-forward &&
+ test_when_finished "git reset --hard X" &&
+
+ (
+ if test -n "$reflog_action"
+ then
+ GIT_REFLOG_ACTION="$reflog_action" &&
+ export GIT_REFLOG_ACTION
+ fi &&
+ git rebase $mode main
+ ) &&
+
+ git log -g --format=%gs -2 >actual &&
+ write_reflog_expect <<-EOF &&
+ ${reflog_action:-rebase} (finish): returning to refs/heads/fast-forward
+ ${reflog_action:-rebase} (start): checkout main
EOF
test_cmp expect actual &&
- git log -g --format=%gs -2 reflog-apply >actual &&
- cat >expect <<-EOF &&
- rebase finished: refs/heads/reflog-apply onto $(git rev-parse Y)
- branch: Created from start
+ git log -g --format=%gs -1 fast-forward >actual &&
+ write_reflog_expect <<-EOF &&
+ ${reflog_action:-rebase} (finish): refs/heads/fast-forward onto $(git rev-parse main)
EOF
- test_cmp expect actual
-'
+ test_cmp expect actual &&
+
+ # check there is only one new entry in the branch reflog
+ test_cmp_rev fast-forward@{1} X
+ '
+}
+
+test_reflog --merge
+test_reflog --merge my-reflog-action
+test_reflog --apply
+test_reflog --apply my-reflog-action
test_expect_success 'rebase -i onto unrelated history' '
git init unrelated &&
--
gitgitgadget
^ permalink raw reply related [relevance 1%]
* [PATCH 0/7] rebase: make reflog messages independent of the backend
@ 2022-02-21 11:10 3% Phillip Wood via GitGitGadget
2022-02-21 11:10 1% ` [PATCH 2/7] rebase --merge: fix reflog when continuing Phillip Wood via GitGitGadget
` (4 more replies)
0 siblings, 5 replies; 200+ results
From: Phillip Wood via GitGitGadget @ 2022-02-21 11:10 UTC (permalink / raw)
To: git; +Cc: Phillip Wood
This is a series of rebase reflog related patches with the aim of unifying
the reflog messages from the two rebase backends.
* improve rebase reflog test coverage
* rebase --merge: fix reflog messages for --continue and --skip
* rebase --apply: respect GIT_REFLOG_ACTION
* rebase --abort: improve reflog message
* unify reflog messages between the two rebase backends
This series is based on pw/use-inprocess-checkout-in-rebase
Phillip Wood (7):
rebase --apply: remove duplicated code
rebase --merge: fix reflog when continuing
rebase --merge: fix reflog message after skipping
rebase --apply: respect GIT_REFLOG_ACTION
rebase --apply: make reflog messages match rebase --merge
rebase --abort: improve reflog message
rebase: cleanup action handling
builtin/rebase.c | 144 ++++++++++++-----------------
sequencer.c | 5 ++
t/t3406-rebase-message.sh | 185 +++++++++++++++++++++++++++++++-------
3 files changed, 214 insertions(+), 120 deletions(-)
base-commit: 38c541ce94048cf72aa4f465be9314423a57f445
Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-1150%2Fphillipwood%2Fwip%2Frebase-reflog-fixes-v1
Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-1150/phillipwood/wip/rebase-reflog-fixes-v1
Pull-Request: https://github.com/gitgitgadget/git/pull/1150
--
gitgitgadget
^ permalink raw reply [relevance 3%]
* What's cooking in git.git (Feb 2022, #02; Wed, 9)
@ 2022-02-10 0:12 3% Junio C Hamano
0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2022-02-10 0:12 UTC (permalink / raw)
To: git
Here are the topics that have been cooking in my tree. Commits
prefixed with '+' are in 'next' (being in 'next' is a sign that a
topic is stable enough to be used and are candidate to be in a
future release). Commits prefixed with '-' are only in 'seen',
which means nothing more than that I have found them of interest for
some reason (like "it may have hard-to-resolve conflicts with
another topic already in flight" or "this may turn out to be
useful"). Do not read too much into a topic being in (or not in)
'seen'. The ones marked with '.' do not appear in any of the
integration branches, but I am still holding onto them.
The second batch of topics have been merged.
Copies of the source code to Git live in many repositories, and the
following is a list of the ones I push into or their mirrors. Some
repositories have only a subset of branches.
With maint, master, next, seen, todo:
git://git.kernel.org/pub/scm/git/git.git/
git://repo.or.cz/alt-git.git/
https://kernel.googlesource.com/pub/scm/git/git/
https://github.com/git/git/
https://gitlab.com/git-vcs/git/
With all the integration branches and topics broken out:
https://github.com/gitster/git/
Even though the preformatted documentation in HTML and man format
are not sources, they are published in these repositories for
convenience (replace "htmldocs" with "manpages" for the manual
pages):
git://git.kernel.org/pub/scm/git/git-htmldocs.git/
https://github.com/gitster/git-htmldocs.git/
Release tarballs are available at:
https://www.kernel.org/pub/software/scm/git/
--------------------------------------------------
[Graduated to 'master']
* ab/cat-file (2022-01-12) 12 commits
(merged to 'next' on 2022-01-12 at ee4d43041d)
+ cat-file: s/_/-/ in typo'd usage_msg_optf() message
+ cat-file: don't whitespace-pad "(...)" in SYNOPSIS and usage output
(merged to 'next' on 2022-01-05 at e145efa605)
+ cat-file: use GET_OID_ONLY_TO_DIE in --(textconv|filters)
+ object-name.c: don't have GET_OID_ONLY_TO_DIE imply *_QUIETLY
+ cat-file: correct and improve usage information
+ cat-file: fix remaining usage bugs
+ cat-file: make --batch-all-objects a CMDMODE
+ cat-file: move "usage" variable to cmd_cat_file()
+ cat-file docs: fix SYNOPSIS and "-h" output
+ parse-options API: add a usage_msg_optf()
+ cat-file tests: test messaging on bad objects/paths
+ cat-file tests: test bad usage
Assorted updates to "git cat-file", especially "-h".
source: <cover-v6-00.10-00000000000-20211228T132637Z-avarab@gmail.com>
source: <cover-0.2-00000000000-20220110T220553Z-avarab@gmail.com>
* ab/config-based-hooks-2 (2022-01-07) 17 commits
(merged to 'next' on 2022-01-19 at 594b6da22c)
+ run-command: remove old run_hook_{le,ve}() hook API
+ receive-pack: convert push-to-checkout hook to hook.h
+ read-cache: convert post-index-change to use hook.h
+ commit: convert {pre-commit,prepare-commit-msg} hook to hook.h
+ git-p4: use 'git hook' to run hooks
+ send-email: use 'git hook run' for 'sendemail-validate'
+ git hook run: add an --ignore-missing flag
+ hooks: convert worktree 'post-checkout' hook to hook library
+ hooks: convert non-worktree 'post-checkout' hook to hook library
+ merge: convert post-merge to use hook.h
+ am: convert applypatch-msg to use hook.h
+ rebase: convert pre-rebase to use hook.h
+ hook API: add a run_hooks_l() wrapper
+ am: convert {pre,post}-applypatch to use hook.h
+ gc: use hook library for pre-auto-gc hook
+ hook API: add a run_hooks() wrapper
+ hook: add 'run' subcommand
More "config-based hooks".
source: <cover-v6-00.17-00000000000-20211222T035755Z-avarab@gmail.com>
* en/merge-ort-restart-optim-fix (2022-01-17) 1 commit
(merged to 'next' on 2022-01-19 at 84da10b057)
+ merge-ort: avoid assuming all renames detected
The merge-ort misbehaved when merge.renameLimit configuration is
set too low and failed to find all renames.
source: <pull.1194.v2.git.git.1642443955836.gitgitgadget@gmail.com>
* en/plug-leaks-in-merge (2022-01-21) 2 commits
(merged to 'next' on 2022-01-26 at 0cf6aa0a2b)
+ merge: fix memory leaks in cmd_merge()
+ merge-ort: fix memory leak in merge_ort_internal()
Leakfix.
source: <pull.1200.git.git.1642664835.gitgitgadget@gmail.com>
* fs/ssh-signing-crlf (2022-01-07) 1 commit
(merged to 'next' on 2022-01-19 at 76b86faafb)
+ gpg-interface: trim CR from ssh-keygen
The code path that verifies signatures made with ssh were made to
work better on a system with CRLF line endings.
source: <20220107090735.580225-1-fs@gigacodes.de>
* gc/fetch-negotiate-only-early-return (2022-01-20) 4 commits
(merged to 'next' on 2022-01-20 at e7616428eb)
+ fetch: help translators by reusing the same message template
(merged to 'next' on 2022-01-19 at 0f15147cfa)
+ fetch --negotiate-only: do not update submodules
+ fetch: skip tasks related to fetching objects
+ fetch: use goto cleanup in cmd_fetch()
"git fetch --negotiate-only" is an internal command used by "git
push" to figure out which part of our history is missing from the
other side. It should never recurse into submodules even when
fetch.recursesubmodules configuration variable is set, nor it
should trigger "gc". The code has been tightened up to ensure it
only does common ancestry discovery and nothing else.
source: <20220119000056.58503-1-chooglen@google.com>
* jc/find-header (2022-01-06) 1 commit
(merged to 'next' on 2022-01-10 at 8a13b4f0b3)
+ receive-pack.c: consolidate find header logic
Code clean-up.
source: <pull.1125.v6.git.git.1641499655700.gitgitgadget@gmail.com>
* jc/mem-pool-alignment (2022-01-24) 1 commit
(merged to 'next' on 2022-01-26 at 057b6a78f5)
+ mem-pool: don't assume uintmax_t is aligned enough for all types
Update the logic to compute alignment requirement for our mem-pool.
source: <20220123203347.74869-1-jrtc27@jrtc27.com>
* jc/name-rev-stdin (2022-01-10) 2 commits
(merged to 'next' on 2022-01-19 at a58e05fabe)
+ name-rev.c: use strbuf_getline instead of limited size buffer
+ name-rev: deprecate --stdin in favor of --annotate-stdin
"git name-rev --stdin" does not behave like usual "--stdin" at
all. Start the process of renaming it to "--annotate-stdin".
source: <pull.1171.v7.git.git.1641425372.gitgitgadget@gmail.com>
* jc/qsort-s-alignment-fix (2022-01-07) 2 commits
(merged to 'next' on 2022-01-10 at 329fd6e09a)
+ stable-qsort: avoid using potentially unaligned access
+ compat/qsort_s.c: avoid using potentially unaligned access
Fix a hand-rolled alloca() imitation that may have violated
alignment requirement of data being sorted in compatibility
implementation of qsort_s() and stable qsort().
source: <f40c1b47-9aad-2dcc-ceeb-5dee2b517cd8@web.de>
source: <xmqqzgo76xpj.fsf@gitster.g>
* jc/reflog-parse-options (2022-01-10) 2 commits
(merged to 'next' on 2022-01-12 at 1659e49c4b)
+ builtin/reflog.c: use parse-options api for expire, delete subcommands
+ Merge branch 'ab/reflog-prep' into jc/reflog-parse-options
Use the parse-options API in "git reflog" command.
source: <pull.1175.v5.git.git.1641495981650.gitgitgadget@gmail.com>
* jh/p4-fix-use-of-process-error-exception (2022-01-06) 1 commit
(merged to 'next' on 2022-01-10 at 49d529bfd7)
+ git-p4: fix instantiation of CalledProcessError
(this branch is used by jh/p4-various-fixups.)
source: <20220106214156.90967-1-jholdsworth@nvidia.com>
* jh/p4-spawning-external-commands-cleanup (2022-01-06) 3 commits
(merged to 'next' on 2022-01-10 at 54b36b4e66)
+ git-p4: don't print shell commands as python lists
+ git-p4: pass command arguments as lists instead of using shell
+ git-p4: don't select shell mode using the type of the command argument
(this branch is used by jh/p4-various-fixups.)
source: <20220106214035.90725-1-jholdsworth@nvidia.com>
* js/sparse-vs-split-index (2022-01-23) 3 commits
(merged to 'next' on 2022-01-26 at 7443487955)
+ split-index: it really is incompatible with the sparse index
+ t1091: disable split index
+ sparse-index: sparse index is disallowed when split index is active
Mark in various places in the code that the sparse index and the
split index features are mutually incompatible.
source: <pull.1119.git.1642613379.gitgitgadget@gmail.com>
* js/test-unset-trace2-parents (2022-01-20) 1 commit
(merged to 'next' on 2022-01-20 at ebb085e3e4)
+ test-lib: unset trace2 parent envvars
Avoid tests that are run under GIT_TRACE2 set from failing
unnecessarily.
source: <82e51a52e20fbe13a5a898a0a2f6dbe1188e3fa3.1642116539.git.steadmon@google.com>
* jt/clone-not-quite-empty (2022-01-26) 1 commit
(merged to 'next' on 2022-01-26 at c3bb39676e)
+ clone: support unusual remote ref configurations
Cloning from a repository that does not yet have any branches or
tags but has other refs resulted in a "remote transport reported
error", which has been corrected.
source: <20220124180909.2437002-1-jonathantanmy@google.com>
* jt/conditional-config-on-remote-url (2022-01-18) 2 commits
(merged to 'next' on 2022-01-19 at 3c2df266eb)
+ config: include file if remote URL matches a glob
+ config: make git_config_include() static
The conditional inclusion mechanism of configuration files using
"[includeIf <condition>]" learns to base its decision on the
URL of the remote repository the repository interacts with.
source: <cover.1642527965.git.jonathantanmy@google.com>
* jt/sparse-checkout-leading-dir-fix (2022-01-21) 1 commit
(merged to 'next' on 2022-01-26 at 5611ce9047)
+ sparse-checkout: create leading directory
"git sparse-checkout init" failed to write into $GIT_DIR/info
directory when the repository was created without one, which has
been corrected to auto-create it.
source: <20220121174441.3991963-1-jonathantanmy@google.com>
* ms/update-index-racy (2022-01-07) 4 commits
(merged to 'next' on 2022-01-14 at 705a33f63b)
+ update-index: refresh should rewrite index in case of racy timestamps
+ t7508: add tests capturing racy timestamp handling
+ t7508: fix bogus mtime verification
+ test-lib: introduce API for verifying file mtime
"git update-index --refresh" has been taught to deal better with
racy timestamps (just like "git status" already does).
source: <pull.1105.v4.git.1641554252.gitgitgadget@gmail.com>
* pb/pull-rebase-autostash-fix (2022-01-14) 1 commit
(merged to 'next' on 2022-01-14 at 83a388a7e2)
+ pull --rebase: honor rebase.autostash when fast-forwarding
"git pull --rebase" ignored the rebase.autostash configuration
variable when the remote history is a descendant of our history,
which has been corrected.
source: <xmqqr19aayxp.fsf@gitster.g>
* po/readme-mention-contributor-hints (2022-01-17) 1 commit
(merged to 'next' on 2022-01-19 at 7e14690eb9)
+ README.md: add CodingGuidelines and a link for Translators
Doc update.
source: <pull.1115.v3.git.1642443491609.gitgitgadget@gmail.com>
* pw/add-p-hunk-split-fix (2022-01-12) 2 commits
(merged to 'next' on 2022-01-19 at ea57b2c9a6)
+ builtin add -p: fix hunk splitting
+ t3701: clean up hunk splitting tests
"git add -p" rewritten in C regressed hunk splitting in some cases,
which has been corrected.
source: <pull.1100.v2.git.1641899530.gitgitgadget@gmail.com>
* rs/apply-symlinks-use-strset (2022-01-07) 1 commit
(merged to 'next' on 2022-01-10 at 32497a67d5)
+ apply: use strsets to track symlinks
"git apply" (ab)used the util pointer of the string-list to keep
track of how each symbolic link needs to be handled, which has been
simplified by using strset.
source: <8739caad-aa3d-1f0f-b5dd-6174a8e059f6@web.de>
* rs/grep-expr-cleanup (2022-01-06) 4 commits
(merged to 'next' on 2022-01-10 at b70a3bb0fa)
+ grep: use grep_and_expr() in compile_pattern_and()
+ grep: extract grep_binexp() from grep_or_expr()
+ grep: use grep_not_expr() in compile_pattern_not()
+ grep: use grep_or_expr() in compile_pattern_or()
Code clean-up.
source: <cover.1641498525.git.me@ttaylorr.com>
* tl/doc-cli-options-first (2022-01-17) 1 commit
(merged to 'next' on 2022-01-19 at 9ec14cfe73)
+ git-cli.txt: clarify "options first and then args"
We explain that revs come first before the pathspec among command
line arguments, but did not spell out that dashed options come
before other args, which has been corrected.
source: <fe748304d94e0ae25fd3549aadc49cf951ff2d64.1642405806.git.dyroneteng@gmail.com>
--------------------------------------------------
[New Topics]
* ab/t0051-skip-on-non-windows (2022-02-04) 1 commit
- t0051: use "skip_all" under !MINGW in single-test file
Conditional test update.
Will merge to 'next'.
source: <patch-v2-1.1-1bc93bcba4b-20220204T134208Z-avarab@gmail.com>
* ab/hash-object-leakfix (2022-02-06) 1 commit
- hash-object: fix a trivial leak in --path
Trivial leakfix.
Will merge to 'next'.
source: <patch-1.1-53863df1455-20220205T000422Z-avarab@gmail.com>
* ab/release-transport-ls-refs-options (2022-02-06) 1 commit
- ls-remote & transport API: release "struct transport_ls_refs_options"
Will merge to 'next'.
source: <patch-1.1-e80e8f64eae-20220205T000809Z-avarab@gmail.com>
* js/bisect-in-c (2022-02-09) 11 commits
- bisect: no longer try to clean up left-over `.git/head-name` files
- bisect: remove Cogito-related code
- Turn `git bisect` into a full built-in.
- bisect--helper: using `--bisect-state` without an argument is a bug
- bisect: move even the option parsing to `bisect--helper`
- bisect--helper: make `--bisect-state` optional
- bisect--helper: align the sub-command order with git-bisect.sh
- bisect--helper: really retire `--bisect-autostart`
- bisect--helper: really retire --bisect-next-check
- bisect--helper: retire the --no-log option
- bisect run: fix the error message
Final bits of "git bisect.sh" have been rewritten in C.
source: <pull.1132.git.1643328752.gitgitgadget@gmail.com>
* js/scalar-diagnose (2022-02-06) 6 commits
- scalar: teach `diagnose` to gather loose objects information
- scalar: teach `diagnose` to gather packfile info
- scalar diagnose: include disk space information
- scalar: add `diagnose`
- scalar: validate the optional enlistment argument
- archive: optionally add "virtual" files
source: <pull.1128.v2.git.1644187146.gitgitgadget@gmail.com>
* js/short-help-outside-repo-fix (2022-02-08) 2 commits
- t0012: verify that built-ins handle `-h` even without gitdir
- checkout/fetch/pull/pack-objects: allow `-h` outside a repository
"git cmd -h" outside a repository should error out cleanly for many
commands, but instead it hit a BUG(), which has been corrected.
Will merge to 'next'.
source: <pull.1139.v2.git.1644319314.gitgitgadget@gmail.com>
* tb/midx-no-bitmap-for-no-objects (2022-02-09) 1 commit
- midx: prevent writing a .bitmap without any objects
When there is no object to write .bitmap file for, "git
multi-pack-index" triggered an error, instead of just skipping,
which has been corrected.
Will merge to 'next'.
source: <abc67d757cb6b244cf54b7b030985180ce134724.1644434802.git.me@ttaylorr.com>
* jc/cat-file-batch-commands (2022-02-08) 3 commits
. cat-file: add --batch-command mode
. cat-file: introduce batch_command enum to replace print_contents
. cat-file: rename cmdmode to transform_mode
Seems to make tests hang.
source: <pull.1212.v3.git.git.1644353884.gitgitgadget@gmail.com>
--------------------------------------------------
[Stalled]
* je/http-better-error-output (2021-12-03) 1 commit
. http-backend: give a hint that web browser access is not supported
When the http-backend program, which is the server-side component
for the smart HTTP transport, sends a "404 Not found" error, we
deliberately did not say anything to the requesting client. We now
send a message back to the browser to tell the user that they do
not want to visit the URL via their browser, instead of a totally
blank page.
Expecting a reroll.
Breaks its self tests.
cf. <7r23s082-o3q0-479o-srqn-r45q778s5nq7@vanv.qr>
source: <20211202102855.23907-1-jengelh@inai.de>
* cb/save-term-across-editor-invocation (2021-12-01) 3 commits
- fixup! editor: allow for saving/restoring terminal state
- editor: allow for saving/restoring terminal state
- terminal: teach save_term to fail when not foreground
Some editors are reported to leave the terminal in funny state
after they exit on Windows. Work it around by saving and restoring
the terminal state when needed.
Expecting a reroll.
cf. <CAPUEsphktbdxeV7hvF52Or3CVHS8oOk5-WV=xfEZa8kfCVVnVg@mail.gmail.com>
source: <20211202035446.1154-1-carenas@gmail.com>
--------------------------------------------------
[Cooking]
* ar/submodule-update (2022-02-08) 16 commits
. submodule: move core cmd_update() logic to C
. submodule--helper: move functions around
. submodule--helper update-clone: learn --init
. submodule--helper: remove ensure-core-worktree
. submodule--helper run-update-procedure: learn --remote
. submodule--helper run-update-procedure: remove --suboid
. submodule--helper: reorganize code for sh to C conversion
. submodule--helper: remove update-module-mode
. submodule tests: test for init and update failure output
. submodule--helper: don't use bitfield indirection for parse_options()
. builtin/submodule--helper.c: rename option variables to "opt"
. builtin/submodule--helper.c: reformat designated initializers
. submodule--helper: run update using child process struct
. submodule--helper: allow setting superprefix for init_submodule()
. submodule--helper: refactor get_submodule_displaypath()
. submodule--helper: get remote names from any repository
Rewrite of "git submodule update" in C.
Does not seem to play well with other topics in flight.
source: <20220208083952.35036-1-chooglen@google.com>
* pw/use-in-process-checkout-in-rebase (2022-01-26) 14 commits
- rebase -m: don't fork git checkout
- rebase --apply: set ORIG_HEAD correctly
- rebase --apply: fix reflog
- reset_head(): take struct rebase_head_opts
- rebase: cleanup reset_head() calls
- create_autostash(): remove unneeded parameter
- reset_head(): make default_reflog_action optional
- reset_head(): factor out ref updates
- reset_head(): remove action parameter
- rebase --apply: don't run post-checkout hook if there is an error
- rebase: do not remove untracked files on checkout
- rebase: pass correct arguments to post-checkout hook
- t5403: refactor rebase post-checkout hook tests
- rebase: factor out checkout for up to date branch
Use an internal call to reset_head() helper function instead of
spawning "git checkout" in "rebase", and update code paths that are
involved in the change.
Will merge to 'next'.
source: <pull.1049.v3.git.1643202349.gitgitgadget@gmail.com>
* ab/no-errno-from-resolve-ref-unsafe (2022-01-26) 2 commits
(merged to 'next' on 2022-02-04 at d98254efe0)
+ refs API: remove "failure_errno" from refs_resolve_ref_unsafe()
+ sequencer: don't use die_errno() on refs_resolve_ref_unsafe() failure
Remaining code-clean-up.
Will merge to 'master'.
source: <cover-v4-0.2-00000000000-20220126T143427Z-avarab@gmail.com>
* gh/doc-typos (2022-01-26) 2 commits
(merged to 'next' on 2022-02-04 at b71e1bc746)
+ Documentation/config/pgp.txt: add missing apostrophe
+ Documentation/config/pgp.txt: replace stray <TAB> character with <SPC>
Typofix.
Will merge to 'master'.
source: <20220126121426.53799-1-greg@hurrell.net>
* jc/doc-log-messages (2022-01-27) 3 commits
(merged to 'next' on 2022-02-04 at cf136572ce)
+ SubmittingPatches: explain why we care about log messages
+ CodingGuidelines: hint why we value clearly written log messages
+ SubmittingPatches: write problem statement in the log in the present tense
Update the contributor-facing documents on proposed log messages.
Will merge to 'master'.
source: <20220126234205.2923388-1-gitster@pobox.com>
* en/fetch-negotiation-default-fix (2022-02-02) 3 commits
(merged to 'next' on 2022-02-08 at 95a8a91e97)
+ repo-settings: rename the traditional default fetch.negotiationAlgorithm
+ repo-settings: fix error handling for unknown values
+ repo-settings: fix checking for fetch.negotiationAlgorithm=default
Fix interaction between fetch.negotiationAlgorithm and
feature.experimental configuration variables.
Will merge to 'master'.
source: <pull.1131.v4.git.1643773361.gitgitgadget@gmail.com>
* en/sparse-checkout-leakfix (2022-01-28) 1 commit
(merged to 'next' on 2022-02-04 at 10ca176008)
+ sparse-checkout: fix a couple minor memory leaks
Leakfix.
Will merge to 'master'.
source: <pull.1189.git.git.1643335098710.gitgitgadget@gmail.com>
* js/diff-filter-negation-fix (2022-01-28) 3 commits
(merged to 'next' on 2022-02-08 at fe004a4c2c)
+ diff-filter: be more careful when looking for negative bits
+ diff.c: move the diff filter bits definitions up a bit
+ docs(diff): lose incorrect claim about `diff-files --diff-filter=A`
"git diff --diff-filter=aR" is now parsed correctly.
Will merge to 'master'.
source: <f1f027ad61beb1bd0dee73acbffdee5c0f967e9a.1643371370.git.gitgitgadget@gmail.com>
* js/no-more-legacy-stash (2022-01-27) 4 commits
(merged to 'next' on 2022-02-08 at 5cecfdbd58)
+ stash: stop warning about the obsolete `stash.useBuiltin` config setting
+ stash: remove documentation for `stash.useBuiltin`
+ add: remove support for `git-legacy-stash`
+ git-sh-setup: remove remnant bits referring to `git-legacy-stash`
Removal of unused code and doc.
Will merge to 'master'.
source: <pull.1133.git.1643321031.gitgitgadget@gmail.com>
* js/scalar-global-options (2022-01-28) 1 commit
(merged to 'next' on 2022-02-09 at 8af744524c)
+ scalar: accept -C and -c options before the subcommand
Scalar update.
Will merge to 'master'.
source: <pull.1130.v2.git.1643380317358.gitgitgadget@gmail.com>
* rc/negotiate-only-typofix (2022-01-28) 1 commit
(merged to 'next' on 2022-02-04 at 62b947ddbf)
+ fetch: fix negotiate-only error message
Typofix.
Will merge to 'master'.
source: <20220128143602.31842-1-robert@coup.net.nz>
* rj/receive-pack-abort-upon-disconnect (2022-01-28) 1 commit
- receive-pack: check if client is alive before completing the push
"git push" may be killed by the user when the server side has
finished receiving all data and is about to commit the result.
Give the latter a better chance to notice such situation and abort
processing the ref updates.
Needs more work?
cf. <220204.864k5e4yvf.gmgdl@evledraar.gmail.com>
source: <20220128194811.3396281-1-robin.jarry@6wind.com>
* jz/patch-id-hunk-header-parsing-fix (2022-02-02) 2 commits
(merged to 'next' on 2022-02-09 at 8665cb204a)
+ patch-id: fix scan_hunk_header on diffs with 1 line of before/after
+ patch-id: fix antipatterns in tests
Unlike "git apply", "git patch-id" did not handle patches with
hunks that has only 1 line in either preimage or postimage, which
has been corrected.
Will merge to 'master'.
source: <20220202041945.10077-1-jerry@skydio.com>
source: <20220202042015.10115-1-jerry@skydio.com>
* tg/fetch-prune-exit-code-fix (2022-01-31) 1 commit
(merged to 'next' on 2022-02-04 at 8af6ab286d)
+ fetch --prune: exit with error if pruning fails
When "git fetch --prune" failed to prune the refs it wanted to
prune, the command issued error messages but exited with exit
status 0, which has been corrected.
Will merge to 'master'.
source: <20220131133047.1885074-1-t.gummerer@gmail.com>
* ab/do-not-hide-failures-in-git-dot-pm (2022-02-01) 1 commit
(merged to 'next' on 2022-02-08 at 1a8001f83e)
+ perl Git.pm: don't ignore signalled failure in _cmd_close()
Git.pm update.
Will merge to 'master'.
source: <patch-1.1-86353c3b366-20220201T205218Z-avarab@gmail.com>
* ab/object-file-api-updates (2022-02-04) 11 commits
- object-file API: pass an enum to read_object_with_reference()
- object-file.c: add a literal version of write_object_file_prepare()
- object-file API: have hash_object_file() take "enum object_type"
- object API: rename hash_object_file_literally() to write_*()
- object-file API: split up and simplify check_object_signature()
- object API: make check_object_signature() oideq()-like, move docs
- object API: correct "buf" v.s. "map" mismatch in *.c and *.h
- object-file API: have write_object_file() take "enum object_type"
- object-file API: add a format_object_header() function
- object-file API: return "void", not "int" from hash_object_file()
- object-file.c: split up declaration of unrelated variables
Object-file API shuffling.
source: <cover-v2-00.11-00000000000-20220204T135005Z-avarab@gmail.com>
* cb/clear-quarantine-early-on-all-ref-update-errors (2022-02-01) 1 commit
- receive-pack: purge temporary data if no command is ready to run
Check if "receive-pack" will do any ref updates (various conditions
could reject a push) before received objects are taken out of the
temporary directory used for quarantine purposes, so that a push
that is known-to-fail will not leave crufts that a future "gc"
needs to clean up.
Will merge to 'next'.
source: <20220129063538.24038-1-bojun.cbj@gmail.com>
* hn/reftable-tests (2022-01-31) 3 commits
(merged to 'next' on 2022-02-09 at 5e22946a1f)
+ t5312: prepare for reftable
+ t1405: mark test that checks existence as REFFILES
+ t1405: explictly delete reflogs for reftable
Prepare more test scripts for the introduction of reftable.
Will merge to 'master'.
source: <pull.1209.git.git.1643651420.gitgitgadget@gmail.com>
* ja/i18n-common-messages (2022-02-04) 4 commits
- i18n: fix some misformated placeholders in command synopsis
- i18n: remove from i18n strings that do not hold translatable parts
- i18n: factorize "invalid value" messages
- i18n: factorize more 'incompatible options' messages
Unify more messages to help l10n.
Will merge to 'next'?
source: <pull.1123.v4.git.1643666870.gitgitgadget@gmail.com>
* tk/subtree-merge-not-ff-only (2022-02-01) 1 commit
(merged to 'next' on 2022-02-09 at 849450010e)
+ subtree: force merge commit
When "git subtree" wants to create a merge, it used "git merge" and
let it be affected by end-user's "merge.ff" configuration, which
has been corrected.
Will merge to 'master'.
source: <20220201172601.262718-1-aclopte@gmail.com>
* ab/complete-show-all-commands (2022-02-02) 2 commits
(merged to 'next' on 2022-02-09 at be3b7cf4e4)
+ completion: add a GIT_COMPLETION_SHOW_ALL_COMMANDS
+ completion tests: re-source git-completion.bash in a subshell
The command line completion script (in contrib/) learns an option
to complete all Git subcommands, including the ones that are
normally hidden.
Will merge to 'master'.
source: <cover-v2-0.2-00000000000-20220202T111228Z-avarab@gmail.com>
* en/merge-tree (2022-02-02) 16 commits
- git-merge-tree.txt: add a section on potentional usage mistakes
- merge-tree: add a --allow-unrelated-histories flag
- merge-tree: allow `ls-files -u` style info to be NUL terminated
- merge-tree: provide easy access to `ls-files -u` style info
- merge-tree: provide a list of which files have conflicts
- merge-ort: provide a merge_get_conflicted_files() helper function
- merge-tree: support including merge messages in output
- merge-ort: allow update messages to be written to different file stream
- merge-ort: split out a separate display_update_messages() function
- diff: allow diff_warn_rename_limit to write somewhere besides stderr
- Introduce a variant of the `warning()` function that takes a `FILE *`
- merge-tree: implement real merges
- merge-tree: add option parsing and initial shell for real merge function
- merge-tree: move logic for existing merge into new function
- merge-tree: rename merge_trees() to trivial_merge_trees()
- Merge branch 'en/remerge-diff' into en/merge-trees
(this branch uses en/remerge-diff.)
A new command is introduced that takes two commits and computes a
tree that would be contained in the resulting merge commit, if the
histories leading to these two commits were to be merged, and is
added as a new mode of "git merge-tree" subcommand.
source: <pull.1122.v3.git.1643787281.gitgitgadget@gmail.com>
* ll/doc-mktree-typofix (2022-02-02) 1 commit
(merged to 'next' on 2022-02-08 at fe98063f1a)
+ fix typo in git-mktree.txt
Typofix.
Will merge to 'master'.
source: <pull.1207.git.git.1643792450866.gitgitgadget@gmail.com>
* po/doc-check-ignore-markup-fix (2022-02-03) 1 commit
(merged to 'next' on 2022-02-09 at 47631df376)
+ doc: check-ignore: code-quote an exclamation mark
Typofix.
Will merge to 'master'.
source: <20220203101643.1987-1-philipoakley@iee.email>
* sy/diff-usage-typofix (2022-02-02) 1 commit
(merged to 'next' on 2022-02-04 at 28a4186a44)
+ builtin/diff.c: fix "git-diff" usage string typo
Typofix.
Will merge to 'master'.
source: <20220202072844.35545-1-shaoxuan.yuan02@gmail.com>
* sy/modernize-t-lib-read-tree-m-3way (2022-02-02) 2 commits
(merged to 'next' on 2022-02-09 at 8b7ecb4e99)
+ t/lib-read-tree-m-3way: indent with tabs
+ t/lib-read-tree-m-3way: modernize style
Style updates on a test script helper.
Will merge to 'master'.
source: <20220123060318.471414-1-shaoxuan.yuan02@gmail.com>
* ab/auto-detect-zlib-compress2 (2022-01-26) 1 commit
(merged to 'next' on 2022-02-08 at 9922938a6a)
+ compat: auto-detect if zlib has uncompress2()
Notice older zlib to enable our replacement uncompress2()
automatically.
Will merge to 'master'.
source: <xmqqr18x3s5s.fsf@gitster.g>
* js/apply-partial-clone-filters-recursively (2022-02-09) 1 commit
- clone, submodule: pass partial clone filters to submodules
"git clone --filter=... --recurse-submodules" only makes the
top-level a partial clone, while submodules are fully cloned. This
behaviour is changed to pass the same filter down to the submodules.
Will merge to 'next'?
source: <690d2316ad518ea4551821b2b3aa652996858475.1644034886.git.steadmon@google.com>
* rs/parse-options-lithelp-help (2022-01-20) 1 commit
(merged to 'next' on 2022-02-04 at 74bc57e8fa)
+ parse-options: document bracketing of argh
Comment update.
Will merge to 'master'.
source: <c6ab4408-1091-4d14-849e-afe5f3053e8b@web.de>
* jh/p4-various-fixups (2022-01-16) 23 commits
. git-p4: seperate multiple statements onto seperate lines
. git-p4: move inline comments to line above
. git-p4: only seperate code blocks by a single empty line
. git-p4: compare to singletons with "is" and "is not"
. git-p4: normalize indentation of lines in conditionals
. git-p4: ensure there is a single space around all operators
. git-p4: ensure every comment has a single #
. git-p4: remove spaces between dictionary keys and colons
. git-p4: remove redundant backslash-continuations inside brackets
. git-p4: remove extraneous spaces before function arguments
. git-p4: place a single space after every comma
. git-p4: removed brackets when assigning multiple return values
. git-p4: remove spaces around default arguments
. git-p4: remove padding from lists, tuples and function arguments
. git-p4: sort and de-duplcate pylint disable list
. git-p4: remove commented code
. git-p4: convert descriptive class and function comments into docstrings
. git-p4: improve consistency of docstring formatting
. git-p4: indent with 4-spaces
. git-p4: remove unneeded semicolons from statements
. git-p4: add blank lines between functions and class definitions
. Merge branch 'jh/p4-spawning-external-commands-cleanup' into jh/p4-various-fixups
. Merge branch 'jh/p4-fix-use-of-process-error-exception' into jh/p4-various-fixups
Various cleanups to "git p4".
Breaks its own test suite.
source: <20220116160550.514637-1-jholdsworth@nvidia.com>
* rs/bisect-executable-not-found (2022-01-19) 4 commits
- bisect--helper: double-check run command on exit code 126 and 127
- bisect: document run behavior with exit codes 126 and 127
- bisect--helper: release strbuf and strvec on run error
- bisect--helper: report actual bisect_state() argument on error
A not-so-common mistake is to write a script to feed "git bisect
run" without making it executable, in which case all tests will
exit with 126 or 127 error codes, even on revisions that are marked
as good. Try to recoginse this situation and stop iteration early.
Will merge to 'next'?
source: <fead25d6-6f5f-487a-ad4c-0657fe9785fd@www.fastmail.com>
* ds/sparse-checkout-requires-per-worktree-config (2022-02-08) 6 commits
- config: make git_configset_get_string_tmp() private
- worktree: copy sparse-checkout patterns and config on add
- sparse-checkout: set worktree-config correctly
- config: add repo_config_set_worktree_gently()
- worktree: create init_worktree_config()
- Documentation: add extensions.worktreeConfig details
"git sparse-checkout" wants to work with per-worktree configration,
but did not work well in a worktree attached to a bare repository.
Will merge to 'next'?
cf. <20220204081336.3194538-1-newren@gmail.com>
cf. <CAPig+cRrRxuTeByhKkLs_KDaWY8-r4+jrwT83A-r+sBQsmebMw@mail.gmail.com>
source: <pull.1101.v6.git.1644269583.gitgitgadget@gmail.com>
* ps/avoid-unnecessary-hook-invocation-with-packed-refs (2022-01-17) 6 commits
- refs: skip hooks when deleting uncovered packed refs
- refs: do not execute reference-transaction hook on packing refs
- refs: demonstrate excessive execution of the reference-transaction hook
- refs: allow skipping the reference-transaction hook
- refs: allow passing flags when beginning transactions
- refs: extract packed_refs_delete_refs() to allow control of transaction
Because a deletion of ref would need to remove it from both the
loose ref store and the packed ref store, a delete-ref operation
that logically removes one ref may end up invoking ref-transaction
hook twice, which has been corrected.
Will merge to 'next'.
source: <cover.1642406989.git.ps@pks.im>
* ld/sparse-index-bash-completion (2022-02-08) 3 commits
(merged to 'next' on 2022-02-08 at ac1e968ab8)
+ completion: handle unusual characters for sparse-checkout
+ completion: improve sparse-checkout cone mode directory completion
+ completion: address sparse-checkout issues
The command line completion (in contrib/) learns to complete
arguments give to "git sparse-checkout" command.
Will merge to 'master'.
source: <pull.1108.v7.git.1644255105.gitgitgadget@gmail.com>
* bc/clarify-eol-attr (2022-01-12) 2 commits
(merged to 'next' on 2022-02-04 at dc1db4bd21)
+ docs: correct documentation about eol attribute
+ t0027: add tests for eol without text in .gitattributes
Doc and test update around the eol attribute.
Will merge to 'master'.
source: <20220111021507.531736-1-sandals@crustytoothpaste.net>
* jz/rev-list-exclude-first-parent-only (2022-01-12) 1 commit
(merged to 'next' on 2022-02-09 at f26a82c66a)
+ git-rev-list: add --exclude-first-parent-only flag
"git log" and friends learned an option --exclude-first-parent-only
to propagate UNINTERESTING bit down only along the first-parent
chain, just like --first-parent option shows commits that lack the
UNINTERESTING bit only along the first-parent chain.
Will merge to 'master'.
source: <20220111213941.30129-1-jerry@skydio.com>
* en/present-despite-skipped (2022-01-14) 6 commits
- Accelerate clear_skip_worktree_from_present_files() by caching
- Update documentation related to sparsity and the skip-worktree bit
- repo_read_index: clear SKIP_WORKTREE bit from files present in worktree
- unpack-trees: fix accidental loss of user changes
- t1011: add testcase demonstrating accidental loss of user modifications
- Merge branch 'vd/sparse-clean-etc' into en/present-despite-skipped
(this branch uses vd/sparse-clean-etc.)
In sparse-checkouts, files mis-marked as missing from the working tree
could lead to later problems. Such files were hard to discover, and
harder to correct. Automatically detecting and correcting the marking
of such files has been added to avoid these problems.
Will merge to 'next'?
cf. <20220204081336.3194538-1-newren@gmail.com>
source: <pull.1114.v2.git.1642175983.gitgitgadget@gmail.com>
* bc/csprng-mktemps (2022-01-17) 2 commits
(merged to 'next' on 2022-02-04 at 2e32375c73)
+ wrapper: use a CSPRNG to generate random file names
+ wrapper: add a helper to generate numbers from a CSPRNG
Pick a better random number generator and use it when we prepare
temporary filenames.
Will merge to 'master'.
source: <20220117215617.843190-1-sandals@crustytoothpaste.net>
* vd/sparse-clean-etc (2022-01-13) 9 commits
(merged to 'next' on 2022-02-09 at 5928dbd25e)
+ update-index: reduce scope of index expansion in do_reupdate
+ update-index: integrate with sparse index
+ update-index: add tests for sparse-checkout compatibility
+ checkout-index: integrate with sparse index
+ checkout-index: add --ignore-skip-worktree-bits option
+ checkout-index: expand sparse checkout compatibility tests
+ clean: integrate with sparse index
+ reset: reorder wildcard pathspec conditions
+ reset: fix validation in sparse index test
(this branch is used by en/present-despite-skipped.)
"git update-index", "git checkout-index", and "git clean" are
taught to work better with the sparse checkout feature.
Will merge to 'master'.
source: <pull.1109.v2.git.1641924306.gitgitgadget@gmail.com>
* en/remerge-diff (2022-02-02) 11 commits
(merged to 'next' on 2022-02-08 at 68b9a8a38b)
+ diff-merges: avoid history simplifications when diffing merges
+ merge-ort: mark conflict/warning messages from inner merges as omittable
+ show, log: include conflict/warning messages in --remerge-diff headers
+ diff: add ability to insert additional headers for paths
+ merge-ort: format messages slightly different for use in headers
+ merge-ort: mark a few more conflict messages as omittable
+ merge-ort: capture and print ll-merge warnings in our preferred fashion
+ ll-merge: make callers responsible for showing warnings
+ log: clean unneeded objects during `log --remerge-diff`
+ show, log: provide a --remerge-diff capability
+ Merge branch 'ns/tmp-objdir' into en/remerge-diff
(this branch is used by en/merge-tree.)
"git log --remerge-diff" shows the difference from mechanical merge
result and the merge result that is actually recorded.
Will merge to 'master'.
source: <pull.1103.v5.git.1643769457.gitgitgadget@gmail.com>
* bs/forbid-i18n-of-protocol-token-in-fetch-pack (2021-12-22) 2 commits
- fixup! fetch-pack: parameterize message containing 'ready' keyword
- fetch-pack: parameterize message containing 'ready' keyword
L10n support for a few error messages.
Expecting an ack for fixup.
source: <20211222075805.19027-1-bagasdotme@gmail.com>
* gc/branch-recurse-submodules (2022-02-04) 7 commits
- branch.c: use 'goto cleanup' in setup_tracking() to fix memory leaks
- branch: add --recurse-submodules option for branch creation
- builtin/branch: consolidate action-picking logic in cmd_branch()
- branch: add a dry_run parameter to create_branch()
- branch: make create_branch() always create a branch
- branch: move --set-upstream-to behavior to dwim_and_setup_tracking()
- Merge branch 'js/branch-track-inherit' into gc/branch-recurse-submodules
"git branch" learned the "--recurse-submodules" option.
Will merge to 'next'.
source: <20220129000446.99261-1-chooglen@google.com>
* hn/reftable-coverity-fixes (2022-01-20) 17 commits
(merged to 'next' on 2022-02-08 at 1baf327a66)
+ reftable: add print functions to the record types
+ reftable: make reftable_record a tagged union
+ reftable: remove outdated file reftable.c
+ reftable: implement record equality generically
+ reftable: make reftable-record.h function signatures const correct
+ reftable: handle null refnames in reftable_ref_record_equal
+ reftable: drop stray printf in readwrite_test
+ reftable: order unittests by complexity
+ reftable: all xxx_free() functions accept NULL arguments
+ reftable: fix resource warning
+ reftable: ignore remove() return value in stack_test.c
+ reftable: check reftable_stack_auto_compact() return value
+ reftable: fix resource leak blocksource.c
+ reftable: fix resource leak in block.c error path
+ reftable: fix OOB stack write in print functions
+ Merge branch 'hn/create-reflog-simplify' into hn/reftable-coverity-fixes
+ Merge branch 'hn/reftable' into hn/reftable-coverity-fixes
Problems identified by Coverity in the reftable code have been
corrected.
Will merge to 'master'.
source: <pull.1152.v6.git.git.1642691534.gitgitgadget@gmail.com>
* tb/midx-bitmap-corruption-fix (2022-01-27) 9 commits
(merged to 'next' on 2022-02-08 at a8cc333d78)
+ pack-bitmap.c: gracefully fallback after opening pack/MIDX
+ midx: read `RIDX` chunk when present
+ t/lib-bitmap.sh: parameterize tests over reverse index source
+ t5326: move tests to t/lib-bitmap.sh
+ t5326: extract `test_rev_exists`
+ t5326: drop unnecessary setup
+ pack-revindex.c: instrument loading on-disk reverse index
+ midx.c: make changing the preferred pack safe
+ t5326: demonstrate bitmap corruption after permutation
A bug that made multi-pack bitmap and the object order out-of-sync
(hence the .midx data gets corrupted) has been fixed.
Will merge to 'master'.
source: <cover.1643150456.git.me@ttaylorr.com>
* ab/grep-patterntype (2022-02-04) 9 commits
- grep: simplify config parsing and option parsing
- grep.c: do "if (bool && memchr())" not "if (memchr() && bool)"
- grep.h: make "grep_opt.pattern_type_option" use its enum
- grep API: call grep_config() after grep_init()
- grep.c: don't pass along NULL callback value
- built-ins: trust the "prefix" from run_builtin()
- grep tests: add missing "grep.patternType" config tests
- log tests: check if grep_config() is called by "log"-like cmds
- grep.h: remove unused "regex_t regexp" from grep_opt
Some code clean-up in the "git grep" machinery.
Looking good, except for the last step.
Code-wise, it is tempted to call it a victory after squashing the
fix-up in, but that does not fix the proposed log message, so...
Expecting a reroll to update its tests, but otherwise looks ready.
cf. <xmqqv8xui5ah.fsf@gitster.g>
cf. <xmqqmtj6jkuk.fsf@gitster.g>
source: <cover-v10-0.9-00000000000-20220204T211534Z-avarab@gmail.com>
* js/use-builtin-add-i (2021-12-01) 2 commits
- add -i: default to the built-in implementation
- t2016: require the PERL prereq only when necessary
"git add -i" was rewritten in C some time ago and has been in
testing; the reimplementation is now exposed to general public by
default.
On hold.
What's the status of the "known breakage"?
Are we ready to switch if we wanted to?
There are known breakages on macOS.
cf. <nycvar.QRO.7.76.6.2112021832060.63@tvgsbejvaqbjf.bet>
source: <pull.1087.git.1638281655.gitgitgadget@gmail.com>
* ab/ambiguous-object-name (2022-01-27) 7 commits
- object-name: re-use "struct strbuf" in show_ambiguous_object()
- object-name: iterate ambiguous objects before showing header
- object-name: show date for ambiguous tag objects
- object-name: make ambiguous object output translatable
- object-name: explicitly handle bad tags in show_ambiguous_object()
- object-name: explicitly handle OBJ_BAD in show_ambiguous_object()
- object-name tests: add tests for ambiguous object blind spots
Error output given in response to an ambiguous object name has been
improved.
Will merge to 'next'?
source: <cover-v8-0.7-00000000000-20220127T052116Z-avarab@gmail.com>
* tl/ls-tree-oid-only (2022-02-08) 13 commits
- ls-tree.c: support --object-only option for "git-ls-tree"
- ls-tree: introduce function "fast_path()"
- ls-tree.c: introduce "--format" option
- cocci: allow padding with `strbuf_addf()`
- ls-tree: introduce struct "show_tree_data"
- ls-tree: slightly refactor `show_tree()`
- ls-tree: fix "--name-only" and "--long" combined use bug
- ls-tree: simplify nesting if/else logic in "show_tree()"
- ls-tree: rename "retval" to "recurse" in "show_tree()"
- ls-tree: use "size_t", not "int" for "struct strbuf"'s "len"
- ls-tree: use "enum object_type", not {blob,tree,commit}_type
- ls-tree: add missing braces to "else" arms
- ls-tree: remove commented-out code
"git ls-tree" learns "--oid-only" option, similar to "--name-only",
and more generalized "--format" option.
source: <cover.1644319434.git.dyroneteng@gmail.com>
* jh/builtin-fsmonitor-part2 (2021-12-25) 31 commits
- fixup! t7527: create test for fsmonitor--daemon
- fixup! t/perf/p7519: speed up test on Windows
- t7527: test status with untracked-cache and fsmonitor--daemon
- fsmonitor: force update index after large responses
- fsmonitor--daemon: use a cookie file to sync with file system
- fsmonitor--daemon: periodically truncate list of modified files
- t/perf/p7519: add fsmonitor--daemon test cases
- t/perf/p7519: speed up test on Windows
- t/helper/test-chmtime: skip directories on Windows
- t/perf: avoid copying builtin fsmonitor files into test repo
- t7527: create test for fsmonitor--daemon
- t/helper/fsmonitor-client: create IPC client to talk to FSMonitor Daemon
- help: include fsmonitor--daemon feature flag in version info
- fsmonitor--daemon: implement handle_client callback
- compat/fsmonitor/fsm-listen-darwin: implement FSEvent listener on MacOS
- compat/fsmonitor/fsm-listen-darwin: add macos header files for FSEvent
- compat/fsmonitor/fsm-listen-win32: implement FSMonitor backend on Windows
- fsmonitor--daemon: create token-based changed path cache
- fsmonitor--daemon: define token-ids
- fsmonitor--daemon: add pathname classification
- fsmonitor--daemon: implement 'start' command
- fsmonitor--daemon: implement 'run' command
- compat/fsmonitor/fsm-listen-darwin: stub in backend for Darwin
- compat/fsmonitor/fsm-listen-win32: stub in backend for Windows
- fsmonitor--daemon: implement 'stop' and 'status' commands
- fsmonitor--daemon: add a built-in fsmonitor daemon
- fsmonitor: document builtin fsmonitor
- fsmonitor: use IPC to query the builtin FSMonitor daemon
- fsmonitor: config settings are repository-specific
- fsmonitor-ipc: create client routines for git-fsmonitor--daemon
- fsmonitor: enhance existing comments
Built-in fsmonitor (part 2).
Expecting a reroll.
Seems that the discussion stalled.
cf. <d9c3ef61-768c-3560-2858-3438c355a742@jeffhostetler.com>
source: <pull.1041.v4.git.1634826309.gitgitgadget@gmail.com>
* es/superproject-aware-submodules (2022-02-03) 4 commits
- submodule: record superproject gitdir during 'update'
- submodule: record superproject gitdir during absorbgitdirs
- introduce submodule.superprojectGitDir record
- t7400-submodule-basic: modernize inspect() helper
A configuration variable in a submodule points at the location of
the superproject it is bound to (RFC).
source: <20220203215914.683922-1-emilyshaffer@google.com>
* ab/only-single-progress-at-once (2022-02-03) 9 commits
- pack-bitmap-write.c: don't return without stop_progress()
- progress API: unify stop_progress{,_msg}(), fix trace2 bug
- progress.c: refactor stop_progress{,_msg}() to use helpers
- progress.c: use dereferenced "progress" variable, not "(*p_progress)"
- progress.h: format and be consistent with progress.c naming
- progress.c tests: test some invalid usage
- progress.c tests: make start/stop commands on stdin
- progress.c test helper: add missing braces
- leak tests: fix a memory leak in "test-progress" helper
Further tweaks on progress API.
Will merge to 'next'?
source: <cover-v9-0.9-00000000000-20220203T213350Z-avarab@gmail.com>
^ permalink raw reply [relevance 3%]
* What's cooking in git.git (Feb 2022, #01; Thu, 3)
@ 2022-02-04 5:22 3% Junio C Hamano
0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2022-02-04 5:22 UTC (permalink / raw)
To: git
Here are the topics that have been cooking in my tree. Commits
prefixed with '+' are in 'next' (being in 'next' is a sign that a
topic is stable enough to be used and are candidate to be in a
future release). Commits prefixed with '-' are only in 'seen',
which means nothing more than that I have found them of interest for
some reason (like "it may have hard-to-resolve conflicts with
another topic already in flight" or "this may turn out to be
useful"). Do not read too much into a topic being in (or not in)
'seen'. The ones marked with '.' do not appear in any of the
integration branches, but I am still holding onto them.
Will merge a bunch of topics as the first batch in this cycle down
to 'master' (aka 'main'), hopefully tomorrow.
Many topics have sketchy or even empty topic description in the list
below; help to fill them in is very much appreciated ;-)
Copies of the source code to Git live in many repositories, and the
following is a list of the ones I push into or their mirrors. Some
repositories have only a subset of branches.
With maint, master, next, seen, todo:
git://git.kernel.org/pub/scm/git/git.git/
git://repo.or.cz/alt-git.git/
https://kernel.googlesource.com/pub/scm/git/git/
https://github.com/git/git/
https://gitlab.com/git-vcs/git/
With all the integration branches and topics broken out:
https://github.com/gitster/git/
Even though the preformatted documentation in HTML and man format
are not sources, they are published in these repositories for
convenience (replace "htmldocs" with "manpages" for the manual
pages):
git://git.kernel.org/pub/scm/git/git-htmldocs.git/
https://github.com/gitster/git-htmldocs.git/
Release tarballs are available at:
https://www.kernel.org/pub/software/scm/git/
--------------------------------------------------
[Graduated to 'master']
* en/keep-cwd (2022-01-26) 1 commit
(merged to 'next' on 2022-01-26 at b2518a683c)
+ sequencer, stash: fix running from worktree subdir
Fix a regression in 2.35 that roke the use of "rebase" and "stash"
in a secondary worktree.
source: <pull.1205.git.git.1643161426138.gitgitgadget@gmail.com>
--------------------------------------------------
[New Topics]
* jt/clone-not-quite-empty (2022-01-26) 1 commit
(merged to 'next' on 2022-01-26 at c3bb39676e)
+ clone: support unusual remote ref configurations
Cloning from a repository that does not yet have any branches or
tags but has other refs resulted in a "remote transport reported
error", which has been corrected.
Will merge to 'master'.
source: <20220124180909.2437002-1-jonathantanmy@google.com>
* ab/no-errno-from-resolve-ref-unsafe (2022-01-26) 2 commits
- refs API: remove "failure_errno" from refs_resolve_ref_unsafe()
- sequencer: don't use die_errno() on refs_resolve_ref_unsafe() failure
Remaining code-clean-up.
Will merge to 'next'.
source: <cover-v4-0.2-00000000000-20220126T143427Z-avarab@gmail.com>
* gh/doc-typos (2022-01-26) 2 commits
- Documentation/config/pgp.txt: add missing apostrophe
- Documentation/config/pgp.txt: replace stray <TAB> character with <SPC>
Typofix.
Will merge to 'next'.
source: <20220126121426.53799-1-greg@hurrell.net>
* jc/doc-log-messages (2022-01-27) 3 commits
- SubmittingPatches: explain why we care about log messages
- CodingGuidelines: hint why we value clearly written log messages
- SubmittingPatches: write problem statement in the log in the present tense
Update the contributor-facing documents on proposed log messages.
Will merge to 'next'?
source: <20220126234205.2923388-1-gitster@pobox.com>
* en/fetch-negotiation-default-fix (2022-02-02) 3 commits
- repo-settings: rename the traditional default fetch.negotiationAlgorithm
- repo-settings: fix error handling for unknown values
- repo-settings: fix checking for fetch.negotiationAlgorithm=default
Fix interaction between fetch.negotiationAlgorithm and
feature.experimental configuration variables.
Will merge to 'next'.
source: <pull.1131.v4.git.1643773361.gitgitgadget@gmail.com>
* en/sparse-checkout-leakfix (2022-01-28) 1 commit
- sparse-checkout: fix a couple minor memory leaks
Leakfix.
Will merge to 'next'.
source: <pull.1189.git.git.1643335098710.gitgitgadget@gmail.com>
* js/diff-filter-negation-fix (2022-01-28) 3 commits
- diff-filter: be more careful when looking for negative bits
- diff.c: move the diff filter bits definitions up a bit
- docs(diff): lose incorrect claim about `diff-files --diff-filter=A`
"git diff --diff-filter=aR" is now parsed correctly.
Will merge to 'next'.
source: <pull.1127.v3.git.1643371370.gitgitgadget@gmail.com>
* js/no-more-legacy-stash (2022-01-27) 4 commits
- stash: stop warning about the obsolete `stash.useBuiltin` config setting
- stash: remove documentation for `stash.useBuiltin`
- add: remove support for `git-legacy-stash`
- git-sh-setup: remove remnant bits referring to `git-legacy-stash`
Removal of unused code and doc.
Will merge to 'next'.
source: <pull.1133.git.1643321031.gitgitgadget@gmail.com>
* js/scalar-global-options (2022-01-28) 1 commit
- scalar: accept -C and -c options before the subcommand
Scalar update.
Will merge to 'next'.
source: <pull.1130.v2.git.1643380317358.gitgitgadget@gmail.com>
* rc/negotiate-only-typofix (2022-01-28) 1 commit
- fetch: fix negotiate-only error message
Typofix.
Will merge to 'next'.
source: <20220128143602.31842-1-robert@coup.net.nz>
* rj/receive-pack-abort-upon-disconnect (2022-01-28) 1 commit
- receive-pack: check if client is alive before completing the push
"git push" may be killed by the user when the server side has
finished receiving all data and is about to commit the result.
Give the latter a better chance to notice such situation and abort
processing the ref updates.
Will merge to 'next'?
source: <20220128194811.3396281-1-robin.jarry@6wind.com>
* jz/patch-id-hunk-header-parsing-fix (2022-02-02) 2 commits
- patch-id: fix scan_hunk_header on diffs with 1 line of before/after
- patch-id: fix antipatterns in tests
Unlike "git apply", "git patch-id" did not handle patches with
hunks that has only 1 line in either preimage or postimage, which
has been corrected.
Will merge to 'next'.
source: <20220202041945.10077-1-jerry@skydio.com>
source: <20220202042015.10115-1-jerry@skydio.com>
* tg/fetch-prune-exit-code-fix (2022-01-31) 1 commit
- fetch --prune: exit with error if pruning fails
When "git fetch --prune" failed to prune the refs it wanted to
prune, the command issued error messages but exited with exit
status 0, which has been corrected.
Will merge to 'next'.
source: <20220131133047.1885074-1-t.gummerer@gmail.com>
* ab/do-not-hide-failures-in-git-dot-pm (2022-02-01) 1 commit
- perl Git.pm: don't ignore signalled failure in _cmd_close()
Git.pm update.
Will merge to 'next'.
source: <patch-1.1-86353c3b366-20220201T205218Z-avarab@gmail.com>
* ab/object-file-api-updates (2022-02-01) 10 commits
- object-file API: pass an enum to read_object_with_reference()
- object-file.c: add a literal version of write_object_file_prepare()
- object-file API: replace check_object_signature() with stream_*
- object-file API: have hash_object_file() take "enum object_type"
- object-file API: replace some use of check_object_signature()
- object-file API: provide a hash_object_file_oideq()
- object-file API: have write_object_file() take "enum object_type"
- object-file API: add a format_object_header() function
- object-file API: return "void", not "int" from hash_object_file()
- object-file.c: split up declaration of unrelated variables
source: <cover-00.10-00000000000-20220201T144803Z-avarab@gmail.com>
* cb/clear-quarantine-early-on-all-ref-update-errors (2022-02-01) 1 commit
- receive-pack: purge temporary data if no command is ready to run
Check if "receive-pack" will do any ref updates (various conditions
could reject a push) before received objects are taken out of the
temporary directory used for quarantine purposes, so that a push
that is known-to-fail will not leave crufts that a future "gc"
needs to clean up.
Will merge to 'next'?
source: <20220129063538.24038-1-bojun.cbj@gmail.com>
* hn/reftable-tests (2022-01-31) 3 commits
- t5312: prepare for reftable
- t1405: mark test that checks existence as REFFILES
- t1405: explictly delete reflogs for reftable
Prepare more test scripts for the introduction of reftable.
Will merge to 'next'.
source: <pull.1209.git.git.1643651420.gitgitgadget@gmail.com>
* ja/i18n-common-messages (2022-01-31) 5 commits
- i18n: fix some misformated placeholders in command synopsis
- i18n: remove from i18n strings that do not hold translatable parts
- i18n: factorize "invalid value" messages
- SQUASH???
- i18n: factorize more 'incompatible options' messages
Unify more messages to help l10n.
Will merge to 'next' after squashing the fix-up in.
source: <pull.1123.v4.git.1643666870.gitgitgadget@gmail.com>
* tk/subtree-merge-not-ff-only (2022-02-01) 1 commit
- subtree: force merge commit
When "git subtree" wants to create a merge, it used "git merge" and
let it be affected by end-user's "merge.ff" configuration, which
has been corrected.
Will merge to 'next'.
source: <20220201172601.262718-1-aclopte@gmail.com>
* ab/complete-show-all-commands (2022-02-02) 2 commits
- completion: add a GIT_COMPLETION_SHOW_ALL_COMMANDS
- completion tests: re-source git-completion.bash in a subshell
The command line completion script (in contrib/) learns an option
to complete all Git subcommands, including the ones that are
normally hidden.
Will merge to 'next'.
source: <cover-v2-0.2-00000000000-20220202T111228Z-avarab@gmail.com>
* en/merge-tree (2022-02-02) 16 commits
- git-merge-tree.txt: add a section on potentional usage mistakes
- merge-tree: add a --allow-unrelated-histories flag
- merge-tree: allow `ls-files -u` style info to be NUL terminated
- merge-tree: provide easy access to `ls-files -u` style info
- merge-tree: provide a list of which files have conflicts
- merge-ort: provide a merge_get_conflicted_files() helper function
- merge-tree: support including merge messages in output
- merge-ort: allow update messages to be written to different file stream
- merge-ort: split out a separate display_update_messages() function
- diff: allow diff_warn_rename_limit to write somewhere besides stderr
- Introduce a variant of the `warning()` function that takes a `FILE *`
- merge-tree: implement real merges
- merge-tree: add option parsing and initial shell for real merge function
- merge-tree: move logic for existing merge into new function
- merge-tree: rename merge_trees() to trivial_merge_trees()
- Merge branch 'en/remerge-diff' into en/merge-trees
(this branch uses en/remerge-diff.)
A new command is introduced that takes two commits and computes a
tree that would be contained in the resulting merge commit, if the
histories leading to these two commits were to be merged, and is
added as a new mode of "git merge-tree" subcommand.
source: <pull.1122.v3.git.1643787281.gitgitgadget@gmail.com>
* ll/doc-mktree-typofix (2022-02-02) 1 commit
- fix typo in git-mktree.txt
Typofix.
Will merge to 'next'.
source: <pull.1207.git.git.1643792450866.gitgitgadget@gmail.com>
* po/doc-check-ignore-markup-fix (2022-02-03) 1 commit
- doc: check-ignore: code-quote an exclamation mark
Typofix.
Will merge to 'next'.
source: <20220203101643.1987-1-philipoakley@iee.email>
* sy/diff-usage-typofix (2022-02-02) 1 commit
- builtin/diff.c: fix "git-diff" usage string typo
Typofix.
Will merge to 'next'.
source: <20220202072844.35545-1-shaoxuan.yuan02@gmail.com>
* sy/modernize-t-lib-read-tree-m-3way (2022-02-02) 2 commits
- t/lib-read-tree-m-3way: indent with tabs
- t/lib-read-tree-m-3way: modernize style
Style updates on a test script helper.
Will merge to 'next'.
source: <20220123060318.471414-1-shaoxuan.yuan02@gmail.com>
--------------------------------------------------
[Stalled]
* je/http-better-error-output (2021-12-03) 1 commit
. http-backend: give a hint that web browser access is not supported
When the http-backend program, which is the server-side component
for the smart HTTP transport, sends a "404 Not found" error, we
deliberately did not say anything to the requesting client. We now
send a message back to the browser to tell the user that they do
not want to visit the URL via their browser, instead of a totally
blank page.
Expecting a reroll.
Breaks its self tests.
cf. <7r23s082-o3q0-479o-srqn-r45q778s5nq7@vanv.qr>
source: <20211202102855.23907-1-jengelh@inai.de>
* cb/save-term-across-editor-invocation (2021-12-01) 3 commits
- fixup! editor: allow for saving/restoring terminal state
- editor: allow for saving/restoring terminal state
- terminal: teach save_term to fail when not foreground
Some editors are reported to leave the terminal in funny state
after they exit on Windows. Work it around by saving and restoring
the terminal state when needed.
Expecting a reroll.
cf. <CAPUEsphktbdxeV7hvF52Or3CVHS8oOk5-WV=xfEZa8kfCVVnVg@mail.gmail.com>
source: <20211202035446.1154-1-carenas@gmail.com>
* ar/submodule-update (2022-01-28) 9 commits
. submodule: move core cmd_update() logic to C
. submodule tests: test for init and update failure output
. submodule--helper: don't use bitfield indirection for parse_options()
. builtin/submodule--helper.c: rename option variables to "opt"
. builtin/submodule--helper.c: reformat designated initializers
. submodule--helper: run update using child process struct
. submodule--helper: allow setting superprefix for init_submodule()
. submodule--helper: refactor get_submodule_displaypath()
. submodule--helper: get remote names from any repository
Rewrite of "git submodule update" in C.
source: <cover-v5-0.9-00000000000-20220128T125206Z-avarab@gmail.com>
--------------------------------------------------
[Cooking]
* jc/mem-pool-alignment (2022-01-24) 1 commit
(merged to 'next' on 2022-01-26 at 057b6a78f5)
+ mem-pool: don't assume uintmax_t is aligned enough for all types
Update the logic to compute alignment requirement for our mem-pool.
Will merge to 'master'.
source: <20220123203347.74869-1-jrtc27@jrtc27.com>
* ab/auto-detect-zlib-compress2 (2022-01-26) 1 commit
- compat: auto-detect if zlib has uncompress2()
Notice older zlib to enable our replacement uncompress2()
automatically.
Will merge to 'next'.
source: <xmqqr18x3s5s.fsf@gitster.g>
* en/plug-leaks-in-merge (2022-01-21) 2 commits
(merged to 'next' on 2022-01-26 at 0cf6aa0a2b)
+ merge: fix memory leaks in cmd_merge()
+ merge-ort: fix memory leak in merge_ort_internal()
Leakfix.
Will merge to 'master'.
source: <pull.1200.git.git.1642664835.gitgitgadget@gmail.com>
* js/apply-partial-clone-filters-recursively (2022-01-21) 1 commit
- clone, submodule: pass partial clone filters to submodules
"git clone --filter=... --recurse-submodules" only makes the
top-level a partial clone, while submodules are fully cloned. This
behaviour is changed to pass the same filter down to the submodules.
It is unclear passing all filters down is a good idea. It
definitely is contrary to the project norm to flip the default
instead of starting the new behaviour as an optional behaviour.
cf. <xmqqsftgbkvm.fsf@gitster.g>
source: <50ebf7bd39adf34fa4ada27cd433d81b5381abe5.1642735881.git.steadmon@google.com>
* js/sparse-vs-split-index (2022-01-23) 3 commits
(merged to 'next' on 2022-01-26 at 7443487955)
+ split-index: it really is incompatible with the sparse index
+ t1091: disable split index
+ sparse-index: sparse index is disallowed when split index is active
Mark in various places in the code that the sparse index and the
split index features are mutually incompatible.
Will merge to 'master'.
source: <pull.1119.git.1642613379.gitgitgadget@gmail.com>
* js/test-unset-trace2-parents (2022-01-20) 1 commit
(merged to 'next' on 2022-01-20 at ebb085e3e4)
+ test-lib: unset trace2 parent envvars
Avoid tests that are run under GIT_TRACE2 set from failing
unnecessarily.
Will merge to 'master'.
source: <82e51a52e20fbe13a5a898a0a2f6dbe1188e3fa3.1642116539.git.steadmon@google.com>
* jt/sparse-checkout-leading-dir-fix (2022-01-21) 1 commit
(merged to 'next' on 2022-01-26 at 5611ce9047)
+ sparse-checkout: create leading directory
"git sparse-checkout init" failed to write into $GIT_DIR/info
directory when the repository was created without one, which has
been corrected to auto-create it.
Will merge to 'master'.
source: <20220121174441.3991963-1-jonathantanmy@google.com>
* rs/parse-options-lithelp-help (2022-01-20) 1 commit
- parse-options: document bracketing of argh
Comment update.
Will merge to 'next'.
source: <c6ab4408-1091-4d14-849e-afe5f3053e8b@web.de>
* en/merge-ort-restart-optim-fix (2022-01-17) 1 commit
(merged to 'next' on 2022-01-19 at 84da10b057)
+ merge-ort: avoid assuming all renames detected
The merge-ort misbehaved when merge.renameLimit configuration is
set too low and failed to find all renames.
Will merge to 'master'.
source: <pull.1194.v2.git.git.1642443955836.gitgitgadget@gmail.com>
* jh/p4-various-fixups (2022-01-16) 23 commits
. git-p4: seperate multiple statements onto seperate lines
. git-p4: move inline comments to line above
. git-p4: only seperate code blocks by a single empty line
. git-p4: compare to singletons with "is" and "is not"
. git-p4: normalize indentation of lines in conditionals
. git-p4: ensure there is a single space around all operators
. git-p4: ensure every comment has a single #
. git-p4: remove spaces between dictionary keys and colons
. git-p4: remove redundant backslash-continuations inside brackets
. git-p4: remove extraneous spaces before function arguments
. git-p4: place a single space after every comma
. git-p4: removed brackets when assigning multiple return values
. git-p4: remove spaces around default arguments
. git-p4: remove padding from lists, tuples and function arguments
. git-p4: sort and de-duplcate pylint disable list
. git-p4: remove commented code
. git-p4: convert descriptive class and function comments into docstrings
. git-p4: improve consistency of docstring formatting
. git-p4: indent with 4-spaces
. git-p4: remove unneeded semicolons from statements
. git-p4: add blank lines between functions and class definitions
. Merge branch 'jh/p4-spawning-external-commands-cleanup' into jh/p4-various-fixups
. Merge branch 'jh/p4-fix-use-of-process-error-exception' into jh/p4-various-fixups
(this branch uses jh/p4-fix-use-of-process-error-exception and jh/p4-spawning-external-commands-cleanup.)
Various cleanups to "git p4".
Breaks its own test suite.
source: <20220116160550.514637-1-jholdsworth@nvidia.com>
* po/readme-mention-contributor-hints (2022-01-17) 1 commit
(merged to 'next' on 2022-01-19 at 7e14690eb9)
+ README.md: add CodingGuidelines and a link for Translators
Doc update.
Will merge to 'master'.
source: <pull.1115.v3.git.1642443491609.gitgitgadget@gmail.com>
* tl/doc-cli-options-first (2022-01-17) 1 commit
(merged to 'next' on 2022-01-19 at 9ec14cfe73)
+ git-cli.txt: clarify "options first and then args"
We explain that revs come first before the pathspec among command
line arguments, but did not spell out that dashed options come
before other args, which has been corrected.
Will merge to 'master'.
source: <fe748304d94e0ae25fd3549aadc49cf951ff2d64.1642405806.git.dyroneteng@gmail.com>
* rs/bisect-executable-not-found (2022-01-19) 4 commits
- bisect--helper: double-check run command on exit code 126 and 127
- bisect: document run behavior with exit codes 126 and 127
- bisect--helper: release strbuf and strvec on run error
- bisect--helper: report actual bisect_state() argument on error
A not-so-common mistake is to write a script to feed "git bisect
run" without making it executable, in which case all tests will
exit with 126 or 127 error codes, even on revisions that are marked
as good. Try to recoginse this situation and stop iteration early.
Will merge to 'next'?
source: <fead25d6-6f5f-487a-ad4c-0657fe9785fd@www.fastmail.com>
* ds/sparse-checkout-requires-per-worktree-config (2022-01-31) 5 commits
- worktree: copy sparse-checkout patterns and config on add
- sparse-checkout: set worktree-config correctly
- config: add repo_config_set_worktree_gently()
- worktree: create init_worktree_config()
- Documentation: add extensions.worktreeConfig details
"git sparse-checkout" wants to work with per-worktree configration,
but did not work well in a worktree attached to a bare repository.
What's the doneness of this one?
source: <pull.1101.v5.git.1643641259.gitgitgadget@gmail.com>
* pw/add-p-hunk-split-fix (2022-01-12) 2 commits
(merged to 'next' on 2022-01-19 at ea57b2c9a6)
+ builtin add -p: fix hunk splitting
+ t3701: clean up hunk splitting tests
"git add -p" rewritten in C regressed hunk splitting in some cases,
which has been corrected.
Will merge to 'master'.
source: <pull.1100.v2.git.1641899530.gitgitgadget@gmail.com>
* gc/fetch-negotiate-only-early-return (2022-01-20) 4 commits
(merged to 'next' on 2022-01-20 at e7616428eb)
+ fetch: help translators by reusing the same message template
(merged to 'next' on 2022-01-19 at 0f15147cfa)
+ fetch --negotiate-only: do not update submodules
+ fetch: skip tasks related to fetching objects
+ fetch: use goto cleanup in cmd_fetch()
"git fetch --negotiate-only" is an internal command used by "git
push" to figure out which part of our history is missing from the
other side. It should never recurse into submodules even when
fetch.recursesubmodules configuration variable is set, nor it
should trigger "gc". The code has been tightened up to ensure it
only does common ancestry discovery and nothing else.
Will merge to 'master'.
source: <20220119000056.58503-1-chooglen@google.com>
* jh/p4-fix-use-of-process-error-exception (2022-01-06) 1 commit
(merged to 'next' on 2022-01-10 at 49d529bfd7)
+ git-p4: fix instantiation of CalledProcessError
(this branch is used by jh/p4-various-fixups.)
Will merge to 'master'.
source: <20220106214156.90967-1-jholdsworth@nvidia.com>
* jh/p4-spawning-external-commands-cleanup (2022-01-06) 3 commits
(merged to 'next' on 2022-01-10 at 54b36b4e66)
+ git-p4: don't print shell commands as python lists
+ git-p4: pass command arguments as lists instead of using shell
+ git-p4: don't select shell mode using the type of the command argument
(this branch is used by jh/p4-various-fixups.)
Will merge to 'master'.
source: <20220106214035.90725-1-jholdsworth@nvidia.com>
* pb/pull-rebase-autostash-fix (2022-01-14) 1 commit
(merged to 'next' on 2022-01-14 at 83a388a7e2)
+ pull --rebase: honor rebase.autostash when fast-forwarding
"git pull --rebase" ignored the rebase.autostash configuration
variable when the remote history is a descendant of our history,
which has been corrected.
Will merge to 'master'.
source: <xmqqr19aayxp.fsf@gitster.g>
* rs/grep-expr-cleanup (2022-01-06) 4 commits
(merged to 'next' on 2022-01-10 at b70a3bb0fa)
+ grep: use grep_and_expr() in compile_pattern_and()
+ grep: extract grep_binexp() from grep_or_expr()
+ grep: use grep_not_expr() in compile_pattern_not()
+ grep: use grep_or_expr() in compile_pattern_or()
Code clean-up.
Will merge to 'master'.
source: <cover.1641498525.git.me@ttaylorr.com>
* fs/ssh-signing-crlf (2022-01-07) 1 commit
(merged to 'next' on 2022-01-19 at 76b86faafb)
+ gpg-interface: trim CR from ssh-keygen
The code path that verifies signatures made with ssh were made to
work better on a system with CRLF line endings.
Will merge to 'master'.
source: <20220107090735.580225-1-fs@gigacodes.de>
* jc/qsort-s-alignment-fix (2022-01-07) 2 commits
(merged to 'next' on 2022-01-10 at 329fd6e09a)
+ stable-qsort: avoid using potentially unaligned access
+ compat/qsort_s.c: avoid using potentially unaligned access
Fix a hand-rolled alloca() imitation that may have violated
alignment requirement of data being sorted in compatibility
implementation of qsort_s() and stable qsort().
Will merge to 'master'.
source: <f40c1b47-9aad-2dcc-ceeb-5dee2b517cd8@web.de>
source: <xmqqzgo76xpj.fsf@gitster.g>
* ps/avoid-unnecessary-hook-invocation-with-packed-refs (2022-01-17) 6 commits
- refs: skip hooks when deleting uncovered packed refs
- refs: do not execute reference-transaction hook on packing refs
- refs: demonstrate excessive execution of the reference-transaction hook
- refs: allow skipping the reference-transaction hook
- refs: allow passing flags when beginning transactions
- refs: extract packed_refs_delete_refs() to allow control of transaction
Because a deletion of ref would need to remove it from both the
loose ref store and the packed ref store, a delete-ref operation
that logically removes one ref may end up invoking ref-transaction
hook twice, which has been corrected.
Will merge to 'next'?
source: <cover.1642406989.git.ps@pks.im>
* rs/apply-symlinks-use-strset (2022-01-07) 1 commit
(merged to 'next' on 2022-01-10 at 32497a67d5)
+ apply: use strsets to track symlinks
"git apply" (ab)used the util pointer of the string-list to keep
track of how each symbolic link needs to be handled, which has been
simplified by using strset.
Will merge to 'master'.
source: <8739caad-aa3d-1f0f-b5dd-6174a8e059f6@web.de>
* ld/sparse-index-bash-completion (2022-02-03) 3 commits
. completion: handle unusual characters for sparse-checkout
. completion: improve sparse-checkout cone mode directory completion
. completion: address sparse-checkout issues
The command line completion (in contrib/) learns to complete
arguments give to "git sparse-checkout" command.
Seems to break CI.
source: <pull.1108.v5.git.1643921091.gitgitgadget@gmail.com>
* bc/clarify-eol-attr (2022-01-12) 2 commits
- docs: correct documentation about eol attribute
- t0027: add tests for eol without text in .gitattributes
Doc and test update around the eol attribute.
Will merge to 'next'.
source: <20220111021507.531736-1-sandals@crustytoothpaste.net>
* jz/rev-list-exclude-first-parent-only (2022-01-12) 1 commit
- git-rev-list: add --exclude-first-parent-only flag
"git log" and friends learned an option --exclude-first-parent-only
to propagate UNINTERESTING bit down only along the first-parent
chain, just like --first-parent option shows commits that lack the
UNINTERESTING bit only along the first-parent chain.
Will merge to 'next'.
source: <20220111213941.30129-1-jerry@skydio.com>
* en/present-despite-skipped (2022-01-14) 6 commits
- Accelerate clear_skip_worktree_from_present_files() by caching
- Update documentation related to sparsity and the skip-worktree bit
- repo_read_index: clear SKIP_WORKTREE bit from files present in worktree
- unpack-trees: fix accidental loss of user changes
- t1011: add testcase demonstrating accidental loss of user modifications
- Merge branch 'vd/sparse-clean-etc' into en/present-despite-skipped
(this branch uses vd/sparse-clean-etc.)
In sparse-checkouts, files mis-marked as missing from the working tree
could lead to later problems. Such files were hard to discover, and
harder to correct. Automatically detecting and correcting the marking
of such files has been added to avoid these problems.
Will merge to 'next'?
source: <pull.1114.v2.git.1642175983.gitgitgadget@gmail.com>
* bc/csprng-mktemps (2022-01-17) 2 commits
- wrapper: use a CSPRNG to generate random file names
- wrapper: add a helper to generate numbers from a CSPRNG
Pick a better random number generator and use it when we prepare
temporary filenames.
Will merge to 'next'?
Are we solving the right problem?
cf. <220118.86zgntpegy.gmgdl@evledraar.gmail.com>
source: <20220117215617.843190-1-sandals@crustytoothpaste.net>
* jc/reflog-parse-options (2022-01-10) 2 commits
(merged to 'next' on 2022-01-12 at 1659e49c4b)
+ builtin/reflog.c: use parse-options api for expire, delete subcommands
+ Merge branch 'ab/reflog-prep' into jc/reflog-parse-options
Use the parse-options API in "git reflog" command.
Will merge to 'master'.
source: <pull.1175.v5.git.git.1641495981650.gitgitgadget@gmail.com>
* vd/sparse-clean-etc (2022-01-13) 9 commits
- update-index: reduce scope of index expansion in do_reupdate
- update-index: integrate with sparse index
- update-index: add tests for sparse-checkout compatibility
- checkout-index: integrate with sparse index
- checkout-index: add --ignore-skip-worktree-bits option
- checkout-index: expand sparse checkout compatibility tests
- clean: integrate with sparse index
- reset: reorder wildcard pathspec conditions
- reset: fix validation in sparse index test
(this branch is used by en/present-despite-skipped.)
"git update-index", "git checkout-index", and "git clean" are
taught to work better with the sparse checkout feature.
Will merge to 'next'.
source: <pull.1109.v2.git.1641924306.gitgitgadget@gmail.com>
* ms/update-index-racy (2022-01-07) 4 commits
(merged to 'next' on 2022-01-14 at 705a33f63b)
+ update-index: refresh should rewrite index in case of racy timestamps
+ t7508: add tests capturing racy timestamp handling
+ t7508: fix bogus mtime verification
+ test-lib: introduce API for verifying file mtime
"git update-index --refresh" has been taught to deal better with
racy timestamps (just like "git status" already does).
Will merge to 'master'.
source: <pull.1105.v4.git.1641554252.gitgitgadget@gmail.com>
* jc/find-header (2022-01-06) 1 commit
(merged to 'next' on 2022-01-10 at 8a13b4f0b3)
+ receive-pack.c: consolidate find header logic
Code clean-up.
Will merge to 'master'.
source: <pull.1125.v6.git.git.1641499655700.gitgitgadget@gmail.com>
* jc/name-rev-stdin (2022-01-10) 2 commits
(merged to 'next' on 2022-01-19 at a58e05fabe)
+ name-rev.c: use strbuf_getline instead of limited size buffer
+ name-rev: deprecate --stdin in favor of --annotate-stdin
"git name-rev --stdin" does not behave like usual "--stdin" at
all. Start the process of renaming it to "--annotate-stdin".
Will merge to 'master'.
source: <pull.1171.v7.git.git.1641425372.gitgitgadget@gmail.com>
* en/remerge-diff (2022-02-02) 11 commits
- diff-merges: avoid history simplifications when diffing merges
- merge-ort: mark conflict/warning messages from inner merges as omittable
- show, log: include conflict/warning messages in --remerge-diff headers
- diff: add ability to insert additional headers for paths
- merge-ort: format messages slightly different for use in headers
- merge-ort: mark a few more conflict messages as omittable
- merge-ort: capture and print ll-merge warnings in our preferred fashion
- ll-merge: make callers responsible for showing warnings
- log: clean unneeded objects during `log --remerge-diff`
- show, log: provide a --remerge-diff capability
- Merge branch 'ns/tmp-objdir' into en/remerge-diff
(this branch is used by en/merge-tree.)
"git log --remerge-diff" shows the difference from mechanical merge
result and the merge result that is actually recorded.
Will merge to 'next'?
source: <pull.1103.v5.git.1643769457.gitgitgadget@gmail.com>
* bs/forbid-i18n-of-protocol-token-in-fetch-pack (2021-12-22) 2 commits
- fixup! fetch-pack: parameterize message containing 'ready' keyword
- fetch-pack: parameterize message containing 'ready' keyword
L10n support for a few error messages.
Expecting an ack for fixup.
source: <20211222075805.19027-1-bagasdotme@gmail.com>
* gc/branch-recurse-submodules (2022-02-01) 7 commits
- branch.c: use 'goto cleanup' in setup_tracking() to fix memory leaks
- branch: add --recurse-submodules option for branch creation
- builtin/branch: consolidate action-picking logic in cmd_branch()
- branch: add a dry_run parameter to create_branch()
- branch: make create_branch() always create a branch
- branch: move --set-upstream-to behavior to dwim_and_setup_tracking()
- Merge branch 'js/branch-track-inherit' into gc/branch-recurse-submodules
"git branch" learned the "--recurse-submodules" option.
Will merge to 'next'.
source: <20220129000446.99261-1-chooglen@google.com>
* hn/reftable-coverity-fixes (2022-01-20) 17 commits
- reftable: add print functions to the record types
- reftable: make reftable_record a tagged union
- reftable: remove outdated file reftable.c
- reftable: implement record equality generically
- reftable: make reftable-record.h function signatures const correct
- reftable: handle null refnames in reftable_ref_record_equal
- reftable: drop stray printf in readwrite_test
- reftable: order unittests by complexity
- reftable: all xxx_free() functions accept NULL arguments
- reftable: fix resource warning
- reftable: ignore remove() return value in stack_test.c
- reftable: check reftable_stack_auto_compact() return value
- reftable: fix resource leak blocksource.c
- reftable: fix resource leak in block.c error path
- reftable: fix OOB stack write in print functions
- Merge branch 'hn/create-reflog-simplify' into hn/reftable-coverity-fixes
- Merge branch 'hn/reftable' into hn/reftable-coverity-fixes
Problems identified by Coverity in the reftable code have been
corrected.
Will merge to 'next'.
source: <pull.1152.v6.git.git.1642691534.gitgitgadget@gmail.com>
* tb/midx-bitmap-corruption-fix (2022-01-27) 9 commits
- pack-bitmap.c: gracefully fallback after opening pack/MIDX
- midx: read `RIDX` chunk when present
- t/lib-bitmap.sh: parameterize tests over reverse index source
- t5326: move tests to t/lib-bitmap.sh
- t5326: extract `test_rev_exists`
- t5326: drop unnecessary setup
- pack-revindex.c: instrument loading on-disk reverse index
- midx.c: make changing the preferred pack safe
- t5326: demonstrate bitmap corruption after permutation
A bug that made multi-pack bitmap and the object order out-of-sync
(hence the .midx data gets corrupted) has been fixed.
Will merge to 'next'.
source: <cover.1643150456.git.me@ttaylorr.com>
* pw/fix-some-issues-in-reset-head (2022-01-26) 14 commits
- rebase -m: don't fork git checkout
- rebase --apply: set ORIG_HEAD correctly
- rebase --apply: fix reflog
- reset_head(): take struct rebase_head_opts
- rebase: cleanup reset_head() calls
- create_autostash(): remove unneeded parameter
- reset_head(): make default_reflog_action optional
- reset_head(): factor out ref updates
- reset_head(): remove action parameter
- rebase --apply: don't run post-checkout hook if there is an error
- rebase: do not remove untracked files on checkout
- rebase: pass correct arguments to post-checkout hook
- t5403: refactor rebase post-checkout hook tests
- rebase: factor out checkout for up to date branch
Use an internal call to reset_head() helper function instead of
spawning "git checkout" in "rebase", and update code paths that are
involved in the change.
Will merge to 'next'?
May want to rename the topic branch to "pw/use-in-process-checkout-in-rebase"
or something before doing so.
source: <pull.1049.v3.git.1643202349.gitgitgadget@gmail.com>
* ab/cat-file (2022-01-12) 12 commits
(merged to 'next' on 2022-01-12 at ee4d43041d)
+ cat-file: s/_/-/ in typo'd usage_msg_optf() message
+ cat-file: don't whitespace-pad "(...)" in SYNOPSIS and usage output
(merged to 'next' on 2022-01-05 at e145efa605)
+ cat-file: use GET_OID_ONLY_TO_DIE in --(textconv|filters)
+ object-name.c: don't have GET_OID_ONLY_TO_DIE imply *_QUIETLY
+ cat-file: correct and improve usage information
+ cat-file: fix remaining usage bugs
+ cat-file: make --batch-all-objects a CMDMODE
+ cat-file: move "usage" variable to cmd_cat_file()
+ cat-file docs: fix SYNOPSIS and "-h" output
+ parse-options API: add a usage_msg_optf()
+ cat-file tests: test messaging on bad objects/paths
+ cat-file tests: test bad usage
Assorted updates to "git cat-file", especially "-h".
Will merge to 'master'.
source: <cover-v6-00.10-00000000000-20211228T132637Z-avarab@gmail.com>
source: <cover-0.2-00000000000-20220110T220553Z-avarab@gmail.com>
* ab/grep-patterntype (2022-01-27) 10 commits
- SQUASH???
- grep: simplify config parsing and option parsing
- grep.c: do "if (bool && memchr())" not "if (memchr() && bool)"
- grep.h: make "grep_opt.pattern_type_option" use its enum
- grep API: call grep_config() after grep_init()
- grep.c: don't pass along NULL callback value
- built-ins: trust the "prefix" from run_builtin()
- grep tests: add missing "grep.patternType" config tests
- log tests: check if grep_config() is called by "log"-like cmds
- grep.h: remove unused "regex_t regexp" from grep_opt
Some code clean-up in the "git grep" machinery.
Looking good, except for the last step.
Code-wise, it is tempted to call it a victory after squashing the
fix-up in, but that does not fix the proposed log message, so...
source: <cover-v9-0.9-00000000000-20220127T115058Z-avarab@gmail.com>
* js/use-builtin-add-i (2021-12-01) 2 commits
- add -i: default to the built-in implementation
- t2016: require the PERL prereq only when necessary
"git add -i" was rewritten in C some time ago and has been in
testing; the reimplementation is now exposed to general public by
default.
On hold.
There are known breakages on macOS.
cf. <nycvar.QRO.7.76.6.2112021832060.63@tvgsbejvaqbjf.bet>
source: <pull.1087.git.1638281655.gitgitgadget@gmail.com>
* jt/conditional-config-on-remote-url (2022-01-18) 2 commits
(merged to 'next' on 2022-01-19 at 3c2df266eb)
+ config: include file if remote URL matches a glob
+ config: make git_config_include() static
The conditional inclusion mechanism of configuration files using
"[includeIf <condition>]" learns to base its decision on the
URL of the remote repository the repository interacts with.
Will merge to 'master'.
source: <cover.1642527965.git.jonathantanmy@google.com>
* ab/ambiguous-object-name (2022-01-27) 7 commits
- object-name: re-use "struct strbuf" in show_ambiguous_object()
- object-name: iterate ambiguous objects before showing header
- object-name: show date for ambiguous tag objects
- object-name: make ambiguous object output translatable
- object-name: explicitly handle bad tags in show_ambiguous_object()
- object-name: explicitly handle OBJ_BAD in show_ambiguous_object()
- object-name tests: add tests for ambiguous object blind spots
Error output given in response to an ambiguous object name has been
improved.
What's the doneness of this thing?
source: <cover-v8-0.7-00000000000-20220127T052116Z-avarab@gmail.com>
* tl/ls-tree-oid-only (2022-01-13) 9 commits
- ls-tree.c: introduce "--format" option
- cocci: allow padding with `strbuf_addf()`
- ls-tree.c: introduce struct "show_tree_data"
- ls-tree.c: support --object-only option for "git-ls-tree"
- ls-tree: optimize naming and handling of "return" in show_tree()
- ls-tree: use "size_t", not "int" for "struct strbuf"'s "len"
- ls-tree: use "enum object_type", not {blob,tree,commit}_type
- ls-tree: add missing braces to "else" arms
- ls-tree: remove commented-out code
"git ls-tree" learns "--oid-only" option, similar to "--name-only",
and more generalized "--format" option.
Will merge to 'next'?
source: <cover.1641978175.git.dyroneteng@gmail.com>
* ab/config-based-hooks-2 (2022-01-07) 17 commits
(merged to 'next' on 2022-01-19 at 594b6da22c)
+ run-command: remove old run_hook_{le,ve}() hook API
+ receive-pack: convert push-to-checkout hook to hook.h
+ read-cache: convert post-index-change to use hook.h
+ commit: convert {pre-commit,prepare-commit-msg} hook to hook.h
+ git-p4: use 'git hook' to run hooks
+ send-email: use 'git hook run' for 'sendemail-validate'
+ git hook run: add an --ignore-missing flag
+ hooks: convert worktree 'post-checkout' hook to hook library
+ hooks: convert non-worktree 'post-checkout' hook to hook library
+ merge: convert post-merge to use hook.h
+ am: convert applypatch-msg to use hook.h
+ rebase: convert pre-rebase to use hook.h
+ hook API: add a run_hooks_l() wrapper
+ am: convert {pre,post}-applypatch to use hook.h
+ gc: use hook library for pre-auto-gc hook
+ hook API: add a run_hooks() wrapper
+ hook: add 'run' subcommand
More "config-based hooks".
Will merge to 'master'.
source: <cover-v6-00.17-00000000000-20211222T035755Z-avarab@gmail.com>
* jh/builtin-fsmonitor-part2 (2021-12-25) 31 commits
- fixup! t7527: create test for fsmonitor--daemon
- fixup! t/perf/p7519: speed up test on Windows
- t7527: test status with untracked-cache and fsmonitor--daemon
- fsmonitor: force update index after large responses
- fsmonitor--daemon: use a cookie file to sync with file system
- fsmonitor--daemon: periodically truncate list of modified files
- t/perf/p7519: add fsmonitor--daemon test cases
- t/perf/p7519: speed up test on Windows
- t/helper/test-chmtime: skip directories on Windows
- t/perf: avoid copying builtin fsmonitor files into test repo
- t7527: create test for fsmonitor--daemon
- t/helper/fsmonitor-client: create IPC client to talk to FSMonitor Daemon
- help: include fsmonitor--daemon feature flag in version info
- fsmonitor--daemon: implement handle_client callback
- compat/fsmonitor/fsm-listen-darwin: implement FSEvent listener on MacOS
- compat/fsmonitor/fsm-listen-darwin: add macos header files for FSEvent
- compat/fsmonitor/fsm-listen-win32: implement FSMonitor backend on Windows
- fsmonitor--daemon: create token-based changed path cache
- fsmonitor--daemon: define token-ids
- fsmonitor--daemon: add pathname classification
- fsmonitor--daemon: implement 'start' command
- fsmonitor--daemon: implement 'run' command
- compat/fsmonitor/fsm-listen-darwin: stub in backend for Darwin
- compat/fsmonitor/fsm-listen-win32: stub in backend for Windows
- fsmonitor--daemon: implement 'stop' and 'status' commands
- fsmonitor--daemon: add a built-in fsmonitor daemon
- fsmonitor: document builtin fsmonitor
- fsmonitor: use IPC to query the builtin FSMonitor daemon
- fsmonitor: config settings are repository-specific
- fsmonitor-ipc: create client routines for git-fsmonitor--daemon
- fsmonitor: enhance existing comments
Built-in fsmonitor (part 2).
Expecting a reroll.
Seems that the discussion stalled.
cf. <d9c3ef61-768c-3560-2858-3438c355a742@jeffhostetler.com>
source: <pull.1041.v4.git.1634826309.gitgitgadget@gmail.com>
* es/superproject-aware-submodules (2021-11-18) 5 commits
- submodule: use config to find superproject worktree
- submodule: record superproject gitdir during 'update'
- submodule: record superproject gitdir during absorbgitdirs
- introduce submodule.superprojectGitDir record
- t7400-submodule-basic: modernize inspect() helper
A configuration variable in a submodule points at the location of
the superproject it is bound to (RFC).
Expecting a reroll.
cf. <20211117234300.2598132-1-jonathantanmy@google.com>
source: <20211117005701.371808-1-emilyshaffer@google.com>
* ab/only-single-progress-at-once (2022-01-07) 7 commits
- *.c: use isatty(0|2), not isatty(STDIN_FILENO|STDERR_FILENO)
- pack-bitmap-write.c: don't return without stop_progress()
- progress.c: add temporary variable from progress struct
- progress.c tests: test some invalid usage
- progress.c tests: make start/stop commands on stdin
- progress.c test helper: add missing braces
- leak tests: fix a memory leak in "test-progress" helper
Further tweaks on progress API.
Getting there.
source: <cover-v8-0.7-00000000000-20211228T150728Z-avarab@gmail.com>
^ permalink raw reply [relevance 3%]
* What's cooking in git.git (Jan 2022, #07; Mon, 24)
@ 2022-01-24 19:39 2% Junio C Hamano
0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2022-01-24 19:39 UTC (permalink / raw)
To: git
Git 2.35 final has been tagged. Let's wait for a few days to see if
there are regressions that needs brown-paper-bag fixes before we
start moving topics from 'next' to 'master' for the new cycle.
Here are the topics that have been cooking in my tree. Commits
prefixed with '+' are in 'next' (being in 'next' is a sign that a
topic is stable enough to be used and are candidate to be in a
future release). Commits prefixed with '-' are only in 'seen',
which means nothing more than that I have found them of interest for
some reason (like "it may have hard-to-resolve conflicts with
another topic already in flight" or "this may turn out to be
useful"). Do not read too much into a topic being in (or not in)
'seen'. The ones marked with '.' do not appear in any of the
integration branches, but I am still holding onto them.
Copies of the source code to Git live in many repositories, and the
following is a list of the ones I push into or their mirrors. Some
repositories have only a subset of branches.
With maint, master, next, seen, todo:
git://git.kernel.org/pub/scm/git/git.git/
git://repo.or.cz/alt-git.git/
https://kernel.googlesource.com/pub/scm/git/git/
https://github.com/git/git/
https://gitlab.com/git-vcs/git/
With all the integration branches and topics broken out:
https://github.com/gitster/git/
Even though the preformatted documentation in HTML and man format
are not sources, they are published in these repositories for
convenience (replace "htmldocs" with "manpages" for the manual
pages):
git://git.kernel.org/pub/scm/git/git-htmldocs.git/
https://github.com/gitster/git-htmldocs.git/
Release tarballs are available at:
https://www.kernel.org/pub/software/scm/git/
--------------------------------------------------
[Graduated to 'master']
* ab/checkout-branch-info-leakfix (2022-01-21) 1 commit
(merged to 'next' on 2022-01-23 at 8bbb082509)
+ checkout: avoid BUG() when hitting a broken repository
We added an unrelated sanity checking that leads to a BUG() while
plugging a leak, which triggered in a repository with symrefs in
the local branch namespace that point at a ref outside. Partially
revert the change to avoid triggering the BUG().
source: <xmqqbl04d1s9.fsf_-_@gitster.g>
--------------------------------------------------
[New Topics]
* jc/mem-pool-alignment (2022-01-24) 1 commit
- mem-pool: don't assume uintmax_t is aligned enough for all types
Update the logic to compute alignment requirement for our mem-pool.
Will merge to 'next'?
source: <20220123203347.74869-1-jrtc27@jrtc27.com>
--------------------------------------------------
[Stalled]
* je/http-better-error-output (2021-12-03) 1 commit
. http-backend: give a hint that web browser access is not supported
When the http-backend program, which is the server-side component
for the smart HTTP transport, sends a "404 Not found" error, we
deliberately did not say anything to the requesting client. We now
send a message back to the browser to tell the user that they do
not want to visit the URL via their browser, instead of a totally
blank page.
Expecting a reroll.
Breaks its self tests.
cf. <7r23s082-o3q0-479o-srqn-r45q778s5nq7@vanv.qr>
source: <20211202102855.23907-1-jengelh@inai.de>
* cb/save-term-across-editor-invocation (2021-12-01) 3 commits
- fixup! editor: allow for saving/restoring terminal state
- editor: allow for saving/restoring terminal state
- terminal: teach save_term to fail when not foreground
Some editors are reported to leave the terminal in funny state
after they exit on Windows. Work it around by saving and restoring
the terminal state when needed.
Expecting a reroll.
cf. <CAPUEsphktbdxeV7hvF52Or3CVHS8oOk5-WV=xfEZa8kfCVVnVg@mail.gmail.com>
source: <20211202035446.1154-1-carenas@gmail.com>
* ar/submodule-update (2021-10-13) 9 commits
. submodule--helper: rename helper functions
. submodule--helper: remove unused helpers
. submodule: move core cmd_update() logic to C
. submodule--helper: run update using child process struct
. submodule--helper: allow setting superprefix for init_submodule()
. submodule--helper: refactor get_submodule_displaypath()
. submodule--helper: rename helpers for update-clone
. submodule--helper: get remote names from any repository
. submodule--helper: split up ensure_core_worktree()
Rewrite of "git submodule update" in C.
Expecting a reroll?
cf. <YWiXL+plA7GHfuVv@google.com>
source: <20211013051805.45662-10-raykar.ath@gmail.com>
--------------------------------------------------
[Cooking]
* ab/auto-detect-zlib-compress2 (2022-01-24) 1 commit
- compat: auto-detect if zlib has uncompress2()
Notice older zlib to enable our replacement uncompress2()
automatically.
Will merge to 'next'?
source: <xmqqr18x3s5s.fsf@gitster.g>
* en/plug-leaks-in-merge (2022-01-21) 2 commits
- merge: fix memory leaks in cmd_merge()
- merge-ort: fix memory leak in merge_ort_internal()
Leakfix.
Will merge to 'next'.
source: <pull.1200.git.git.1642664835.gitgitgadget@gmail.com>
* js/apply-partial-clone-filters-recursively (2022-01-21) 1 commit
- clone, submodule: pass partial clone filters to submodules
"git clone --filter=... --recurse-submodules" only makes the
top-level a partial clone, while submodules are fully cloned. This
behaviour is changed to pass the same filter down to the submodules.
source: <50ebf7bd39adf34fa4ada27cd433d81b5381abe5.1642735881.git.steadmon@google.com>
* js/sparse-vs-split-index (2022-01-23) 3 commits
- split-index: it really is incompatible with the sparse index
- t1091: disable split index
- sparse-index: sparse index is disallowed when split index is active
Mark in various places in the code that the sparse index and the
split index features are mutually incompatible.
Will merge to 'next'.
source: <pull.1119.git.1642613379.gitgitgadget@gmail.com>
* js/test-unset-trace2-parents (2022-01-20) 1 commit
(merged to 'next' on 2022-01-20 at ebb085e3e4)
+ test-lib: unset trace2 parent envvars
Avoid tests that are run under GIT_TRACE2 set from failing
unnecessarily.
Will cook in 'next'.
source: <82e51a52e20fbe13a5a898a0a2f6dbe1188e3fa3.1642116539.git.steadmon@google.com>
* jt/sparse-checkout-leading-dir-fix (2022-01-21) 1 commit
- sparse-checkout: create leading directory
"git sparse-checkout init" failed to write into $GIT_DIR/info
directory when the repository was created without one, which has
been corrected to auto-create it.
Will merge to 'next'.
source: <20220121174441.3991963-1-jonathantanmy@google.com>
* rs/parse-options-lithelp-help (2022-01-20) 1 commit
- parse-options: document bracketing of argh
Comment update.
source: <c6ab4408-1091-4d14-849e-afe5f3053e8b@web.de>
* en/merge-ort-restart-optim-fix (2022-01-17) 1 commit
(merged to 'next' on 2022-01-19 at 84da10b057)
+ merge-ort: avoid assuming all renames detected
The merge-ort misbehaved when merge.renameLimit configuration is
set too low and failed to find all renames.
Will cook in 'next'.
source: <pull.1194.v2.git.git.1642443955836.gitgitgadget@gmail.com>
* jh/p4-various-fixups (2022-01-16) 23 commits
. git-p4: seperate multiple statements onto seperate lines
. git-p4: move inline comments to line above
. git-p4: only seperate code blocks by a single empty line
. git-p4: compare to singletons with "is" and "is not"
. git-p4: normalize indentation of lines in conditionals
. git-p4: ensure there is a single space around all operators
. git-p4: ensure every comment has a single #
. git-p4: remove spaces between dictionary keys and colons
. git-p4: remove redundant backslash-continuations inside brackets
. git-p4: remove extraneous spaces before function arguments
. git-p4: place a single space after every comma
. git-p4: removed brackets when assigning multiple return values
. git-p4: remove spaces around default arguments
. git-p4: remove padding from lists, tuples and function arguments
. git-p4: sort and de-duplcate pylint disable list
. git-p4: remove commented code
. git-p4: convert descriptive class and function comments into docstrings
. git-p4: improve consistency of docstring formatting
. git-p4: indent with 4-spaces
. git-p4: remove unneeded semicolons from statements
. git-p4: add blank lines between functions and class definitions
. Merge branch 'jh/p4-spawning-external-commands-cleanup' into jh/p4-various-fixups
. Merge branch 'jh/p4-fix-use-of-process-error-exception' into jh/p4-various-fixups
(this branch uses jh/p4-fix-use-of-process-error-exception and jh/p4-spawning-external-commands-cleanup.)
Various cleanups to "git p4".
Breaks its own test suite.
source: <20220116160550.514637-1-jholdsworth@nvidia.com>
* po/readme-mention-contributor-hints (2022-01-17) 1 commit
(merged to 'next' on 2022-01-19 at 7e14690eb9)
+ README.md: add CodingGuidelines and a link for Translators
Doc update.
Will cook in 'next'.
source: <pull.1115.v3.git.1642443491609.gitgitgadget@gmail.com>
* tl/doc-cli-options-first (2022-01-17) 1 commit
(merged to 'next' on 2022-01-19 at 9ec14cfe73)
+ git-cli.txt: clarify "options first and then args"
We explain that revs come first before the pathspec among command
line arguments, but did not spell out that dashed options come
before other args, which has been corrected.
Will cook in 'next'.
source: <fe748304d94e0ae25fd3549aadc49cf951ff2d64.1642405806.git.dyroneteng@gmail.com>
* rs/bisect-executable-not-found (2022-01-19) 4 commits
- bisect--helper: double-check run command on exit code 126 and 127
- bisect: document run behavior with exit codes 126 and 127
- bisect--helper: release strbuf and strvec on run error
- bisect--helper: report actual bisect_state() argument on error
source: <fead25d6-6f5f-487a-ad4c-0657fe9785fd@www.fastmail.com>
* ds/sparse-checkout-requires-per-worktree-config (2022-01-14) 6 commits
. worktree: copy sparse-checkout patterns and config on add
. sparse-checkout: use repo_config_set_worktree_gently()
. config: add repo_config_set_worktree_gently()
. worktree: add 'init-worktree-config' subcommand
. config: make some helpers repo-aware
. setup: use a repository when upgrading format
"git sparse-checkout" wants to work with per-worktree configration,
but did not work well in a worktree attached to a bare repository.
Expecting an update.
cf. <1db0f601-4769-15c0-cd58-ecddfa1fc9d5@gmail.com>
Introduces new leaks.
cf. https://github.com/git/git/runs/4823667255?check_suite_focus=true
source: <pull.1101.v3.git.1640727143.gitgitgadget@gmail.com>
* pw/add-p-hunk-split-fix (2022-01-12) 2 commits
(merged to 'next' on 2022-01-19 at ea57b2c9a6)
+ builtin add -p: fix hunk splitting
+ t3701: clean up hunk splitting tests
"git add -p" rewritten in C regressed hunk splitting in some cases,
which has been corrected.
Will cook in 'next'.
source: <pull.1100.v2.git.1641899530.gitgitgadget@gmail.com>
* gc/fetch-negotiate-only-early-return (2022-01-20) 4 commits
(merged to 'next' on 2022-01-20 at e7616428eb)
+ fetch: help translators by reusing the same message template
(merged to 'next' on 2022-01-19 at 0f15147cfa)
+ fetch --negotiate-only: do not update submodules
+ fetch: skip tasks related to fetching objects
+ fetch: use goto cleanup in cmd_fetch()
"git fetch --negotiate-only" is an internal command used by "git
push" to figure out which part of our history is missing from the
other side. It should never recurse into submodules even when
fetch.recursesubmodules configuration variable is set, nor it
should trigger "gc". The code has been tightened up to ensure it
only does common ancestry discovery and nothing else.
Will cook in 'next'.
source: <20220119000056.58503-1-chooglen@google.com>
* jh/p4-fix-use-of-process-error-exception (2022-01-06) 1 commit
(merged to 'next' on 2022-01-10 at 49d529bfd7)
+ git-p4: fix instantiation of CalledProcessError
(this branch is used by jh/p4-various-fixups.)
Will cook in 'next'.
source: <20220106214156.90967-1-jholdsworth@nvidia.com>
* jh/p4-spawning-external-commands-cleanup (2022-01-06) 3 commits
(merged to 'next' on 2022-01-10 at 54b36b4e66)
+ git-p4: don't print shell commands as python lists
+ git-p4: pass command arguments as lists instead of using shell
+ git-p4: don't select shell mode using the type of the command argument
(this branch is used by jh/p4-various-fixups.)
Will cook in 'next'.
source: <20220106214035.90725-1-jholdsworth@nvidia.com>
* pb/pull-rebase-autostash-fix (2022-01-14) 1 commit
(merged to 'next' on 2022-01-14 at 83a388a7e2)
+ pull --rebase: honor rebase.autostash when fast-forwarding
"git pull --rebase" ignored the rebase.autostash configuration
variable when the remote history is a descendant of our history,
which has been corrected.
Will cook in 'next'.
source: <xmqqr19aayxp.fsf@gitster.g>
* rs/grep-expr-cleanup (2022-01-06) 4 commits
(merged to 'next' on 2022-01-10 at b70a3bb0fa)
+ grep: use grep_and_expr() in compile_pattern_and()
+ grep: extract grep_binexp() from grep_or_expr()
+ grep: use grep_not_expr() in compile_pattern_not()
+ grep: use grep_or_expr() in compile_pattern_or()
Code clean-up.
Will cook in 'next'.
source: <cover.1641498525.git.me@ttaylorr.com>
* fs/ssh-signing-crlf (2022-01-07) 1 commit
(merged to 'next' on 2022-01-19 at 76b86faafb)
+ gpg-interface: trim CR from ssh-keygen
The code path that verifies signatures made with ssh were made to
work better on a system with CRLF line endings.
Will cook in 'next'.
source: <20220107090735.580225-1-fs@gigacodes.de>
* jc/qsort-s-alignment-fix (2022-01-07) 2 commits
(merged to 'next' on 2022-01-10 at 329fd6e09a)
+ stable-qsort: avoid using potentially unaligned access
+ compat/qsort_s.c: avoid using potentially unaligned access
Fix a hand-rolled alloca() imitation that may have violated
alignment requirement of data being sorted in compatibility
implementation of qsort_s() and stable qsort().
Will cook in 'next'.
source: <f40c1b47-9aad-2dcc-ceeb-5dee2b517cd8@web.de>
source: <xmqqzgo76xpj.fsf@gitster.g>
* ps/avoid-unnecessary-hook-invocation-with-packed-refs (2022-01-17) 6 commits
- refs: skip hooks when deleting uncovered packed refs
- refs: do not execute reference-transaction hook on packing refs
- refs: demonstrate excessive execution of the reference-transaction hook
- refs: allow skipping the reference-transaction hook
- refs: allow passing flags when beginning transactions
- refs: extract packed_refs_delete_refs() to allow control of transaction
Because a deletion of ref would need to remove it from both the
loose ref store and the packed ref store, a delete-ref operation
that logically removes one ref may end up invoking ref-transaction
hook twice, which has been corrected.
Introduces new leaks when merged to 'seen'.
source: <cover.1642406989.git.ps@pks.im>
* rs/apply-symlinks-use-strset (2022-01-07) 1 commit
(merged to 'next' on 2022-01-10 at 32497a67d5)
+ apply: use strsets to track symlinks
"git apply" (ab)used the util pointer of the string-list to keep
track of how each symbolic link needs to be handled, which has been
simplified by using strset.
Will cook in 'next'.
source: <8739caad-aa3d-1f0f-b5dd-6174a8e059f6@web.de>
* ld/sparse-index-bash-completion (2022-01-10) 3 commits
- sparse-checkout: limit tab completion to a single level
- sparse-checkout: custom tab completion
- sparse-checkout: custom tab completion tests
The command line completion (in contrib/) learns to complete
arguments give to "git sparse-checkout" command.
source: <pull.1108.v3.git.1641841193.gitgitgadget@gmail.com>
* bc/clarify-eol-attr (2022-01-12) 2 commits
- docs: correct documentation about eol attribute
- t0027: add tests for eol without text in .gitattributes
Doc and test update around the eol attribute.
source: <20220111021507.531736-1-sandals@crustytoothpaste.net>
* jz/rev-list-exclude-first-parent-only (2022-01-12) 1 commit
- git-rev-list: add --exclude-first-parent-only flag
"git log" and friends learned an option --exclude-first-parent-only
to propagate UNINTERESTING bit down only along the first-parent
chain, just like --first-parent option shows commits that lack the
UNINTERESTING bit only along the first-parent chain.
source: <20220111213941.30129-1-jerry@skydio.com>
* en/present-despite-skipped (2022-01-14) 6 commits
- Accelerate clear_skip_worktree_from_present_files() by caching
- Update documentation related to sparsity and the skip-worktree bit
- repo_read_index: clear SKIP_WORKTREE bit from files present in worktree
- unpack-trees: fix accidental loss of user changes
- t1011: add testcase demonstrating accidental loss of user modifications
- Merge branch 'vd/sparse-clean-etc' into en/present-despite-skipped
(this branch uses vd/sparse-clean-etc.)
In sparse-checkouts, files mis-marked as missing from the working tree
could lead to later problems. Such files were hard to discover, and
harder to correct. Automatically detecting and correcting the marking
of such files has been added to avoid these problems.
source: <pull.1114.v2.git.1642175983.gitgitgadget@gmail.com>
* bc/csprng-mktemps (2022-01-17) 2 commits
- wrapper: use a CSPRNG to generate random file names
- wrapper: add a helper to generate numbers from a CSPRNG
Pick a better random number generator and use it when we prepare
temporary filenames.
Are we solving the right problem?
cf. <220118.86zgntpegy.gmgdl@evledraar.gmail.com>
source: <20220117215617.843190-1-sandals@crustytoothpaste.net>
* jc/reflog-parse-options (2022-01-10) 2 commits
(merged to 'next' on 2022-01-12 at 1659e49c4b)
+ builtin/reflog.c: use parse-options api for expire, delete subcommands
+ Merge branch 'ab/reflog-prep' into jc/reflog-parse-options
Use the parse-options API in "git reflog" command.
Will cook in 'next'.
source: <pull.1175.v5.git.git.1641495981650.gitgitgadget@gmail.com>
* vd/sparse-clean-etc (2022-01-13) 9 commits
- update-index: reduce scope of index expansion in do_reupdate
- update-index: integrate with sparse index
- update-index: add tests for sparse-checkout compatibility
- checkout-index: integrate with sparse index
- checkout-index: add --ignore-skip-worktree-bits option
- checkout-index: expand sparse checkout compatibility tests
- clean: integrate with sparse index
- reset: reorder wildcard pathspec conditions
- reset: fix validation in sparse index test
(this branch is used by en/present-despite-skipped.)
"git update-index", "git checkout-index", and "git clean" are
taught to work better with the sparse checkout feature.
source: <pull.1109.v2.git.1641924306.gitgitgadget@gmail.com>
* ms/update-index-racy (2022-01-07) 4 commits
(merged to 'next' on 2022-01-14 at 705a33f63b)
+ update-index: refresh should rewrite index in case of racy timestamps
+ t7508: add tests capturing racy timestamp handling
+ t7508: fix bogus mtime verification
+ test-lib: introduce API for verifying file mtime
"git update-index --refresh" has been taught to deal better with
racy timestamps (just like "git status" already does).
Will cook in 'next'.
source: <pull.1105.v4.git.1641554252.gitgitgadget@gmail.com>
* jc/find-header (2022-01-06) 1 commit
(merged to 'next' on 2022-01-10 at 8a13b4f0b3)
+ receive-pack.c: consolidate find header logic
Code clean-up.
Will cook in 'next'.
source: <pull.1125.v6.git.git.1641499655700.gitgitgadget@gmail.com>
* jc/name-rev-stdin (2022-01-10) 2 commits
(merged to 'next' on 2022-01-19 at a58e05fabe)
+ name-rev.c: use strbuf_getline instead of limited size buffer
+ name-rev: deprecate --stdin in favor of --annotate-stdin
"git name-rev --stdin" does not behave like usual "--stdin" at
all. Start the process of renaming it to "--annotate-stdin".
Will cook in 'next'.
source: <pull.1171.v7.git.git.1641425372.gitgitgadget@gmail.com>
* en/remerge-diff (2022-01-21) 11 commits
- diff-merges: avoid history simplifications when diffing merges
- merge-ort: mark conflict/warning messages from inner merges as omittable
- show, log: include conflict/warning messages in --remerge-diff headers
- diff: add ability to insert additional headers for paths
- merge-ort: format messages slightly different for use in headers
- merge-ort: mark a few more conflict messages as omittable
- merge-ort: capture and print ll-merge warnings in our preferred fashion
- ll-merge: make callers responsible for showing warnings
- log: clean unneeded objects during `log --remerge-diff`
- show, log: provide a --remerge-diff capability
- Merge branch 'ns/tmp-objdir' into en/remerge-diff
"git log --remerge-diff" shows the difference from mechanical merge
result and the merge result that is actually recorded.
Will merge to 'next'?
source: <pull.1103.v4.git.1642792341.gitgitgadget@gmail.com>
* bs/forbid-i18n-of-protocol-token-in-fetch-pack (2021-12-22) 2 commits
- fixup! fetch-pack: parameterize message containing 'ready' keyword
- fetch-pack: parameterize message containing 'ready' keyword
L10n support for a few error messages.
Expecting an ack for fixup.
source: <20211222075805.19027-1-bagasdotme@gmail.com>
* gc/branch-recurse-submodules (2022-01-10) 6 commits
- branch: add --recurse-submodules option for branch creation
- builtin/branch: clean up action-picking logic in cmd_branch()
- branch: add a dry_run parameter to create_branch()
- branch: make create_branch() always create a branch
- branch: move --set-upstream-to behavior to dwim_and_setup_tracking()
- Merge branch 'js/branch-track-inherit' into gc/branch-recurse-submodules
"git branch" learned the "--recurse-submodules" option.
Expecting a reroll.
cf. <kl6l7db6kvp2.fsf@chooglen-macbookpro.roam.corp.google.com>
source: <20211220233459.45739-1-chooglen@google.com>
* hn/reftable-coverity-fixes (2022-01-20) 17 commits
- reftable: add print functions to the record types
- reftable: make reftable_record a tagged union
- reftable: remove outdated file reftable.c
- reftable: implement record equality generically
- reftable: make reftable-record.h function signatures const correct
- reftable: handle null refnames in reftable_ref_record_equal
- reftable: drop stray printf in readwrite_test
- reftable: order unittests by complexity
- reftable: all xxx_free() functions accept NULL arguments
- reftable: fix resource warning
- reftable: ignore remove() return value in stack_test.c
- reftable: check reftable_stack_auto_compact() return value
- reftable: fix resource leak blocksource.c
- reftable: fix resource leak in block.c error path
- reftable: fix OOB stack write in print functions
- Merge branch 'hn/create-reflog-simplify' into hn/reftable-coverity-fixes
- Merge branch 'hn/reftable' into hn/reftable-coverity-fixes
Problems identified by Coverity in the reftable code have been
corrected.
Will merge to 'next'.
source: <pull.1152.v6.git.git.1642691534.gitgitgadget@gmail.com>
* tb/midx-bitmap-corruption-fix (2022-01-04) 9 commits
- pack-bitmap.c: gracefully fallback after opening pack/MIDX
- midx: read `RIDX` chunk when present
- t/lib-bitmap.sh: parameterize tests over reverse index source
- t5326: move tests to t/lib-bitmap.sh
- t5326: extract `test_rev_exists`
- t5326: drop unnecessary setup
- pack-revindex.c: instrument loading on-disk reverse index
- midx.c: make changing the preferred pack safe
- t5326: demonstrate bitmap corruption after permutation
A bug that made multi-pack bitmap and the object order out-of-sync
(hence the .midx data gets corrupted) has been fixed.
Waiting for a hopefully final review.
cf. <Ydceeo33Yt4N%2FbrN@nand.local>
source: <cover.1641320129.git.me@ttaylorr.com>
* pw/fix-some-issues-in-reset-head (2021-12-08) 14 commits
- rebase -m: don't fork git checkout
- rebase --apply: set ORIG_HEAD correctly
- rebase --apply: fix reflog
- reset_head(): take struct rebase_head_opts
- rebase: cleanup reset_head() calls
- reset_head(): make default_reflog_action optional
- reset_head(): factor out ref updates
- create_autostash(): remove unneeded parameter
- reset_head(): remove action parameter
- rebase --apply: don't run post-checkout hook if there is an error
- rebase: do not remove untracked files on checkout
- rebase: pass correct arguments to post-checkout hook
- t5403: refactor rebase post-checkout hook tests
- rebase: factor out checkout for up to date branch
Fix "some issues" in a helper function reset_head().
Expecting a reroll.
cf. <xmqqk0gdskkh.fsf@gitster.g>
cf. <xmqqwnkdr3xb.fsf@gitster.g>
cf. <xmqqpmq5r3j9.fsf@gitster.g>
cf. <xmqqczm5r34h.fsf@gitster.g>
cf. <CABPp-BEHW4VLG18twcM_8iOco1jZ2iuGT+KN8aS+-sAAnBhTnw@mail.gmail.com>
source: <pull.1049.v2.git.1638975481.gitgitgadget@gmail.com>
* ab/cat-file (2022-01-12) 12 commits
(merged to 'next' on 2022-01-12 at ee4d43041d)
+ cat-file: s/_/-/ in typo'd usage_msg_optf() message
+ cat-file: don't whitespace-pad "(...)" in SYNOPSIS and usage output
(merged to 'next' on 2022-01-05 at e145efa605)
+ cat-file: use GET_OID_ONLY_TO_DIE in --(textconv|filters)
+ object-name.c: don't have GET_OID_ONLY_TO_DIE imply *_QUIETLY
+ cat-file: correct and improve usage information
+ cat-file: fix remaining usage bugs
+ cat-file: make --batch-all-objects a CMDMODE
+ cat-file: move "usage" variable to cmd_cat_file()
+ cat-file docs: fix SYNOPSIS and "-h" output
+ parse-options API: add a usage_msg_optf()
+ cat-file tests: test messaging on bad objects/paths
+ cat-file tests: test bad usage
Assorted updates to "git cat-file", especially "-h".
Will cook in 'next'.
source: <cover-v6-00.10-00000000000-20211228T132637Z-avarab@gmail.com>
source: <cover-0.2-00000000000-20220110T220553Z-avarab@gmail.com>
* ab/grep-patterntype (2022-01-18) 10 commits
- grep.[ch]: remove GREP_PATTERN_TYPE_UNSPECIFIED
- grep: simplify config parsing and option parsing
- grep.c: do "if (bool && memchr())" not "if (memchr() && bool)"
- grep.h: make "grep_opt.pattern_type_option" use its enum
- grep API: call grep_config() after grep_init()
- grep.c: don't pass along NULL callback value
- built-ins: trust the "prefix" from run_builtin()
- grep tests: add missing "grep.patternType" config tests
- log tests: check if grep_config() is called by "log"-like cmds
- grep.h: remove unused "regex_t regexp" from grep_opt
Some code clean-up in the "git grep" machinery.
Looking good, except for the last two steps.
source: <cover-v8-00.10-00000000000-20220118T155211Z-avarab@gmail.com>
* js/use-builtin-add-i (2021-12-01) 2 commits
- add -i: default to the built-in implementation
- t2016: require the PERL prereq only when necessary
"git add -i" was rewritten in C some time ago and has been in
testing; the reimplementation is now exposed to general public by
default.
On hold.
There are known breakages on macOS.
cf. <nycvar.QRO.7.76.6.2112021832060.63@tvgsbejvaqbjf.bet>
source: <pull.1087.git.1638281655.gitgitgadget@gmail.com>
* jt/conditional-config-on-remote-url (2022-01-18) 2 commits
(merged to 'next' on 2022-01-19 at 3c2df266eb)
+ config: include file if remote URL matches a glob
+ config: make git_config_include() static
The conditional inclusion mechanism of configuration files using
"[includeIf <condition>]" learns to base its decision on the
URL of the remote repository the repository interacts with.
Will cook in 'next'.
source: <cover.1642527965.git.jonathantanmy@google.com>
* ab/ambiguous-object-name (2022-01-13) 6 commits
- object-name: re-use "struct strbuf" in show_ambiguous_object()
- object-name: iterate ambiguous objects before showing header
- object-name: show date for ambiguous tag objects
- object-name: make ambiguous object output translatable
- object-name: explicitly handle OBJ_BAD in show_ambiguous_object()
- object-name tests: add tests for ambiguous object blind spots
Error output given in response to an ambiguous object name has been
improved.
source: <cover-v7-0.6-00000000000-20220111T130811Z-avarab@gmail.com>
* tl/ls-tree-oid-only (2022-01-13) 9 commits
- ls-tree.c: introduce "--format" option
- cocci: allow padding with `strbuf_addf()`
- ls-tree.c: introduce struct "show_tree_data"
- ls-tree.c: support --object-only option for "git-ls-tree"
- ls-tree: optimize naming and handling of "return" in show_tree()
- ls-tree: use "size_t", not "int" for "struct strbuf"'s "len"
- ls-tree: use "enum object_type", not {blob,tree,commit}_type
- ls-tree: add missing braces to "else" arms
- ls-tree: remove commented-out code
"git ls-tree" learns "--oid-only" option, similar to "--name-only",
and more generalized "--format" option.
source: <cover.1641978175.git.dyroneteng@gmail.com>
* ab/config-based-hooks-2 (2022-01-07) 17 commits
(merged to 'next' on 2022-01-19 at 594b6da22c)
+ run-command: remove old run_hook_{le,ve}() hook API
+ receive-pack: convert push-to-checkout hook to hook.h
+ read-cache: convert post-index-change to use hook.h
+ commit: convert {pre-commit,prepare-commit-msg} hook to hook.h
+ git-p4: use 'git hook' to run hooks
+ send-email: use 'git hook run' for 'sendemail-validate'
+ git hook run: add an --ignore-missing flag
+ hooks: convert worktree 'post-checkout' hook to hook library
+ hooks: convert non-worktree 'post-checkout' hook to hook library
+ merge: convert post-merge to use hook.h
+ am: convert applypatch-msg to use hook.h
+ rebase: convert pre-rebase to use hook.h
+ hook API: add a run_hooks_l() wrapper
+ am: convert {pre,post}-applypatch to use hook.h
+ gc: use hook library for pre-auto-gc hook
+ hook API: add a run_hooks() wrapper
+ hook: add 'run' subcommand
More "config-based hooks".
Will cook in 'next'.
source: <cover-v6-00.17-00000000000-20211222T035755Z-avarab@gmail.com>
* jh/builtin-fsmonitor-part2 (2021-12-25) 31 commits
- fixup! t7527: create test for fsmonitor--daemon
- fixup! t/perf/p7519: speed up test on Windows
- t7527: test status with untracked-cache and fsmonitor--daemon
- fsmonitor: force update index after large responses
- fsmonitor--daemon: use a cookie file to sync with file system
- fsmonitor--daemon: periodically truncate list of modified files
- t/perf/p7519: add fsmonitor--daemon test cases
- t/perf/p7519: speed up test on Windows
- t/helper/test-chmtime: skip directories on Windows
- t/perf: avoid copying builtin fsmonitor files into test repo
- t7527: create test for fsmonitor--daemon
- t/helper/fsmonitor-client: create IPC client to talk to FSMonitor Daemon
- help: include fsmonitor--daemon feature flag in version info
- fsmonitor--daemon: implement handle_client callback
- compat/fsmonitor/fsm-listen-darwin: implement FSEvent listener on MacOS
- compat/fsmonitor/fsm-listen-darwin: add macos header files for FSEvent
- compat/fsmonitor/fsm-listen-win32: implement FSMonitor backend on Windows
- fsmonitor--daemon: create token-based changed path cache
- fsmonitor--daemon: define token-ids
- fsmonitor--daemon: add pathname classification
- fsmonitor--daemon: implement 'start' command
- fsmonitor--daemon: implement 'run' command
- compat/fsmonitor/fsm-listen-darwin: stub in backend for Darwin
- compat/fsmonitor/fsm-listen-win32: stub in backend for Windows
- fsmonitor--daemon: implement 'stop' and 'status' commands
- fsmonitor--daemon: add a built-in fsmonitor daemon
- fsmonitor: document builtin fsmonitor
- fsmonitor: use IPC to query the builtin FSMonitor daemon
- fsmonitor: config settings are repository-specific
- fsmonitor-ipc: create client routines for git-fsmonitor--daemon
- fsmonitor: enhance existing comments
Built-in fsmonitor (part 2).
Expecting a reroll.
Seems that the discussion stalled.
cf. <d9c3ef61-768c-3560-2858-3438c355a742@jeffhostetler.com>
source: <pull.1041.v4.git.1634826309.gitgitgadget@gmail.com>
* es/superproject-aware-submodules (2021-11-18) 5 commits
- submodule: use config to find superproject worktree
- submodule: record superproject gitdir during 'update'
- submodule: record superproject gitdir during absorbgitdirs
- introduce submodule.superprojectGitDir record
- t7400-submodule-basic: modernize inspect() helper
A configuration variable in a submodule points at the location of
the superproject it is bound to (RFC).
Expecting a reroll.
cf. <20211117234300.2598132-1-jonathantanmy@google.com>
source: <20211117005701.371808-1-emilyshaffer@google.com>
* ab/only-single-progress-at-once (2022-01-07) 7 commits
- *.c: use isatty(0|2), not isatty(STDIN_FILENO|STDERR_FILENO)
- pack-bitmap-write.c: don't return without stop_progress()
- progress.c: add temporary variable from progress struct
- progress.c tests: test some invalid usage
- progress.c tests: make start/stop commands on stdin
- progress.c test helper: add missing braces
- leak tests: fix a memory leak in "test-progress" helper
Further tweaks on progress API.
Getting there.
source: <cover-v8-0.7-00000000000-20211228T150728Z-avarab@gmail.com>
^ permalink raw reply [relevance 2%]
* What's cooking in git.git (Jan 2022, #06; Fri, 21)
@ 2022-01-22 5:16 3% Junio C Hamano
0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2022-01-22 5:16 UTC (permalink / raw)
To: git
Possibly a few more last-minute fixes may want to be on 'master'
before the final:
- ab/checkout-branch-info-leakfix is to stop "git checkout -f
<ref>" from triggering BUG() when <ref> is a symbolic ref that
points at a strange place.
- en/merge-ort-restart-optim-fix is to avoid triggering assertion
failure when merge.renameLimit is set to a value that is too low.
- js/test-unset-trace2-parents is to help those developers who run
"make test" inside a git that is being traced via GIT_TRACE2
mechanism.
- ab/auto-detect-zlib-compress2 is to automate use of replacement
uncompress2() implementation on platforms with zlib that is too
old.
- pb/pull-rebase-autostash-fix is to fix the remaining case where
"git pull --rebase" that reused the merge machinery when the
update can be fast-forwarded did not behave well.
but we can probably do without many of them.
Here are the topics that have been cooking in my tree. Commits
prefixed with '+' are in 'next' (being in 'next' is a sign that a
topic is stable enough to be used and are candidate to be in a
future release). Commits prefixed with '-' are only in 'seen',
which means nothing more than that I have found them of interest for
some reason (like "it may have hard-to-resolve conflicts with
another topic already in flight" or "this may turn out to be
useful"). Do not read too much into a topic being in (or not in)
'seen'. The ones marked with '.' do not appear in any of the
integration branches, but I am still holding onto them.
Copies of the source code to Git live in many repositories, and the
following is a list of the ones I push into or their mirrors. Some
repositories have only a subset of branches.
With maint, master, next, seen, todo:
git://git.kernel.org/pub/scm/git/git.git/
git://repo.or.cz/alt-git.git/
https://kernel.googlesource.com/pub/scm/git/git/
https://github.com/git/git/
https://gitlab.com/git-vcs/git/
With all the integration branches and topics broken out:
https://github.com/gitster/git/
Even though the preformatted documentation in HTML and man format
are not sources, they are published in these repositories for
convenience (replace "htmldocs" with "manpages" for the manual
pages):
git://git.kernel.org/pub/scm/git/git-htmldocs.git/
https://github.com/gitster/git-htmldocs.git/
Release tarballs are available at:
https://www.kernel.org/pub/software/scm/git/
--------------------------------------------------
[New Topics]
* ab/auto-detect-zlib-compress2 (2022-01-21) 1 commit
- cache.h: auto-detect if zlib has uncompress2()
Notice older zlib to enable our replacement uncompress2()
automatically.
Will merge to 'next'.
source: <patch-v3-1.1-e9cb8763fd4-20220120T011414Z-avarab@gmail.com>
* ab/checkout-branch-info-leakfix (2022-01-21) 1 commit
- checkout: avoid BUG() when hitting a broken repository
We added an unrelated sanity checking that leads to a BUG() while
plugging a leak, which triggered in a repository with symrefs in
the local branch namespace that point at a ref outside. Partially
revert the change to avoid triggering the BUG().
Will merge to 'next' and then to 'master'?
source: <xmqqbl04d1s9.fsf_-_@gitster.g>
* en/plug-leaks-in-merge (2022-01-21) 2 commits
- merge: fix memory leaks in cmd_merge()
- merge-ort: fix memory leak in merge_ort_internal()
Leakfix.
Will merge to 'next'.
source: <pull.1200.git.git.1642664835.gitgitgadget@gmail.com>
* js/apply-partial-clone-filters-recursively (2022-01-21) 1 commit
- clone, submodule: pass partial clone filters to submodules
"git clone --filter=... --recurse-submodules" only makes the
top-level a partial clone, while submodules are fully cloned. This
behaviour is changed to pass the same filter down to the submodules.
source: <50ebf7bd39adf34fa4ada27cd433d81b5381abe5.1642735881.git.steadmon@google.com>
* js/sparse-vs-split-index (2022-01-21) 3 commits
- split-index: it really is incompatible with the sparse index
- t1091: disable split index
- sparse-index: sparse index is disallowed when split index is active
Mark in various places in the code that the sparse index and the
split index features are mutually incompatible.
source: <pull.1119.git.1642613379.gitgitgadget@gmail.com>
* js/test-unset-trace2-parents (2022-01-20) 1 commit
(merged to 'next' on 2022-01-20 at ebb085e3e4)
+ test-lib: unset trace2 parent envvars
Avoid tests that are run under GIT_TRACE2 set from failing
unnecessarily.
Will cook in 'next'.
source: <82e51a52e20fbe13a5a898a0a2f6dbe1188e3fa3.1642116539.git.steadmon@google.com>
* jt/sparse-checkout-leading-dir-fix (2022-01-21) 1 commit
- sparse-checkout: create leading directory
"git sparse-checkout init" failed to write into $GIT_DIR/info
directory when the repository was created without one, which has
been corrected to auto-create it.
Will merge to 'next'.
source: <20220121174441.3991963-1-jonathantanmy@google.com>
* rs/parse-options-lithelp-help (2022-01-20) 1 commit
- parse-options: document bracketing of argh
Comment update.
source: <c6ab4408-1091-4d14-849e-afe5f3053e8b@web.de>
--------------------------------------------------
[Stalled]
* je/http-better-error-output (2021-12-03) 1 commit
. http-backend: give a hint that web browser access is not supported
When the http-backend program, which is the server-side component
for the smart HTTP transport, sends a "404 Not found" error, we
deliberately did not say anything to the requesting client. We now
send a message back to the browser to tell the user that they do
not want to visit the URL via their browser, instead of a totally
blank page.
Expecting a reroll.
Breaks its self tests.
cf. <7r23s082-o3q0-479o-srqn-r45q778s5nq7@vanv.qr>
source: <20211202102855.23907-1-jengelh@inai.de>
* cb/save-term-across-editor-invocation (2021-12-01) 3 commits
- fixup! editor: allow for saving/restoring terminal state
- editor: allow for saving/restoring terminal state
- terminal: teach save_term to fail when not foreground
Some editors are reported to leave the terminal in funny state
after they exit on Windows. Work it around by saving and restoring
the terminal state when needed.
Expecting a reroll.
cf. <CAPUEsphktbdxeV7hvF52Or3CVHS8oOk5-WV=xfEZa8kfCVVnVg@mail.gmail.com>
source: <20211202035446.1154-1-carenas@gmail.com>
* ar/submodule-update (2021-10-13) 9 commits
. submodule--helper: rename helper functions
. submodule--helper: remove unused helpers
. submodule: move core cmd_update() logic to C
. submodule--helper: run update using child process struct
. submodule--helper: allow setting superprefix for init_submodule()
. submodule--helper: refactor get_submodule_displaypath()
. submodule--helper: rename helpers for update-clone
. submodule--helper: get remote names from any repository
. submodule--helper: split up ensure_core_worktree()
Rewrite of "git submodule update" in C.
Expecting a reroll?
cf. <YWiXL+plA7GHfuVv@google.com>
source: <20211013051805.45662-10-raykar.ath@gmail.com>
--------------------------------------------------
[Cooking]
* en/merge-ort-restart-optim-fix (2022-01-17) 1 commit
(merged to 'next' on 2022-01-19 at 84da10b057)
+ merge-ort: avoid assuming all renames detected
The merge-ort misbehaved when merge.renameLimit configuration is
set too low and failed to find all renames.
Will cook in 'next'.
source: <pull.1194.v2.git.git.1642443955836.gitgitgadget@gmail.com>
* jh/p4-various-fixups (2022-01-16) 23 commits
. git-p4: seperate multiple statements onto seperate lines
. git-p4: move inline comments to line above
. git-p4: only seperate code blocks by a single empty line
. git-p4: compare to singletons with "is" and "is not"
. git-p4: normalize indentation of lines in conditionals
. git-p4: ensure there is a single space around all operators
. git-p4: ensure every comment has a single #
. git-p4: remove spaces between dictionary keys and colons
. git-p4: remove redundant backslash-continuations inside brackets
. git-p4: remove extraneous spaces before function arguments
. git-p4: place a single space after every comma
. git-p4: removed brackets when assigning multiple return values
. git-p4: remove spaces around default arguments
. git-p4: remove padding from lists, tuples and function arguments
. git-p4: sort and de-duplcate pylint disable list
. git-p4: remove commented code
. git-p4: convert descriptive class and function comments into docstrings
. git-p4: improve consistency of docstring formatting
. git-p4: indent with 4-spaces
. git-p4: remove unneeded semicolons from statements
. git-p4: add blank lines between functions and class definitions
. Merge branch 'jh/p4-spawning-external-commands-cleanup' into jh/p4-various-fixups
. Merge branch 'jh/p4-fix-use-of-process-error-exception' into jh/p4-various-fixups
(this branch uses jh/p4-fix-use-of-process-error-exception and jh/p4-spawning-external-commands-cleanup.)
Various cleanups to "git p4".
Breaks its own test suite.
source: <20220116160550.514637-1-jholdsworth@nvidia.com>
* po/readme-mention-contributor-hints (2022-01-17) 1 commit
(merged to 'next' on 2022-01-19 at 7e14690eb9)
+ README.md: add CodingGuidelines and a link for Translators
Doc update.
Will cook in 'next'.
source: <pull.1115.v3.git.1642443491609.gitgitgadget@gmail.com>
* tl/doc-cli-options-first (2022-01-17) 1 commit
(merged to 'next' on 2022-01-19 at 9ec14cfe73)
+ git-cli.txt: clarify "options first and then args"
We explain that revs come first before the pathspec among command
line arguments, but did not spell out that dashed options come
before other args, which has been corrected.
Will cook in 'next'.
source: <fe748304d94e0ae25fd3549aadc49cf951ff2d64.1642405806.git.dyroneteng@gmail.com>
* rs/bisect-executable-not-found (2022-01-19) 4 commits
- bisect--helper: double-check run command on exit code 126 and 127
- bisect: document run behavior with exit codes 126 and 127
- bisect--helper: release strbuf and strvec on run error
- bisect--helper: report actual bisect_state() argument on error
source: <fead25d6-6f5f-487a-ad4c-0657fe9785fd@www.fastmail.com>
* ds/sparse-checkout-requires-per-worktree-config (2022-01-14) 6 commits
. worktree: copy sparse-checkout patterns and config on add
. sparse-checkout: use repo_config_set_worktree_gently()
. config: add repo_config_set_worktree_gently()
. worktree: add 'init-worktree-config' subcommand
. config: make some helpers repo-aware
. setup: use a repository when upgrading format
"git sparse-checkout" wants to work with per-worktree configration,
but did not work well in a worktree attached to a bare repository.
Expecting an update.
cf. <1db0f601-4769-15c0-cd58-ecddfa1fc9d5@gmail.com>
Introduces new leaks.
cf. https://github.com/git/git/runs/4823667255?check_suite_focus=true
source: <pull.1101.v3.git.1640727143.gitgitgadget@gmail.com>
* pw/add-p-hunk-split-fix (2022-01-12) 2 commits
(merged to 'next' on 2022-01-19 at ea57b2c9a6)
+ builtin add -p: fix hunk splitting
+ t3701: clean up hunk splitting tests
"git add -p" rewritten in C regressed hunk splitting in some cases,
which has been corrected.
Will cook in 'next'.
source: <pull.1100.v2.git.1641899530.gitgitgadget@gmail.com>
* gc/fetch-negotiate-only-early-return (2022-01-20) 4 commits
(merged to 'next' on 2022-01-20 at e7616428eb)
+ fetch: help translators by reusing the same message template
(merged to 'next' on 2022-01-19 at 0f15147cfa)
+ fetch --negotiate-only: do not update submodules
+ fetch: skip tasks related to fetching objects
+ fetch: use goto cleanup in cmd_fetch()
"git fetch --negotiate-only" is an internal command used by "git
push" to figure out which part of our history is missing from the
other side. It should never recurse into submodules even when
fetch.recursesubmodules configuration variable is set, nor it
should trigger "gc". The code has been tightened up to ensure it
only does common ancestry discovery and nothing else.
Will cook in 'next'.
source: <20220119000056.58503-1-chooglen@google.com>
* jh/p4-fix-use-of-process-error-exception (2022-01-06) 1 commit
(merged to 'next' on 2022-01-10 at 49d529bfd7)
+ git-p4: fix instantiation of CalledProcessError
(this branch is used by jh/p4-various-fixups.)
Will cook in 'next'.
source: <20220106214156.90967-1-jholdsworth@nvidia.com>
* jh/p4-spawning-external-commands-cleanup (2022-01-06) 3 commits
(merged to 'next' on 2022-01-10 at 54b36b4e66)
+ git-p4: don't print shell commands as python lists
+ git-p4: pass command arguments as lists instead of using shell
+ git-p4: don't select shell mode using the type of the command argument
(this branch is used by jh/p4-various-fixups.)
Will cook in 'next'.
source: <20220106214035.90725-1-jholdsworth@nvidia.com>
* pb/pull-rebase-autostash-fix (2022-01-14) 1 commit
(merged to 'next' on 2022-01-14 at 83a388a7e2)
+ pull --rebase: honor rebase.autostash when fast-forwarding
"git pull --rebase" ignored the rebase.autostash configuration
variable when the remote history is a descendant of our history,
which has been corrected.
Will cook in 'next'.
source: <xmqqr19aayxp.fsf@gitster.g>
* rs/grep-expr-cleanup (2022-01-06) 4 commits
(merged to 'next' on 2022-01-10 at b70a3bb0fa)
+ grep: use grep_and_expr() in compile_pattern_and()
+ grep: extract grep_binexp() from grep_or_expr()
+ grep: use grep_not_expr() in compile_pattern_not()
+ grep: use grep_or_expr() in compile_pattern_or()
Code clean-up.
Will cook in 'next'.
source: <cover.1641498525.git.me@ttaylorr.com>
* fs/ssh-signing-crlf (2022-01-07) 1 commit
(merged to 'next' on 2022-01-19 at 76b86faafb)
+ gpg-interface: trim CR from ssh-keygen
The code path that verifies signatures made with ssh were made to
work better on a system with CRLF line endings.
Will cook in 'next'.
source: <20220107090735.580225-1-fs@gigacodes.de>
* jc/qsort-s-alignment-fix (2022-01-07) 2 commits
(merged to 'next' on 2022-01-10 at 329fd6e09a)
+ stable-qsort: avoid using potentially unaligned access
+ compat/qsort_s.c: avoid using potentially unaligned access
Fix a hand-rolled alloca() imitation that may have violated
alignment requirement of data being sorted in compatibility
implementation of qsort_s() and stable qsort().
Will cook in 'next'.
source: <f40c1b47-9aad-2dcc-ceeb-5dee2b517cd8@web.de>
source: <xmqqzgo76xpj.fsf@gitster.g>
* ps/avoid-unnecessary-hook-invocation-with-packed-refs (2022-01-17) 6 commits
- refs: skip hooks when deleting uncovered packed refs
- refs: do not execute reference-transaction hook on packing refs
- refs: demonstrate excessive execution of the reference-transaction hook
- refs: allow skipping the reference-transaction hook
- refs: allow passing flags when beginning transactions
- refs: extract packed_refs_delete_refs() to allow control of transaction
Because a deletion of ref would need to remove it from both the
loose ref store and the packed ref store, a delete-ref operation
that logically removes one ref may end up invoking ref-transaction
hook twice, which has been corrected.
Introduces new leaks when merged to 'seen'.
source: <cover.1642406989.git.ps@pks.im>
* rs/apply-symlinks-use-strset (2022-01-07) 1 commit
(merged to 'next' on 2022-01-10 at 32497a67d5)
+ apply: use strsets to track symlinks
"git apply" (ab)used the util pointer of the string-list to keep
track of how each symbolic link needs to be handled, which has been
simplified by using strset.
Will cook in 'next'.
source: <8739caad-aa3d-1f0f-b5dd-6174a8e059f6@web.de>
* ld/sparse-index-bash-completion (2022-01-10) 3 commits
- sparse-checkout: limit tab completion to a single level
- sparse-checkout: custom tab completion
- sparse-checkout: custom tab completion tests
The command line completion (in contrib/) learns to complete
arguments give to "git sparse-checkout" command.
source: <pull.1108.v3.git.1641841193.gitgitgadget@gmail.com>
* bc/clarify-eol-attr (2022-01-12) 2 commits
- docs: correct documentation about eol attribute
- t0027: add tests for eol without text in .gitattributes
Doc and test update around the eol attribute.
source: <20220111021507.531736-1-sandals@crustytoothpaste.net>
* jz/rev-list-exclude-first-parent-only (2022-01-12) 1 commit
- git-rev-list: add --exclude-first-parent-only flag
"git log" and friends learned an option --exclude-first-parent-only
to propagate UNINTERESTING bit down only along the first-parent
chain, just like --first-parent option shows commits that lack the
UNINTERESTING bit only along the first-parent chain.
source: <20220111213941.30129-1-jerry@skydio.com>
* en/present-despite-skipped (2022-01-14) 6 commits
- Accelerate clear_skip_worktree_from_present_files() by caching
- Update documentation related to sparsity and the skip-worktree bit
- repo_read_index: clear SKIP_WORKTREE bit from files present in worktree
- unpack-trees: fix accidental loss of user changes
- t1011: add testcase demonstrating accidental loss of user modifications
- Merge branch 'vd/sparse-clean-etc' into en/present-despite-skipped
(this branch uses vd/sparse-clean-etc.)
In sparse-checkouts, files mis-marked as missing from the working tree
could lead to later problems. Such files were hard to discover, and
harder to correct. Automatically detecting and correcting the marking
of such files has been added to avoid these problems.
source: <pull.1114.v2.git.1642175983.gitgitgadget@gmail.com>
* bc/csprng-mktemps (2022-01-17) 2 commits
- wrapper: use a CSPRNG to generate random file names
- wrapper: add a helper to generate numbers from a CSPRNG
Pick a better random number generator and use it when we prepare
temporary filenames.
Are we solving the right problem?
cf. <220118.86zgntpegy.gmgdl@evledraar.gmail.com>
source: <20220117215617.843190-1-sandals@crustytoothpaste.net>
* jc/reflog-parse-options (2022-01-10) 2 commits
(merged to 'next' on 2022-01-12 at 1659e49c4b)
+ builtin/reflog.c: use parse-options api for expire, delete subcommands
+ Merge branch 'ab/reflog-prep' into jc/reflog-parse-options
Use the parse-options API in "git reflog" command.
Will cook in 'next'.
source: <pull.1175.v5.git.git.1641495981650.gitgitgadget@gmail.com>
* vd/sparse-clean-etc (2022-01-13) 9 commits
- update-index: reduce scope of index expansion in do_reupdate
- update-index: integrate with sparse index
- update-index: add tests for sparse-checkout compatibility
- checkout-index: integrate with sparse index
- checkout-index: add --ignore-skip-worktree-bits option
- checkout-index: expand sparse checkout compatibility tests
- clean: integrate with sparse index
- reset: reorder wildcard pathspec conditions
- reset: fix validation in sparse index test
(this branch is used by en/present-despite-skipped.)
"git update-index", "git checkout-index", and "git clean" are
taught to work better with the sparse checkout feature.
source: <pull.1109.v2.git.1641924306.gitgitgadget@gmail.com>
* ms/update-index-racy (2022-01-07) 4 commits
(merged to 'next' on 2022-01-14 at 705a33f63b)
+ update-index: refresh should rewrite index in case of racy timestamps
+ t7508: add tests capturing racy timestamp handling
+ t7508: fix bogus mtime verification
+ test-lib: introduce API for verifying file mtime
"git update-index --refresh" has been taught to deal better with
racy timestamps (just like "git status" already does).
Will cook in 'next'.
source: <pull.1105.v4.git.1641554252.gitgitgadget@gmail.com>
* jc/find-header (2022-01-06) 1 commit
(merged to 'next' on 2022-01-10 at 8a13b4f0b3)
+ receive-pack.c: consolidate find header logic
Code clean-up.
Will cook in 'next'.
source: <pull.1125.v6.git.git.1641499655700.gitgitgadget@gmail.com>
* jc/name-rev-stdin (2022-01-10) 2 commits
(merged to 'next' on 2022-01-19 at a58e05fabe)
+ name-rev.c: use strbuf_getline instead of limited size buffer
+ name-rev: deprecate --stdin in favor of --annotate-stdin
"git name-rev --stdin" does not behave like usual "--stdin" at
all. Start the process of renaming it to "--annotate-stdin".
Will cook in 'next'.
source: <pull.1171.v7.git.git.1641425372.gitgitgadget@gmail.com>
* en/remerge-diff (2022-01-21) 11 commits
- diff-merges: avoid history simplifications when diffing merges
- merge-ort: mark conflict/warning messages from inner merges as omittable
- show, log: include conflict/warning messages in --remerge-diff headers
- diff: add ability to insert additional headers for paths
- merge-ort: format messages slightly different for use in headers
- merge-ort: mark a few more conflict messages as omittable
- merge-ort: capture and print ll-merge warnings in our preferred fashion
- ll-merge: make callers responsible for showing warnings
- log: clean unneeded objects during `log --remerge-diff`
- show, log: provide a --remerge-diff capability
- Merge branch 'ns/tmp-objdir' into en/remerge-diff
"git log --remerge-diff" shows the difference from mechanical merge
result and the merge result that is actually recorded.
Will merge to 'next'?
source: <pull.1103.v4.git.1642792341.gitgitgadget@gmail.com>
* bs/forbid-i18n-of-protocol-token-in-fetch-pack (2021-12-22) 2 commits
- fixup! fetch-pack: parameterize message containing 'ready' keyword
- fetch-pack: parameterize message containing 'ready' keyword
L10n support for a few error messages.
Expecting an ack for fixup.
source: <20211222075805.19027-1-bagasdotme@gmail.com>
* gc/branch-recurse-submodules (2022-01-10) 6 commits
- branch: add --recurse-submodules option for branch creation
- builtin/branch: clean up action-picking logic in cmd_branch()
- branch: add a dry_run parameter to create_branch()
- branch: make create_branch() always create a branch
- branch: move --set-upstream-to behavior to dwim_and_setup_tracking()
- Merge branch 'js/branch-track-inherit' into gc/branch-recurse-submodules
"git branch" learned the "--recurse-submodules" option.
Expecting a reroll.
cf. <kl6l7db6kvp2.fsf@chooglen-macbookpro.roam.corp.google.com>
source: <20211220233459.45739-1-chooglen@google.com>
* hn/reftable-coverity-fixes (2022-01-20) 17 commits
- reftable: add print functions to the record types
- reftable: make reftable_record a tagged union
- reftable: remove outdated file reftable.c
- reftable: implement record equality generically
- reftable: make reftable-record.h function signatures const correct
- reftable: handle null refnames in reftable_ref_record_equal
- reftable: drop stray printf in readwrite_test
- reftable: order unittests by complexity
- reftable: all xxx_free() functions accept NULL arguments
- reftable: fix resource warning
- reftable: ignore remove() return value in stack_test.c
- reftable: check reftable_stack_auto_compact() return value
- reftable: fix resource leak blocksource.c
- reftable: fix resource leak in block.c error path
- reftable: fix OOB stack write in print functions
- Merge branch 'hn/create-reflog-simplify' into hn/reftable-coverity-fixes
- Merge branch 'hn/reftable' into hn/reftable-coverity-fixes
Problems identified by Coverity in the reftable code have been
corrected.
Will merge to 'next'.
source: <pull.1152.v6.git.git.1642691534.gitgitgadget@gmail.com>
* tb/midx-bitmap-corruption-fix (2022-01-04) 9 commits
- pack-bitmap.c: gracefully fallback after opening pack/MIDX
- midx: read `RIDX` chunk when present
- t/lib-bitmap.sh: parameterize tests over reverse index source
- t5326: move tests to t/lib-bitmap.sh
- t5326: extract `test_rev_exists`
- t5326: drop unnecessary setup
- pack-revindex.c: instrument loading on-disk reverse index
- midx.c: make changing the preferred pack safe
- t5326: demonstrate bitmap corruption after permutation
A bug that made multi-pack bitmap and the object order out-of-sync
(hence the .midx data gets corrupted) has been fixed.
Waiting for a hopefully final review.
cf. <Ydceeo33Yt4N%2FbrN@nand.local>
source: <cover.1641320129.git.me@ttaylorr.com>
* pw/fix-some-issues-in-reset-head (2021-12-08) 14 commits
- rebase -m: don't fork git checkout
- rebase --apply: set ORIG_HEAD correctly
- rebase --apply: fix reflog
- reset_head(): take struct rebase_head_opts
- rebase: cleanup reset_head() calls
- reset_head(): make default_reflog_action optional
- reset_head(): factor out ref updates
- create_autostash(): remove unneeded parameter
- reset_head(): remove action parameter
- rebase --apply: don't run post-checkout hook if there is an error
- rebase: do not remove untracked files on checkout
- rebase: pass correct arguments to post-checkout hook
- t5403: refactor rebase post-checkout hook tests
- rebase: factor out checkout for up to date branch
Fix "some issues" in a helper function reset_head().
Expecting a reroll.
cf. <xmqqk0gdskkh.fsf@gitster.g>
cf. <xmqqwnkdr3xb.fsf@gitster.g>
cf. <xmqqpmq5r3j9.fsf@gitster.g>
cf. <xmqqczm5r34h.fsf@gitster.g>
cf. <CABPp-BEHW4VLG18twcM_8iOco1jZ2iuGT+KN8aS+-sAAnBhTnw@mail.gmail.com>
source: <pull.1049.v2.git.1638975481.gitgitgadget@gmail.com>
* ab/cat-file (2022-01-12) 12 commits
(merged to 'next' on 2022-01-12 at ee4d43041d)
+ cat-file: s/_/-/ in typo'd usage_msg_optf() message
+ cat-file: don't whitespace-pad "(...)" in SYNOPSIS and usage output
(merged to 'next' on 2022-01-05 at e145efa605)
+ cat-file: use GET_OID_ONLY_TO_DIE in --(textconv|filters)
+ object-name.c: don't have GET_OID_ONLY_TO_DIE imply *_QUIETLY
+ cat-file: correct and improve usage information
+ cat-file: fix remaining usage bugs
+ cat-file: make --batch-all-objects a CMDMODE
+ cat-file: move "usage" variable to cmd_cat_file()
+ cat-file docs: fix SYNOPSIS and "-h" output
+ parse-options API: add a usage_msg_optf()
+ cat-file tests: test messaging on bad objects/paths
+ cat-file tests: test bad usage
Assorted updates to "git cat-file", especially "-h".
Will cook in 'next'.
source: <cover-v6-00.10-00000000000-20211228T132637Z-avarab@gmail.com>
source: <cover-0.2-00000000000-20220110T220553Z-avarab@gmail.com>
* ab/grep-patterntype (2022-01-18) 10 commits
- grep.[ch]: remove GREP_PATTERN_TYPE_UNSPECIFIED
- grep: simplify config parsing and option parsing
- grep.c: do "if (bool && memchr())" not "if (memchr() && bool)"
- grep.h: make "grep_opt.pattern_type_option" use its enum
- grep API: call grep_config() after grep_init()
- grep.c: don't pass along NULL callback value
- built-ins: trust the "prefix" from run_builtin()
- grep tests: add missing "grep.patternType" config tests
- log tests: check if grep_config() is called by "log"-like cmds
- grep.h: remove unused "regex_t regexp" from grep_opt
Some code clean-up in the "git grep" machinery.
Looking good, except for the last two steps.
source: <cover-v8-00.10-00000000000-20220118T155211Z-avarab@gmail.com>
* js/use-builtin-add-i (2021-12-01) 2 commits
- add -i: default to the built-in implementation
- t2016: require the PERL prereq only when necessary
"git add -i" was rewritten in C some time ago and has been in
testing; the reimplementation is now exposed to general public by
default.
On hold.
There are known breakages on macOS.
cf. <nycvar.QRO.7.76.6.2112021832060.63@tvgsbejvaqbjf.bet>
source: <pull.1087.git.1638281655.gitgitgadget@gmail.com>
* jt/conditional-config-on-remote-url (2022-01-18) 2 commits
(merged to 'next' on 2022-01-19 at 3c2df266eb)
+ config: include file if remote URL matches a glob
+ config: make git_config_include() static
The conditional inclusion mechanism of configuration files using
"[includeIf <condition>]" learns to base its decision on the
URL of the remote repository the repository interacts with.
Will cook in 'next'.
source: <cover.1642527965.git.jonathantanmy@google.com>
* ab/ambiguous-object-name (2022-01-13) 6 commits
- object-name: re-use "struct strbuf" in show_ambiguous_object()
- object-name: iterate ambiguous objects before showing header
- object-name: show date for ambiguous tag objects
- object-name: make ambiguous object output translatable
- object-name: explicitly handle OBJ_BAD in show_ambiguous_object()
- object-name tests: add tests for ambiguous object blind spots
Error output given in response to an ambiguous object name has been
improved.
source: <cover-v7-0.6-00000000000-20220111T130811Z-avarab@gmail.com>
* tl/ls-tree-oid-only (2022-01-13) 9 commits
- ls-tree.c: introduce "--format" option
- cocci: allow padding with `strbuf_addf()`
- ls-tree.c: introduce struct "show_tree_data"
- ls-tree.c: support --object-only option for "git-ls-tree"
- ls-tree: optimize naming and handling of "return" in show_tree()
- ls-tree: use "size_t", not "int" for "struct strbuf"'s "len"
- ls-tree: use "enum object_type", not {blob,tree,commit}_type
- ls-tree: add missing braces to "else" arms
- ls-tree: remove commented-out code
"git ls-tree" learns "--oid-only" option, similar to "--name-only",
and more generalized "--format" option.
source: <cover.1641978175.git.dyroneteng@gmail.com>
* ab/config-based-hooks-2 (2022-01-07) 17 commits
(merged to 'next' on 2022-01-19 at 594b6da22c)
+ run-command: remove old run_hook_{le,ve}() hook API
+ receive-pack: convert push-to-checkout hook to hook.h
+ read-cache: convert post-index-change to use hook.h
+ commit: convert {pre-commit,prepare-commit-msg} hook to hook.h
+ git-p4: use 'git hook' to run hooks
+ send-email: use 'git hook run' for 'sendemail-validate'
+ git hook run: add an --ignore-missing flag
+ hooks: convert worktree 'post-checkout' hook to hook library
+ hooks: convert non-worktree 'post-checkout' hook to hook library
+ merge: convert post-merge to use hook.h
+ am: convert applypatch-msg to use hook.h
+ rebase: convert pre-rebase to use hook.h
+ hook API: add a run_hooks_l() wrapper
+ am: convert {pre,post}-applypatch to use hook.h
+ gc: use hook library for pre-auto-gc hook
+ hook API: add a run_hooks() wrapper
+ hook: add 'run' subcommand
More "config-based hooks".
Will cook in 'next'.
source: <cover-v6-00.17-00000000000-20211222T035755Z-avarab@gmail.com>
* jh/builtin-fsmonitor-part2 (2021-12-25) 31 commits
- fixup! t7527: create test for fsmonitor--daemon
- fixup! t/perf/p7519: speed up test on Windows
- t7527: test status with untracked-cache and fsmonitor--daemon
- fsmonitor: force update index after large responses
- fsmonitor--daemon: use a cookie file to sync with file system
- fsmonitor--daemon: periodically truncate list of modified files
- t/perf/p7519: add fsmonitor--daemon test cases
- t/perf/p7519: speed up test on Windows
- t/helper/test-chmtime: skip directories on Windows
- t/perf: avoid copying builtin fsmonitor files into test repo
- t7527: create test for fsmonitor--daemon
- t/helper/fsmonitor-client: create IPC client to talk to FSMonitor Daemon
- help: include fsmonitor--daemon feature flag in version info
- fsmonitor--daemon: implement handle_client callback
- compat/fsmonitor/fsm-listen-darwin: implement FSEvent listener on MacOS
- compat/fsmonitor/fsm-listen-darwin: add macos header files for FSEvent
- compat/fsmonitor/fsm-listen-win32: implement FSMonitor backend on Windows
- fsmonitor--daemon: create token-based changed path cache
- fsmonitor--daemon: define token-ids
- fsmonitor--daemon: add pathname classification
- fsmonitor--daemon: implement 'start' command
- fsmonitor--daemon: implement 'run' command
- compat/fsmonitor/fsm-listen-darwin: stub in backend for Darwin
- compat/fsmonitor/fsm-listen-win32: stub in backend for Windows
- fsmonitor--daemon: implement 'stop' and 'status' commands
- fsmonitor--daemon: add a built-in fsmonitor daemon
- fsmonitor: document builtin fsmonitor
- fsmonitor: use IPC to query the builtin FSMonitor daemon
- fsmonitor: config settings are repository-specific
- fsmonitor-ipc: create client routines for git-fsmonitor--daemon
- fsmonitor: enhance existing comments
Built-in fsmonitor (part 2).
Expecting a reroll.
Seems that the discussion stalled.
cf. <d9c3ef61-768c-3560-2858-3438c355a742@jeffhostetler.com>
source: <pull.1041.v4.git.1634826309.gitgitgadget@gmail.com>
* es/superproject-aware-submodules (2021-11-18) 5 commits
- submodule: use config to find superproject worktree
- submodule: record superproject gitdir during 'update'
- submodule: record superproject gitdir during absorbgitdirs
- introduce submodule.superprojectGitDir record
- t7400-submodule-basic: modernize inspect() helper
A configuration variable in a submodule points at the location of
the superproject it is bound to (RFC).
Expecting a reroll.
cf. <20211117234300.2598132-1-jonathantanmy@google.com>
source: <20211117005701.371808-1-emilyshaffer@google.com>
* ab/only-single-progress-at-once (2022-01-07) 7 commits
- *.c: use isatty(0|2), not isatty(STDIN_FILENO|STDERR_FILENO)
- pack-bitmap-write.c: don't return without stop_progress()
- progress.c: add temporary variable from progress struct
- progress.c tests: test some invalid usage
- progress.c tests: make start/stop commands on stdin
- progress.c test helper: add missing braces
- leak tests: fix a memory leak in "test-progress" helper
Further tweaks on progress API.
Getting there.
source: <cover-v8-0.7-00000000000-20211228T150728Z-avarab@gmail.com>
^ permalink raw reply [relevance 3%]
* Re: [PATCH 2/2] merge: fix memory leaks in cmd_merge()
2022-01-20 7:47 2% ` [PATCH 2/2] merge: fix memory leaks in cmd_merge() Elijah Newren via GitGitGadget
@ 2022-01-22 0:05 2% ` Junio C Hamano
0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2022-01-22 0:05 UTC (permalink / raw)
To: Elijah Newren via GitGitGadget
Cc: git, Ævar Arnfjörð Bjarmason, Elijah Newren
"Elijah Newren via GitGitGadget" <gitgitgadget@gmail.com> writes:
> done:
> + if (!automerge_was_ok) {
> + free_commit_list(common);
> + free_commit_list(remoteheads);
> + }
I wondered what happens upon a successful automerge.
We call finish_automerge() and come here, and I do see a call to
free_commit_list(common) in finish_automerge(), but the way
remoteheads is used looked a bit iffy.
In finish_automerge(), we use a temporary variable parents to point
remoteheads at it, and conditionally prepend the current HEAD at the
beginning of the parents list. This is passed to commit_tree(),
which does pop_commit() to consume all commits on the list.
So after commit_tree() returns, all commit_list instances on
remoteheads list, and possibly the one finish_automerge() prepended
for the current HEAD, are all consumed, and there is no need to
call, and it would be wrong to call, free_commit_list(), at this
point.
So, I agree that this conditional freeing is correct. It was just
it was a bit hard to see.
Thanks.
^ permalink raw reply [relevance 2%]
* [PATCH 0/2] Fix some old memory leaks in merge-ort and builtin/merge
@ 2022-01-20 7:47 3% Elijah Newren via GitGitGadget
2022-01-20 7:47 2% ` [PATCH 2/2] merge: fix memory leaks in cmd_merge() Elijah Newren via GitGitGadget
0 siblings, 1 reply; 200+ results
From: Elijah Newren via GitGitGadget @ 2022-01-20 7:47 UTC (permalink / raw)
To: git; +Cc: Ævar Arnfjörð Bjarmason, Elijah Newren
This series fixes three memory leaks.
The first comes from a report at [1]. It's a leak in merge-ort that
pre-dates the remerge-diff topic (technically traceable back 15.5 years ago
across merge-recursive.c history) and is triggerable from a variety of
testcases. I think I may have overlooked it previously just because there's
other leaks in revision walking and this looks like one of those.
The next two leaks were ones in builtin/merge.c found while fixing the above
leak; they are fixed together in the second patch.
[1] https://lore.kernel.org/git/220119.86pmonn2mb.gmgdl@evledraar.gmail.com/
Elijah Newren (2):
merge-ort: fix memory leak in merge_ort_internal()
merge: fix memory leaks in cmd_merge()
builtin/merge.c | 6 +++++-
merge-ort.c | 10 +++++-----
2 files changed, 10 insertions(+), 6 deletions(-)
base-commit: af4e5f569bc89f356eb34a9373d7f82aca6faa8a
Published-As: https://github.com/gitgitgadget/git/releases/tag/pr-git-1200%2Fnewren%2Fmerge-leaks-v1
Fetch-It-Via: git fetch https://github.com/gitgitgadget/git pr-git-1200/newren/merge-leaks-v1
Pull-Request: https://github.com/git/git/pull/1200
--
gitgitgadget
^ permalink raw reply [relevance 3%]
* [PATCH 2/2] merge: fix memory leaks in cmd_merge()
2022-01-20 7:47 3% [PATCH 0/2] Fix some old memory leaks in merge-ort and builtin/merge Elijah Newren via GitGitGadget
@ 2022-01-20 7:47 2% ` Elijah Newren via GitGitGadget
2022-01-22 0:05 2% ` Junio C Hamano
0 siblings, 1 reply; 200+ results
From: Elijah Newren via GitGitGadget @ 2022-01-20 7:47 UTC (permalink / raw)
To: git; +Cc: Ævar Arnfjörð Bjarmason, Elijah Newren,
Elijah Newren
From: Elijah Newren <newren@gmail.com>
There were two commit_lists created in cmd_merge() that were only
conditionally free()'d. Add a quick conditional call to
free_commit_list() for each of them at the end of the function.
Testing this commit against t6404 under valgrind shows that this patch
fixes the following two leaks:
16 bytes in 1 blocks are definitely lost in loss record 16 of 126
at 0x484086F: malloc (vg_replace_malloc.c:380)
by 0x69FFEB: do_xmalloc (wrapper.c:41)
by 0x6A0073: xmalloc (wrapper.c:62)
by 0x52A72D: commit_list_insert (commit.c:556)
by 0x47FC93: reduce_parents (merge.c:1114)
by 0x4801EE: collect_parents (merge.c:1214)
by 0x480B56: cmd_merge (merge.c:1465)
by 0x40686E: run_builtin (git.c:464)
by 0x406C51: handle_builtin (git.c:716)
by 0x406E96: run_argv (git.c:783)
by 0x40730A: cmd_main (git.c:914)
by 0x4E7DFA: main (common-main.c:56)
8 (16 direct, 32 indirect) bytes in 1 blocks are definitely lost in \
loss record 61 of 126
at 0x484086F: malloc (vg_replace_malloc.c:380)
by 0x69FFEB: do_xmalloc (wrapper.c:41)
by 0x6A0073: xmalloc (wrapper.c:62)
by 0x52A72D: commit_list_insert (commit.c:556)
by 0x52A8F2: commit_list_insert_by_date (commit.c:620)
by 0x5270AC: get_merge_bases_many_0 (commit-reach.c:413)
by 0x52716C: repo_get_merge_bases (commit-reach.c:438)
by 0x480E5A: cmd_merge (merge.c:1520)
by 0x40686E: run_builtin (git.c:464)
by 0x406C51: handle_builtin (git.c:716)
by 0x406E96: run_argv (git.c:783)
by 0x40730A: cmd_main (git.c:914)
There are still 3 leaks in chdir_notify_register() after this, but
chdir_notify_register() has been brought up on the list before and folks
were not a fan of fixing those, so I'm not touching them.
Signed-off-by: Elijah Newren <newren@gmail.com>
---
builtin/merge.c | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/builtin/merge.c b/builtin/merge.c
index 74e53cf20a7..bd8fff9b223 100644
--- a/builtin/merge.c
+++ b/builtin/merge.c
@@ -1273,7 +1273,7 @@ int cmd_merge(int argc, const char **argv, const char *prefix)
int best_cnt = -1, merge_was_ok = 0, automerge_was_ok = 0;
struct commit_list *common = NULL;
const char *best_strategy = NULL, *wt_strategy = NULL;
- struct commit_list *remoteheads, *p;
+ struct commit_list *remoteheads = NULL, *p;
void *branch_to_free;
int orig_argc = argc;
@@ -1752,6 +1752,10 @@ int cmd_merge(int argc, const char **argv, const char *prefix)
ret = suggest_conflicts();
done:
+ if (!automerge_was_ok) {
+ free_commit_list(common);
+ free_commit_list(remoteheads);
+ }
strbuf_release(&buf);
free(branch_to_free);
return ret;
--
gitgitgadget
^ permalink raw reply related [relevance 2%]
* Re: [PATCH] t7900: add '--scheduler=launchctl' parameter to fix test
@ 2021-08-31 15:59 2% ` Junio C Hamano
0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2021-08-31 15:59 UTC (permalink / raw)
To: Ramsay Jones; +Cc: Derrick Stolee, Lénaïc Huard, GIT Mailing-list
Ramsay Jones <ramsay@ramsayjones.plus.com> writes:
> On 30/08/2021 17:02, Junio C Hamano wrote:
>> Ramsay Jones <ramsay@ramsayjones.plus.com> writes:
>>
> [snip]
>>
>> This test comes from outside Lénaïc's series. I guess I am seeing a
>> botched semantic merge conflict resolution of mine where the two
>> topics met.
>
> Oops! :( My apologies to you both.
>
> My build of 'seen' had two test failures (t5319.19 and this one), and
> I had to be somewhere else in about 30 mins ...
>
> I should know by now not to rush out a patch ... Sorry to have wasted
> your time.
No, the input was very valuable to me. Neither topic has enough to
solve the issue because the new test got created in the topic that
does not yet have the --scheduler option in the "git maintenance"
command, and the other topic that added the option does not yet have
the test yet.
Unless one topic is made to build on the other, it is a semantic
context for me to resolve.
Hopefully what is near the tip of 'seen' now has the merge fix.
THanks.
^ permalink raw reply [relevance 2%]
* Re: 'git pull' complains that a locally resurrected directory would be overwritten by merge when no pulled changes are affecting that directory
@ 2021-08-25 15:42 3% ` Elijah Newren
0 siblings, 0 replies; 200+ results
From: Elijah Newren @ 2021-08-25 15:42 UTC (permalink / raw)
To: Jeff King; +Cc: Yuri, Git Mailing List
On Tue, Aug 24, 2021 at 6:09 PM Jeff King <peff@peff.net> wrote:
>
> On Tue, Aug 24, 2021 at 09:41:49AM -0700, Yuri wrote:
>
> > In the FreeBSD ports repository I resurrected the directory (that was
> > removed a long time ago) with the command:
> >
> > > $ git checkout {hash}~1 -- math/polymake
> >
> >
> > I made local changes to this directory and called 'git add math/polymake'.
> >
> > Then 'git pull' complained:
> >
> > > $ git pull
> > > error: Your local changes to the following files would be overwritten by
> > merge:
> > > math/polymake/Makefile math/polymake/distinfo
> > math/polymake/files/patch-Makefile
> > math/polymake/files/patch-support_install.pl math/polymake/pkg-descr
> > math/polymake/pkg-plist
> >
> >
> > No incoming changes affect math/polymake. Nobody has created this directory
> > simultaneously with me. There is no intersection with incoming changes.
> >
> >
> > Why does 'git pull' complain then?
>
> It's hard to say without seeing a full example. The merge machinery is
> supposed to handle this situation (and indeed, in a simple reproduction
> example it does). So presumably it thinks the other side may have
> touched those files for some reason. Perhaps it's confused by rename
> detection?
>
> Is it possible to give us a more complete example, including:
>
> - a url for the repository
> - the commit at HEAD when you ran "git checkout"
> - the {hash} commit from which you rescued the files
> - the state of the remote branch (i.e., what we attempted to merge
> with "git pull")
>
> ?
The `git checkout {hash}~1 -- math/polymake` is enough to highlight
that Yuri doesn't just have local changes (which the merge machinery
should allow if the incoming changes don't touch the same files), but
local *staged* changes. As per the merge manpage:
"""
To avoid recording unrelated changes in the merge commit, git pull and
git merge will also abort if there are any changes registered in the
index relative to the HEAD commit.
"""
While this particular example could theoretically be handled by the
merge machinery without requiring the index match HEAD, at least with
the new ort backend (it'd be way too complex with the recursive
backend, see below), in practice I'm so sick of index != HEAD bugs
that I have zero motivation to even consider it and I might even NAK
patches from others who attempted it. For why, let me quote from the
commit message of 9822175d2b ("Ensure index matches head before
invoking merge machinery, round N", 2019-08-17), which also references
another commit that I'm tempted to also quote:
"""
Ensure index matches head before invoking merge machinery, round N
This is the bug that just won't die; there always seems to be another
form of it somewhere. See the commit message of 55f39cf7551b ("merge:
fix misleading pre-merge check documentation", 2018-06-30) for a more
detailed explanation), but in short:
<quick summary>
builtin/merge.c contains this important requirement for merge
strategies:
...the index must be in sync with the head commit. The strategies are
responsible to ensure this.
This condition is important to enforce because there are two likely
failure cases when the index isn't in sync with the head commit:
* we silently throw away changes the user had staged before the merge
* we accidentally (and silently) include changes in the merge that
were not part of either of the branches/trees being merged
Discarding users' work and mis-merging are both bad outcomes, especially
when done silently, so naturally this rule was stated sternly -- but,
unfortunately totally ignored in practice unless and until actual bugs
were found. But, fear not: the bugs from this were fixed in commit
ee6566e8d70d ("[PATCH] Rewrite read-tree", 2005-09-05)
through a rewrite of read-tree (again, commit 55f39cf7551b has a more
detailed explanation of how this affected merge). And it was fixed
again in commit
160252f81626 ("git-merge-ours: make sure our index matches HEAD", 2005-11-03)
...and it was fixed again in commit
3ec62ad9ffba ("merge-octopus: abort if index does not match HEAD", 2016-04-09)
...and again in commit
65170c07d466 ("merge-recursive: avoid incorporating uncommitted
changes in a merge", 2017-12-21)
...and again in commit
eddd1a411d93 ("merge-recursive: enforce rule that index matches head
before merging", 2018-06-30)
...with multiple testcases added to the testsuite that could be
enumerated in even more commits.
Then, finally, in a patch in the same series as the last fix above, the
documentation about this requirement was fixed in commit 55f39cf7551b
("merge: fix misleading pre-merge check documentation", 2018-06-30), and
we all lived happily ever after...
</quick summary>
Unfortunately, "ever after" apparently denotes a limited time and it
expired today.
"""
and then the commit message goes on to explain multiple other bugs
found and fixed due to not strictly enforcing that the index needs to
match HEAD before starting a merge.
^ permalink raw reply [relevance 3%]
* [PATCH 2/4] merge: fix Yoda conditions
2021-06-13 22:58 3% [PATCH 0/4] merge: cleanups and fix Felipe Contreras
@ 2021-06-13 22:58 2% ` Felipe Contreras
0 siblings, 0 replies; 200+ results
From: Felipe Contreras @ 2021-06-13 22:58 UTC (permalink / raw)
To: git; +Cc: Jeff King, Junio C Hamano, Felipe Contreras
Signed-off-by: Felipe Contreras <felipe.contreras@gmail.com>
---
builtin/merge-file.c | 2 +-
xdiff/xmerge.c | 6 +++---
2 files changed, 4 insertions(+), 4 deletions(-)
diff --git a/builtin/merge-file.c b/builtin/merge-file.c
index 0186f4156a..6affccaf19 100644
--- a/builtin/merge-file.c
+++ b/builtin/merge-file.c
@@ -51,7 +51,7 @@ int cmd_merge_file(int argc, const char **argv, const char *prefix)
if (startup_info->have_repository) {
/* Read the configuration file */
git_config(git_xmerge_config, NULL);
- if (0 <= git_xmerge_style)
+ if (git_xmerge_style >= 0)
xmp.style = git_xmerge_style;
}
diff --git a/xdiff/xmerge.c b/xdiff/xmerge.c
index 1659edb453..ab3448ca88 100644
--- a/xdiff/xmerge.c
+++ b/xdiff/xmerge.c
@@ -487,7 +487,7 @@ static int xdl_do_merge(xdfenv_t *xe1, xdchange_t *xscr1,
* "diff3 -m" output does not make sense for anything
* more aggressive than XDL_MERGE_EAGER.
*/
- if (XDL_MERGE_EAGER < level)
+ if (level > XDL_MERGE_EAGER)
level = XDL_MERGE_EAGER;
}
@@ -603,10 +603,10 @@ static int xdl_do_merge(xdfenv_t *xe1, xdchange_t *xscr1,
if (!changes)
changes = c;
/* refine conflicts */
- if (XDL_MERGE_ZEALOUS <= level &&
+ if (level >= XDL_MERGE_ZEALOUS &&
(xdl_refine_conflicts(xe1, xe2, changes, xpp) < 0 ||
xdl_simplify_non_conflicts(xe1, changes,
- XDL_MERGE_ZEALOUS < level) < 0)) {
+ level > XDL_MERGE_ZEALOUS) < 0)) {
xdl_cleanup_merge(changes);
return -1;
}
--
2.32.0
^ permalink raw reply related [relevance 2%]
* [PATCH 0/4] merge: cleanups and fix
@ 2021-06-13 22:58 3% Felipe Contreras
2021-06-13 22:58 2% ` [PATCH 2/4] merge: fix Yoda conditions Felipe Contreras
0 siblings, 1 reply; 200+ results
From: Felipe Contreras @ 2021-06-13 22:58 UTC (permalink / raw)
To: git; +Cc: Jeff King, Junio C Hamano, Felipe Contreras
Investigating a crash with the proposed zdiff3 [1] I found some easy
improvements in the merge/xmerge code and one crash fix.
These should not cause any functional changes, even the fix doesn't
affect any current code-paths.
[1] https://lore.kernel.org/git/YMYnVWSEgxvKRU9j@coredump.intra.peff.net/
Felipe Contreras (4):
merge: simplify initialization
merge: fix Yoda conditions
xdiff/xmerge: simplify xdl_recs_copy_0
xdiff/xmerge: fix chg0 initialization
builtin/merge-file.c | 8 ++------
xdiff/xmerge.c | 30 ++++++++++++++++--------------
2 files changed, 18 insertions(+), 20 deletions(-)
--
2.32.0
^ permalink raw reply [relevance 3%]
* [PATCH] add_pending_object_with_path(): work around "gcc -O3" complaint
@ 2021-06-10 13:06 1% Jeff King
0 siblings, 0 replies; 200+ results
From: Jeff King @ 2021-06-10 13:06 UTC (permalink / raw)
To: git; +Cc: Ævar Arnfjörð Bjarmason
When compiling with -O3, some gcc versions (10.2.1 here) complain about
an out-of-bounds subscript:
revision.c: In function ‘do_add_index_objects_to_pending’:
revision.c:321:22: error: array subscript [1, 2147483647] is outside array bounds of ‘char[1]’ [-Werror=array-bounds]
321 | if (0 < len && name[len] && buf.len)
| ~~~~^~~~~
The "len" parameter here comes from calling interpret_branch_name(),
which intends to return the number of characters of "name" it parsed.
But the compiler doesn't realize this. It knows the size of the empty
string "name" passed in from do_add_index_objects_to_pending(), but it
has no clue that the "len" we get back will be constrained to "0" in
that case.
And I don't think the warning is telling us about some subtle or clever
bug. The implementation of interpret_branch_name() is in another file
entirely, and the compiler can't see it (you can even verify there is no
clever LTO going on by replacing it with "return 0" and still getting
the warning).
We can work around this by replacing our "did we hit the trailing NUL"
subscript dereference with a length check. We do not even have to pay
the cost for an extra strlen(), as we can pass our new length into
interpret_branch_name(), which was converting our "0" into a call to
strlen() anyway.
Signed-off-by: Jeff King <peff@peff.net>
---
Together with ab/trace2-squelch-gcc-warning and the ll-merge fix I
posted in [0], this makes the whole project compile cleanly with "-O3"
for me.
I suspect after this patch we could drop the "if len is 0, call strlen()
as a courtesy" code from interpret_branch_name() entirely. But the call
stack gets pretty hairy (some of these len values come directly from
the get_oid functions directly!) so I wasn't brave enough to follow
through on that.
It's even possible the current code in interpret_branch_name() could be
buggy here, if some caller is using a non-NUL-terminated buffer or a
portion of a string, and we mistake a true "0" size for a request to
call strlen(). That might be worth poking at, but I didn't want to spend
time on it just now.
[0] https://lore.kernel.org/git/YMIKwsEFnkqz6PWa@coredump.intra.peff.net/
revision.c | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/revision.c b/revision.c
index 8140561b6c..cddd0542a6 100644
--- a/revision.c
+++ b/revision.c
@@ -316,9 +316,10 @@ static void add_pending_object_with_path(struct rev_info *revs,
revs->no_walk = 0;
if (revs->reflog_info && obj->type == OBJ_COMMIT) {
struct strbuf buf = STRBUF_INIT;
- int len = interpret_branch_name(name, 0, &buf, &options);
+ size_t namelen = strlen(name);
+ int len = interpret_branch_name(name, namelen, &buf, &options);
- if (0 < len && name[len] && buf.len)
+ if (0 < len && len < namelen && buf.len)
strbuf_addstr(&buf, name + len);
add_reflog_for_walk(revs->reflog_info,
(struct commit *)obj,
--
2.32.0.529.g079a794268
^ permalink raw reply related [relevance 1%]
* [ANNOUNCE] Git v2.32.0
@ 2021-06-06 12:40 3% Junio C Hamano
0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2021-06-06 12:40 UTC (permalink / raw)
To: git; +Cc: Linux Kernel, git-packagers
The latest feature release Git v2.32.0 is now available at the
usual places. It is comprised of 617 non-merge commits since
v2.31.0, contributed by 100 people, 35 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.32.0'
tag and the 'master' branch that the tag points at:
url = https://git.kernel.org/pub/scm/git/git
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.31.0 are as
follows. Welcome to the Git development community!
Adam Sharafeddine, Alexey Roslyakov, Andrey Bienkowski,
Atharva Raykar, Bruno Albuquerque, Chinmoy Chakraborty,
Christopher Schenk, Dan Moseley, David Emett, Dmitry Torilov,
Fabien Terrani, Firmin Martin, Georgios Kontaxis, Jason Gore,
Jerry Zhang, Joachim Kuebart, Joseph Vusich, Josh Soref,
Julien Richard, Li Linchao, Louis Sautier, Luke Shumaker,
Matheus Tavares Bernardino, Nicholas Clark, Peter Oliver,
Renato Botelho, rlespinasse, Robert Foss, RyotaK, Sardorbek
Imomaliev, Tom Saeger, Vincent Tam, Will Chandler, Wolfgang
Müller, and Yiyuan guo.
Returning contributors who helped this release are as follows.
Thanks for your continued support.
Adam Dinwoodie, Ævar Arnfjörð Bjarmason, Alexander Shopov,
Alex Henrie, Andrzej Hunt, Bagas Sanjaya, Ben Humphreys, brian
m. carlson, Charvi Mendiratta, Christian Couder, Christopher Diaz
Riveros, Daniel Santos, David Aguilar, Dennis Ameling, Denton
Liu, Derrick Stolee, Đoàn Trần Công Danh, Elijah Newren,
Emir Sarı, Eric Sunshine, Eric Wong, Han-Wen Nienhuys, Han Xin,
Jean-Noël Avila, Jeff Hostetler, Jeff King, Jiang Xin, Johannes
Schindelin, Johannes Sixt, John Szakmeister, Jonathan Nieder,
Jonathan Tan, Jordi Mas, Junio C Hamano, Kyle Meyer, Lénaïc
Huard, Luke Diamand, Marc Branchaud, Martin Ågren, Matheus
Tavares, Matthias Rüster, Nguyễn Thái Ngọc Duy, Nipunn
Koorapati, Øystein Walle, Patrick Steinhardt, Peter Krefting,
Phillip Wood, Rafael Silva, Ralf Thielow, Ramkumar Ramachandra,
Ramsay Jones, Randall S. Becker, René Scharfe, Sergey Organov,
Shubham Verma, Son Luong Ngoc, SZEDER Gábor, Taylor Blau,
Todd Zullinger, Torsten Bögershausen, Trần Ngọc Quân,
Trygve Aaberge, Ville Skyttä, Yi-Jyun Pan, and ZheNing Hu.
[*] We are counting not just the authorship contribution but issue
reporting, mentoring, helping and reviewing that are recorded in
the commit trailers.
----------------------------------------------------------------
Git 2.32 Release Notes
======================
Backward compatibility notes
----------------------------
* ".gitattributes", ".gitignore", and ".mailmap" files that are
symbolic links are ignored.
* "git apply --3way" used to first attempt a straight application,
and only fell back to the 3-way merge algorithm when the stright
application failed. Starting with this version, the command will
first try the 3-way merge algorithm and only when it fails (either
resulting with conflict or the base versions of blobs are missing),
falls back to the usual patch application.
Updates since v2.31
-------------------
UI, Workflows & Features
* It does not make sense to make ".gitattributes", ".gitignore" and
".mailmap" symlinks, as they are supposed to be usable from the
object store (think: bare repositories where HEAD:.mailmap etc. are
used). When these files are symbolic links, we used to read the
contents of the files pointed by them by mistake, which has been
corrected.
* "git stash show" learned to optionally show untracked part of the
stash.
* "git log --format='...'" learned "%(describe)" placeholder.
* "git repack" so far has been only capable of repacking everything
under the sun into a single pack (or split by size). A cleverer
strategy to reduce the cost of repacking a repository has been
introduced.
* The http codepath learned to let the credential layer to cache the
password used to unlock a certificate that has successfully been
used.
* "git commit --fixup=<commit>", which was to tweak the changes made
to the contents while keeping the original log message intact,
learned "--fixup=(amend|reword):<commit>", that can be used to
tweak both the message and the contents, and only the message,
respectively.
* "git send-email" learned to honor the core.hooksPath configuration.
* "git format-patch -v<n>" learned to allow a reroll count that is
not an integer.
* "git commit" learned "--trailer <key>[=<value>]" option; together
with the interpret-trailers command, this will make it easier to
support custom trailers.
* "git clone --reject-shallow" option fails the clone as soon as we
notice that we are cloning from a shallow repository.
* A configuration variable has been added to force tips of certain
refs to be given a reachability bitmap.
* "gitweb" learned "e-mail privacy" feature to redact strings that
look like e-mail addresses on various pages.
* "git apply --3way" has always been "to fall back to 3-way merge
only when straight application fails". Swap the order of falling
back so that 3-way is always attempted first (only when the option
is given, of course) and then straight patch application is used as
a fallback when it fails.
* "git apply" now takes "--3way" and "--cached" at the same time, and
work and record results only in the index.
* The command line completion (in contrib/) has learned that
CHERRY_PICK_HEAD is a possible pseudo-ref.
* Userdiff patterns for "Scheme" has been added.
* "git log" learned "--diff-merges=<style>" option, with an
associated configuration variable log.diffMerges.
* "git log --format=..." placeholders learned %ah/%ch placeholders to
request the --date=human output.
* Replace GIT_CONFIG_NOSYSTEM mechanism to decline from reading the
system-wide configuration file with GIT_CONFIG_SYSTEM that lets
users specify from which file to read the system-wide configuration
(setting it to an empty file would essentially be the same as
setting NOSYSTEM), and introduce GIT_CONFIG_GLOBAL to override the
per-user configuration in $HOME/.gitconfig.
* "git add" and "git rm" learned not to touch those paths that are
outside of sparse checkout.
* "git rev-list" learns the "--filter=object:type=<type>" option,
which can be used to exclude objects of the given kind from the
packfile generated by pack-objects.
* The command line completion (in contrib/) for "git stash" has been
updated.
* "git subtree" updates.
* It is now documented that "format-patch" skips merges.
* Options to "git pack-objects" that take numeric values like
--window and --depth should not accept negative values; the input
validation has been tightened.
* The way the command line specified by the trailer.<token>.command
configuration variable receives the end-user supplied value was
both error prone and misleading. An alternative to achieve the
same goal in a safer and more intuitive way has been added, as
the trailer.<token>.cmd configuration variable, to replace it.
* "git add -i --dry-run" does not dry-run, which was surprising. The
combination of options has taught to error out.
* "git push" learns to discover common ancestor with the receiving
end over protocol v2. This will hopefully make "git push" as
efficient as "git fetch" in avoiding objects from getting
transferred unnecessarily.
* "git mailinfo" (hence "git am") learned the "--quoted-cr" option to
control how lines ending with CRLF wrapped in base64 or qp are
handled.
Performance, Internal Implementation, Development Support etc.
* Rename detection rework continues.
* GIT_TEST_FAIL_PREREQS is a mechanism to skip test pieces with
prerequisites to catch broken tests that depend on the side effects
of optional pieces, but did not work at all when negative
prerequisites were involved.
(merge 27d578d904 jk/fail-prereq-testfix later to maint).
* "git diff-index" codepath has been taught to trust fsmonitor status
to reduce number of lstat() calls.
(merge 7e5aa13d2c nk/diff-index-fsmonitor later to maint).
* Reorganize Makefile to allow building git.o and other essential
objects without extra stuff needed only for testing.
* Preparatory API changes for parallel checkout.
* A simple IPC interface gets introduced to build services like
fsmonitor on top.
* Fsck API clean-up.
* SECURITY.md that is facing individual contributors and end users
has been introduced. Also a procedure to follow when preparing
embargoed releases has been spelled out.
(merge 09420b7648 js/security-md later to maint).
* Optimize "rev-list --use-bitmap-index --objects" corner case that
uses negative tags as the stopping points.
* CMake update for vsbuild.
* An on-disk reverse-index to map the in-pack location of an object
back to its object name across multiple packfiles is introduced.
* Generate [ec]tags under $(QUIET_GEN).
* Clean-up codepaths that implements "git send-email --validate"
option and improves the message from it.
* The last remnant of gettext-poison has been removed.
* The test framework has been taught to optionally turn the default
merge strategy to "ort" throughout the system where we use
three-way merges internally, like cherry-pick, rebase etc.,
primarily to enhance its test coverage (the strategy has been
available as an explicit "-s ort" choice).
* A bit of code clean-up and a lot of test clean-up around userdiff
area.
* Handling of "promisor packs" that allows certain objects to be
missing and lazily retrievable has been optimized (a bit).
* When packet_write() fails, we gave an extra error message
unnecessarily, which has been corrected.
* The checkout machinery has been taught to perform the actual
write-out of the files in parallel when able.
* Show errno in the trace output in the error codepath that calls
read_raw_ref method.
* Effort to make the command line completion (in contrib/) safe with
"set -u" continues.
* Tweak a few tests for "log --format=..." that show timestamps in
various formats.
* The reflog expiry machinery has been taught to emit trace events.
* Over-the-wire protocol learns a new request type to ask for object
sizes given a list of object names.
Fixes since v2.31
-----------------
* The fsmonitor interface read from its input without making sure
there is something to read from. This bug is new in 2.31
timeframe.
* The data structure used by fsmonitor interface was not properly
duplicated during an in-core merge, leading to use-after-free etc.
* "git bisect" reimplemented more in C during 2.30 timeframe did not
take an annotated tag as a good/bad endpoint well. This regression
has been corrected.
* Fix macros that can silently inject unintended null-statements.
* CALLOC_ARRAY() macro replaces many uses of xcalloc().
* Update insn in Makefile comments to run fuzz-all target.
* Fix a corner case bug in "git mv" on case insensitive systems,
which was introduced in 2.29 timeframe.
* We had a code to diagnose and die cleanly when a required
clean/smudge filter is missing, but an assert before that
unnecessarily fired, hiding the end-user facing die() message.
(merge 6fab35f748 mt/cleanly-die-upon-missing-required-filter later to maint).
* Update C code that sets a few configuration variables when a remote
is configured so that it spells configuration variable names in the
canonical camelCase.
(merge 0f1da600e6 ab/remote-write-config-in-camel-case later to maint).
* A new configuration variable has been introduced to allow choosing
which version of the generation number gets used in the
commit-graph file.
(merge 702110aac6 ds/commit-graph-generation-config later to maint).
* Perf test update to work better in secondary worktrees.
(merge 36e834abc1 jk/perf-in-worktrees later to maint).
* Updates to memory allocation code around the use of pcre2 library.
(merge c1760352e0 ab/grep-pcre2-allocfix later to maint).
* "git -c core.bare=false clone --bare ..." would have segfaulted,
which has been corrected.
(merge 75555676ad bc/clone-bare-with-conflicting-config later to maint).
* When "git checkout" removes a path that does not exist in the
commit it is checking out, it wasn't careful enough not to follow
symbolic links, which has been corrected.
(merge fab78a0c3d mt/checkout-remove-nofollow later to maint).
* A few option description strings started with capital letters,
which were corrected.
(merge 5ee90326dc cc/downcase-opt-help later to maint).
* Plug or annotate remaining leaks that trigger while running the
very basic set of tests.
(merge 68ffe095a2 ah/plugleaks later to maint).
* The hashwrite() API uses a buffering mechanism to avoid calling
write(2) too frequently. This logic has been refactored to be
easier to understand.
(merge ddaf1f62e3 ds/clarify-hashwrite later to maint).
* "git cherry-pick/revert" with or without "--[no-]edit" did not spawn
the editor as expected (e.g. "revert --no-edit" after a conflict
still asked to edit the message), which has been corrected.
(merge 39edfd5cbc en/sequencer-edit-upon-conflict-fix later to maint).
* "git daemon" has been tightened against systems that take backslash
as directory separator.
(merge 9a7f1ce8b7 rs/daemon-sanitize-dir-sep later to maint).
* A NULL-dereference bug has been corrected in an error codepath in
"git for-each-ref", "git branch --list" etc.
(merge c685450880 jk/ref-filter-segfault-fix later to maint).
* Streamline the codepath to fix the UTF-8 encoding issues in the
argv[] and the prefix on macOS.
(merge c7d0e61016 tb/precompose-prefix-simplify later to maint).
* The command-line completion script (in contrib/) had a couple of
references that would have given a warning under the "-u" (nounset)
option.
(merge c5c0548d79 vs/completion-with-set-u later to maint).
* When "git pack-objects" makes a literal copy of a part of existing
packfile using the reachability bitmaps, its update to the progress
meter was broken.
(merge 8e118e8490 jk/pack-objects-bitmap-progress-fix later to maint).
* The dependencies for config-list.h and command-list.h were broken
when the former was split out of the latter, which has been
corrected.
(merge 56550ea718 sg/bugreport-fixes later to maint).
* "git push --quiet --set-upstream" was not quiet when setting the
upstream branch configuration, which has been corrected.
(merge f3cce896a8 ow/push-quiet-set-upstream later to maint).
* The prefetch task in "git maintenance" assumed that "git fetch"
from any remote would fetch all its local branches, which would
fetch too much if the user is interested in only a subset of
branches there.
(merge 32f67888d8 ds/maintenance-prefetch-fix later to maint).
* Clarify that pathnames recorded in Git trees are most often (but
not necessarily) encoded in UTF-8.
(merge 9364bf465d ab/pathname-encoding-doc later to maint).
* "git --config-env var=val cmd" weren't accepted (only
--config-env=var=val was).
(merge c331551ccf ps/config-env-option-with-separate-value later to maint).
* When the reachability bitmap is in effect, the "do not lose
recently created objects and those that are reachable from them"
safety to protect us from races were disabled by mistake, which has
been corrected.
(merge 2ba582ba4c jk/prune-with-bitmap-fix later to maint).
* Cygwin pathname handling fix.
(merge bccc37fdc7 ad/cygwin-no-backslashes-in-paths later to maint).
* "git rebase --[no-]reschedule-failed-exec" did not work well with
its configuration variable, which has been corrected.
(merge e5b32bffd1 ab/rebase-no-reschedule-failed-exec later to maint).
* Portability fix for command line completion script (in contrib/).
(merge f2acf763e2 si/zsh-complete-comment-fix later to maint).
* "git repack -A -d" in a partial clone unnecessarily loosened
objects in promisor pack.
* "git bisect skip" when custom words are used for new/old did not
work, which has been corrected.
* A few variants of informational message "Already up-to-date" has
been rephrased.
(merge ad9322da03 js/merge-already-up-to-date-message-reword later to maint).
* "git submodule update --quiet" did not propagate the quiet option
down to underlying "git fetch", which has been corrected.
(merge 62af4bdd42 nc/submodule-update-quiet later to maint).
* Document that our test can use "local" keyword.
(merge a84fd3bcc6 jc/test-allows-local later to maint).
* The word-diff mode has been taught to work better with a word
regexp that can match an empty string.
(merge 0324e8fc6b pw/word-diff-zero-width-matches later to maint).
* "git p4" learned to find branch points more efficiently.
(merge 6b79818bfb jk/p4-locate-branch-point-optim later to maint).
* When "git update-ref -d" removes a ref that is packed, it left
empty directories under $GIT_DIR/refs/ for
(merge 5f03e5126d wc/packed-ref-removal-cleanup later to maint).
* "git clean" and "git ls-files -i" had confusion around working on
or showing ignored paths inside an ignored directory, which has
been corrected.
(merge b548f0f156 en/dir-traversal later to maint).
* The handling of "%(push)" formatting element of "for-each-ref" and
friends was broken when the same codepath started handling
"%(push:<what>)", which has been corrected.
(merge 1e1c4c5eac zh/ref-filter-push-remote-fix later to maint).
* The bash prompt script (in contrib/) did not work under "set -u".
(merge 5c0cbdb107 en/prompt-under-set-u later to maint).
* The "chainlint" feature in the test framework is a handy way to
catch common mistakes in writing new tests, but tends to get
expensive. An knob to selectively disable it has been introduced
to help running tests that the developer has not modified.
(merge 2d86a96220 jk/test-chainlint-softer later to maint).
* The "rev-parse" command did not diagnose the lack of argument to
"--path-format" option, which was introduced in v2.31 era, which
has been corrected.
(merge 99fc555188 wm/rev-parse-path-format-wo-arg later to maint).
* Other code cleanup, docfix, build fix, etc.
(merge f451960708 dl/cat-file-doc-cleanup later to maint).
(merge 12604a8d0c sv/t9801-test-path-is-file-cleanup later to maint).
(merge ea7e63921c jr/doc-ignore-typofix later to maint).
(merge 23c781f173 ps/update-ref-trans-hook-doc later to maint).
(merge 42efa1231a jk/filter-branch-sha256 later to maint).
(merge 4c8e3dca6e tb/push-simple-uses-branch-merge-config later to maint).
(merge 6534d436a2 bs/asciidoctor-installation-hints later to maint).
(merge 47957485b3 ab/read-tree later to maint).
(merge 2be927f3d1 ab/diff-no-index-tests later to maint).
(merge 76593c09bb ab/detox-gettext-tests later to maint).
(merge 28e29ee38b jc/doc-format-patch-clarify later to maint).
(merge fc12b6fdde fm/user-manual-use-preface later to maint).
(merge dba94e3a85 cc/test-helper-bloom-usage-fix later to maint).
(merge 61a7660516 hn/reftable-tables-doc-update later to maint).
(merge 81ed96a9b2 jt/fetch-pack-request-fix later to maint).
(merge 151b6c2dd7 jc/doc-do-not-capitalize-clarification later to maint).
(merge 9160068ac6 js/access-nul-emulation-on-windows later to maint).
(merge 7a14acdbe6 po/diff-patch-doc later to maint).
(merge f91371b948 pw/patience-diff-clean-up later to maint).
(merge 3a7f0908b6 mt/clean-clean later to maint).
(merge d4e2d15a8b ab/streaming-simplify later to maint).
(merge 0e59f7ad67 ah/merge-ort-i18n later to maint).
(merge e6f68f62e0 ls/typofix later to maint).
----------------------------------------------------------------
Changes since v2.31.0 are as follows:
Adam Dinwoodie (1):
cygwin: disallow backslashes in file names
Alex Henrie (2):
merge-ort: split "distinct types" message into two translatable messages
l10n: Update Catalan translation
Alexander Shopov (1):
l10n: bg.po: Updated Bulgarian translation (5204t)
Alexey Roslyakov (1):
l10n: ru.po: fix typo in Russian translation
Andrey Bienkowski (1):
doc: clarify the filename encoding in git diff
Andrzej Hunt (24):
Makefile: update 'make fuzz-all' docs to reflect modern clang
symbolic-ref: don't leak shortened refname in check_symref()
reset: free instead of leaking unneeded ref
clone: free or UNLEAK further pointers when finished
worktree: fix leak in dwim_branch()
init: remove git_init_db_config() while fixing leaks
init-db: silence template_dir leak when converting to absolute path
fsmonitor: avoid global-buffer-overflow READ when checking trivial response
parse-options: convert bitfield values to use binary shift
parse-options: don't leak alias help messages
transport: also free remote_refs in transport_disconnect()
merge-ort: only do pointer arithmetic for non-empty lists
revision: free remainder of old commit list in limit_list
wt-status: fix multiple small leaks
ls-files: free max_prefix when done
bloom: clear each bloom_key after use
branch: FREE_AND_NULL instead of NULL'ing real_ref
builtin/bugreport: don't leak prefixed filename
builtin/check-ignore: clear_pathspec before returning
builtin/checkout: clear pending objects after diffing
mailinfo: also free strbuf lists when clearing mailinfo
builtin/for-each-ref: free filter and UNLEAK sorting.
builtin/rebase: release git_format_patch_opt too
builtin/rm: avoid leaking pathspec and seen
Atharva Raykar (1):
userdiff: add support for Scheme
Bagas Sanjaya (6):
INSTALL: note on using Asciidoctor to build doc
l10n: id: po-id for 2.32.0 (round 1)
l10n: README: document git-po-helper
l10n: README: document "core translation"
l10n: README: document l10n conventions
l10n: README: note on fuzzy translations
Bruno Albuquerque (1):
object-info: support for retrieving object info
Charvi Mendiratta (23):
sequencer: pass todo_item to do_pick_commit()
sequencer: use const variable for commit message comments
rebase -i: add fixup [-C | -c] command
t3437: test script for fixup [-C|-c] options in interactive rebase
rebase -i: teach --autosquash to work with amend!
doc/git-rebase: add documentation for fixup [-C|-c] options
sequencer: fixup the datatype of the 'flag' argument
sequencer: rename a few functions
rebase -i: clarify and fix 'fixup -c' rebase-todo help
t/lib-rebase: update the documentation of FAKE_LINES
t/t3437: fixup here-docs in the 'setup' test
t/t3437: remove the dependency of 'expected-message' file from tests
t/t3437: check the author date of fixed up commit
t/t3437: simplify and document the test helpers
t/t3437: use named commits in the tests
t/t3437: fixup the test 'multiple fixup -c opens editor once'
doc/rebase -i: fix typo in the documentation of 'fixup' command
sequencer: export and rename subject_length()
commit: add amend suboption to --fixup to create amend! commit
commit: add a reword suboption to --fixup
t7500: add tests for --fixup=[amend|reword] options
t3437: use --fixup with options to create amend! commit
doc/git-commit: add documentation for fixup=[amend|reword] options
Chinmoy Chakraborty (1):
column, range-diff: downcase option description
Christian Couder (1):
test-bloom: fix missing 'bloom' from usage string
Christopher Diaz Riveros (1):
l10n: es: 2.32.0 round 1
Christopher Schenk (1):
remote-curl: fall back to basic auth if Negotiate fails
Daniel Santos (2):
l10n: pt_PT: add Portuguese translations part 2
l10n: pt_PT: add Portuguese translations part 3
David Aguilar (1):
contrib/completion: fix zsh completion regression from 59d85a2a05
Dennis Ameling (2):
cmake(install): fix double .exe suffixes
cmake(install): include vcpkg dlls
Denton Liu (14):
git-cat-file.txt: monospace args, placeholders and filenames
git-cat-file.txt: remove references to "sha1"
stash show: teach --include-untracked and --only-untracked
stash show: learn stash.showIncludeUntracked
git-completion.bash: pass $__git_subcommand_idx from __git_main()
git-completion.bash: extract from else in _git_stash()
git-completion.bash: use __gitcomp_builtin() in _git_stash()
git-completion.bash: separate some commands onto their own line
git-completion.bash: rename to $__git_cmd_idx
git-completion.bash: use $__git_cmd_idx in more places
git-completion.bash: consolidate cases in _git_stash()
t3905: correct test title
stash show: fix segfault with --{include,only}-untracked
stash show: use stash.showIncludeUntracked even when diff options given
Derrick Stolee (58):
commit-graph: create local repository pointer
commit-graph: use config to specify generation type
csum-file: make hashwrite() more readable
sparse-index: design doc and format update
t/perf: add performance test for sparse operations
t1092: clean up script quoting
sparse-index: add guard to ensure full index
sparse-index: implement ensure_full_index()
t1092: compare sparse-checkout to sparse-index
test-read-cache: print cache entries with --table
test-tool: don't force full index
unpack-trees: ensure full index
sparse-checkout: hold pattern list in index
sparse-index: add 'sdir' index extension
sparse-index: convert from full to sparse
submodule: sparse-index should not collapse links
unpack-trees: allow sparse directories
sparse-index: check index conversion happens
sparse-index: add index.sparse config option
sparse-checkout: toggle sparse index from builtin
sparse-checkout: disable sparse-index
cache-tree: integrate with sparse directory entries
sparse-index: loose integration with cache_tree_verify()
p2000: add sparse-index repos
maintenance: simplify prefetch logic
sparse-index: API protection strategy
*: remove 'const' qualifier for struct index_state
read-cache: expand on query into sparse-directory entry
cache: move ensure_full_index() to cache.h
add: ensure full index
checkout-index: ensure full index
checkout: ensure full index
commit: ensure full index
difftool: ensure full index
fsck: ensure full index
grep: ensure full index
ls-files: ensure full index
merge-index: ensure full index
rm: ensure full index
stash: ensure full index
update-index: ensure full index
dir: ensure full index
entry: ensure full index
merge-recursive: ensure full index
pathspec: ensure full index
read-cache: ensure full index
resolve-undo: ensure full index
revision: ensure full index
name-hash: don't add directories to name_hash
sparse-index: expand_to_path()
name-hash: use expand_to_path()
fetch: add --prefetch option
maintenance: use 'git fetch --prefetch'
maintenance: respect remote.*.skipFetchAll
dir: update stale description of treat_directory()
sparse-index: fix uninitialized jump
t1092: use GIT_PROGRESS_DELAY for consistent results
dir: update stale description of treat_directory()
Elijah Newren (50):
diffcore-rename: use directory rename guided basename comparisons
diffcore-rename: provide basic implementation of idx_possible_rename()
diffcore-rename: add a mapping of destination names to their indices
Move computation of dir_rename_count from merge-ort to diffcore-rename
diffcore-rename: add function for clearing dir_rename_count
diffcore-rename: move dir_rename_counts into dir_rename_info struct
diffcore-rename: extend cleanup_dir_rename_info()
diffcore-rename: compute dir_rename_counts in stages
diffcore-rename: limit dir_rename_counts computation to relevant dirs
diffcore-rename: compute dir_rename_guess from dir_rename_counts
diffcore-rename: enable filtering possible rename sources
merge-ort: precompute subset of sources for which we need rename detection
merge-ort: add data structures for an alternate tree traversal
merge-ort: introduce wrappers for alternate tree traversal
merge-ort: precompute whether directory rename detection is needed
merge-ort: use relevant_sources to filter possible rename sources
merge-ort: skip rename detection entirely if possible
diffcore-rename: avoid doing basename comparisons for irrelevant sources
diffcore-rename: take advantage of "majority rules" to skip more renames
merge-ort, diffcore-rename: tweak dirs_removed and relevant_source type
merge-ort: record the reason that we want a rename for a directory
diffcore-rename: only compute dir_rename_count for relevant directories
diffcore-rename: check if we have enough renames for directories early on
diffcore-rename: add computation of number of unknown renames
merge-ort: record the reason that we want a rename for a file
diffcore-rename: determine which relevant_sources are no longer relevant
merge-ort: use STABLE_QSORT instead of QSORT where required
merge-ort: add a special minimal index just for renormalization
merge-ort: have ll_merge() use a special attr_index for renormalization
merge-ort: let renormalization change modify/delete into clean delete
merge-ort: support subtree shifting
t6428: new test for SKIP_WORKTREE handling and conflicts
merge-ort: implement CE_SKIP_WORKTREE handling with conflicted entries
t: mark several submodule merging tests as fixed under merge-ort
merge-ort: write $GIT_DIR/AUTO_MERGE whenever we hit a conflict
merge-recursive: add a bunch of FIXME comments documenting known bugs
Revert "merge-ort: ignore the directory rename split conflict for now"
t6423: mark remaining expected failure under merge-ort as such
Add testing with merge-ort merge strategy
sequencer: fix edit handling for cherry-pick and revert messages
dir: convert trace calls to trace2 equivalents
dir: report number of visited directories and paths with trace2
ls-files: error out on -i unless -o or -c are specified
t7300: add testcase showing unnecessary traversal into ignored directory
t3001, t7300: add testcase showcasing missed directory traversal
dir: avoid unnecessary traversal into ignored directory
dir: traverse into untracked directories if they may have ignored subfiles
dir: introduce readdir_skip_dot_and_dotdot() helper
git-prompt: work under set -u
dir: introduce readdir_skip_dot_and_dotdot() helper
Emir Sarı (1):
l10n: tr: v2.32.0-r1
Eric Sunshine (1):
merge(s): apply consistent punctuation to "up to date" messages
Eric Wong (1):
remote-curl: fix clone on sha256 repos
Firmin Martin (1):
user-manual.txt: assign preface an id and a title
Georgios Kontaxis (1):
gitweb: add "e-mail privacy" feature to redact e-mail addresses
Han Xin (1):
pack-objects: fix comment of reused_chunk.difference
Han-Wen Nienhuys (3):
reftable: document an alternate cleanup method on Windows
refs: print errno for read_raw_ref if GIT_TRACE_REFS is set
refs/debug: trace into reflog expiry too
Jean-Noël Avila (1):
l10n: fr: v2.32.0 round 1
Jeff Hostetler (14):
pkt-line: eliminate the need for static buffer in packet_write_gently()
simple-ipc: design documentation for new IPC mechanism
simple-ipc: add win32 implementation
unix-socket: eliminate static unix_stream_socket() helper function
unix-socket: add backlog size option to unix_stream_listen()
unix-socket: disallow chdir() when creating unix domain sockets
unix-stream-server: create unix domain socket under lock
convert: make convert_attrs() and convert structs public
convert: add [async_]convert_to_working_tree_ca() variants
convert: add get_stream_filter_ca() variant
convert: add classification for conv_attrs struct
simple-ipc: add Unix domain socket implementation
t0052: add simple-ipc tests and t/helper/test-simple-ipc tool
simple-ipc: correct ifdefs when NO_PTHREADS is defined
Jeff King (43):
add open_nofollow() helper
attr: convert "macro_ok" into a flags field
exclude: add flags parameter to add_patterns()
attr: do not respect symlinks for in-tree .gitattributes
exclude: do not respect symlinks for in-tree .gitignore
mailmap: do not respect symlinks for in-tree .mailmap
p5303: add missing &&-chains
p5303: measure time to repack with keep
builtin/pack-objects.c: rewrite honor-pack-keep logic
packfile: add kept-pack cache for find_kept_pack_entry()
t/perf: handle worktrees as test repos
t/perf: avoid copying worktree files from test repo
t7003: test ref rewriting explicitly
filter-branch: drop multiple-ancestor warning
filter-branch: drop $_x40 glob
bisect: peel annotated tags to commits
t: annotate !PTHREADS tests with !FAIL_PREREQS
ref-filter: fix NULL check for parse object failure
midx.c: improve cache locality in midx_pack_order_cmp()
pack-objects: update "nr_seen" progress based on pack-reused count
is_promisor_object(): free tree buffer after parsing
lookup_unknown_object(): take a repository argument
revision: avoid parsing with --exclude-promisor-objects
pack-bitmap: clean up include_check after use
prune: save reachable-from-recent objects with bitmaps
t5300: modernize basic tests
t5300: check that we produced expected number of deltas
pack-objects: clamp negative window size to 0
t5316: check behavior of pack-objects --depth=0
pack-objects: clamp negative depth to 0
docs/format-patch: mention handling of merges
t7415: remove out-dated comment about translation
fsck_tree(): fix shadowed variable
fsck_tree(): wrap some long lines
t7415: rename to expand scope
t7450: test verify_path() handling of gitmodules
t7450: test .gitmodules symlink matching against obscured names
t0060: test ntfs/hfs-obscured dotfiles
fsck: warn about symlinked dotfiles we'll open with O_NOFOLLOW
docs: document symlink restrictions for dot-files
t: avoid sed-based chain-linting in some expensive cases
t5551: test http interaction with credential helpers
Revert "remote-curl: fall back to basic auth if Negotiate fails"
Jerry Zhang (3):
git-apply: try threeway first when "--3way" is used
git-apply: allow simultaneous --cached and --3way options
apply: adjust messages to account for --3way changes
Jiang Xin (4):
l10n: git.pot: v2.32.0 round 1 (126 new, 26 removed)
l10n: fix typos in po/TEAMS
l10n: README: add file extention ".md"
l10n: zh_CN: for git v2.32.0 l10n round 1
Joachim Kuebart (2):
git-p4: ensure complex branches are cloned correctly
git-p4: speed up search for branch parent
Johannes Schindelin (10):
pkt-line: do not issue flush packets in write_packetized_*()
pkt-line: add PACKET_READ_GENTLE_ON_READ_ERROR option
pkt-line: add options argument to read_packetized_to_strbuf()
fsmonitor: fix memory corruption in some corner cases
fsmonitor: do not forget to release the token in `discard_index()`
SECURITY: describe how to report vulnerabilities
Document how we do embargoed releases
cmake: support SKIP_DASHED_BUILT_INS
cmake: add a preparatory work-around to accommodate `vcpkg`
msvc: avoid calling `access("NUL", flags)`
Johannes Sixt (1):
t9001-send-email.sh: fix expected absolute paths on Windows
John Szakmeister (2):
http: store credential when PKI auth is used
http: drop the check for an empty proxy password before approving
Jonathan Tan (8):
t5606: run clone branch name test with protocol v2
fetch-pack: buffer object-format with other args
fetch-pack: refactor process_acks()
fetch-pack: refactor add_haves()
fetch-pack: refactor command and capability write
fetch: teach independent negotiation (no packfile)
send-pack: support push negotiation
t5601: mark protocol v2-only test
Jordi Mas (1):
l10n: Update Catalan translation
Josh Soref (1):
merge: fix swapped "up to date" message components
Julien Richard (1):
doc: .gitignore documentation typofix
Junio C Hamano (34):
builtin/repack.c: reword comment around pack-objects flags
xcalloc: use CALLOC_ARRAY() when applicable
cocci: allow xcalloc(1, size)
The first batch in 2.32 cycle
The second batch
format-patch: give an overview of what a "patch" message is
The third patch
Git 2.31.1
The fourth batch
The fifth batch
The sixth batch
The seventh batch
The eighth batch
The ninth batch
doc: clarify "do not capitalize the first word" rule
The tenth batch
The eleventh (aka "ort") batch
The twelfth batch
The thirteenth batch
CodingGuidelines: explicitly allow "local" for test scripts
The fourteenth batch
The fifteenth batch
The sixteenth batch
The seventeenth batch
Git 2.32-rc0
A handful more topics before -rc1
Git 2.32-rc1
t1092: revert the "-1" hack for emulating "no progress meter"
Revert "dir: introduce readdir_skip_dot_and_dotdot() helper"
Revert "dir: update stale description of treat_directory()"
Git 2.32-rc2
Git 2.32-rc3
fsync(): be prepared to see EINTR
Git 2.32
Kyle Meyer (1):
config.txt: add missing period
Li Linchao (1):
builtin/clone.c: add --reject-shallow option
Louis Sautier (1):
pretty: fix a typo in the documentation for %(trailers)
Luke Shumaker (30):
.gitignore: ignore 'git-subtree' as a build artifact
subtree: t7900: update for having the default branch name be 'main'
subtree: t7900: use test-lib.sh's test_count
subtree: t7900: use consistent formatting
subtree: t7900: comment subtree_test_create_repo
subtree: t7900: use 'test' for string equality
subtree: t7900: delete some dead code
subtree: t7900: fix 'verify one file change per commit'
subtree: t7900: rename last_commit_message to last_commit_subject
subtree: t7900: add a test for the -h flag
subtree: t7900: add porcelain tests for 'pull' and 'push'
subtree: don't have loose code outside of a function
subtree: more consistent error propagation
subtree: drop support for git < 1.7
subtree: use `git merge-base --is-ancestor`
subtree: use git-sh-setup's `say`
subtree: use more explicit variable names for cmdline args
subtree: use "$*" instead of "$@" as appropriate
subtree: don't fuss with PATH
subtree: use "^{commit}" instead of "^0"
subtree: parse revs in individual cmd_ functions
subtree: remove duplicate check
subtree: add comments and sanity checks
subtree: don't let debug and progress output clash
subtree: have $indent actually affect indentation
subtree: give the docs a once-over
subtree: allow --squash to be used with --rejoin
subtree: allow 'split' flags to be passed to 'push'
subtree: push: allow specifying a local rev other than HEAD
subtree: be stricter about validating flags
Lénaïc Huard (1):
maintenance: fix two memory leaks
Martin Ågren (2):
git-repack.txt: remove spurious ")"
pretty-formats.txt: add missing space
Matheus Tavares (32):
convert: fail gracefully upon missing clean cmd on required filter
symlinks: update comment on threaded_check_leading_path()
checkout: don't follow symlinks when removing entries
entry: extract a header file for entry.c functions
entry: make fstat_output() and read_blob_entry() public
entry: extract update_ce_after_write() from write_entry()
entry: move conv_attrs lookup up to checkout_entry()
entry: add checkout_entry_ca() taking preloaded conv_attrs
add: include magic part of pathspec on --refresh error
t3705: add tests for `git add` in sparse checkouts
add: make --chmod and --renormalize honor sparse checkouts
pathspec: allow to ignore SKIP_WORKTREE entries on index matching
refresh_index(): add flag to ignore SKIP_WORKTREE entries
add: warn when asked to update SKIP_WORKTREE entries
rm: honor sparse checkout patterns
pkt-line: do not report packet write errors twice
unpack-trees: add basic support for parallel checkout
parallel-checkout: make it truly parallel
parallel-checkout: add configuration options
parallel-checkout: support progress displaying
parallel-checkout: add design documentation
make_transient_cache_entry(): optionally alloc from mem_pool
builtin/checkout.c: complete parallel checkout support
parallel-checkout: add tests related to path collisions
t0028: extract encoding helpers to lib-encoding.sh
checkout-index: add parallel checkout support
parallel-checkout: add tests related to .gitattributes
parallel-checkout: add tests for basic operations
ci: run test round with parallel-checkout enabled
clean: remove unnecessary variable
init: fix bug regarding ~/ expansion in init.templateDir
t2080: fix cp invocation to copy symlinks instead of following them
Matthias Rüster (1):
l10n: de.po: Update German translation for Git v2.32.0
Nicholas Clark (1):
submodule update: silence underlying fetch with "--quiet"
Nipunn Koorapati (3):
fsmonitor: skip lstat deletion check during git diff-index
fsmonitor: add assertion that fsmonitor is valid to check_removed
fsmonitor: add perf test for git diff HEAD
Patrick Steinhardt (17):
githooks.txt: replace mentions of SHA-1 specific properties
githooks.txt: clarify documentation on reference-transaction hook
pack-bitmap: avoid traversal of objects referenced by uninteresting tag
uploadpack.txt: document implication of `uploadpackfilter.allow`
revision: mark commit parents as NOT_USER_GIVEN
list-objects: move tag processing into its own function
list-objects: support filtering by tag and commit
list-objects: implement object type filter
pack-bitmap: implement object type filter
pack-bitmap: implement combined filter
rev-list: allow filtering of provided items
config: rename `git_etc_config()`
config: unify code paths to get global config paths
config: allow overriding of global and system configuration
t1300: fix unset of GIT_CONFIG_NOSYSTEM leaking into subsequent tests
git.txt: fix synopsis of `--config-env` missing the equals sign
git: support separate arg for `--config-env`'s value
Peter Krefting (1):
l10n: sv.po: Update Swedish translation (5204t0f0u)
Peter Oliver (1):
doc: point to diff attribute in patch format docs
Phillip Wood (6):
rebase -i: only write fixup-message when it's needed
sequencer: factor out code to append squash message
rebase -i: comment out squash!/fixup! subjects from squash message
word diff: handle zero length matches
patience diff: remove unnecessary string comparisons
patience diff: remove unused variable
Rafael Silva (1):
repack: avoid loosening promisor objects in partial clones
Ramkumar Ramachandra (1):
Add entry for Ramkumar Ramachandra
Ramsay Jones (1):
bisect--helper: use BISECT_TERMS in 'bisect skip' command
René Scharfe (13):
pretty: add %(describe)
pretty: add merge and exclude options to %(describe)
t4205: assert %(describe) test coverage
pretty: document multiple %(describe) being inconsistent
fix xcalloc() argument order
archive: expand only a single %(describe) per archive
git-compat-util.h: drop trailing semicolon from macro definition
use CALLOC_ARRAY
vcs-svn: remove header files as well
block-sha1: drop trailing semicolon from macro definition
mem-pool: drop trailing semicolon from macro definition
daemon: sanitize all directory separators
parallel-checkout: avoid dash local bug in tests
Robert Foss (1):
git-send-email: Respect core.hooksPath setting
SZEDER Gábor (1):
Makefile: add missing dependencies of 'config-list.h'
Sardorbek Imomaliev (1):
work around zsh comment in __git_complete_worktree_paths
Sergey Organov (5):
diff-merges: introduce --diff-merges=on
diff-merges: refactor set_diff_merges()
diff-merges: adapt -m to enable default diff format
diff-merges: introduce log.diffMerges config variable
doc/diff-options: document new --diff-merges features
Shubham Verma (1):
t9801: replace test -f with test_path_is_file
Taylor Blau (28):
packfile: introduce 'find_kept_pack_entry()'
revision: learn '--no-kept-objects'
builtin/pack-objects.c: add '--stdin-packs' option
builtin/repack.c: add '--geometric' option
builtin/repack.c: do not repack single packs with --geometric
t7703: test --geometric repack with loose objects
builtin/repack.c: assign pack split later
builtin/repack.c: be more conservative with unsigned overflows
Documentation/git-push.txt: correct configuration typo
builtin/pack-objects.c: ignore missing links with --stdin-packs
builtin/multi-pack-index.c: inline 'flags' with options
builtin/multi-pack-index.c: don't handle 'progress' separately
builtin/multi-pack-index.c: define common usage with a macro
builtin/multi-pack-index.c: split sub-commands
builtin/multi-pack-index.c: don't enter bogus cmd_mode
builtin/multi-pack-index.c: display usage on unrecognized command
t/helper/test-read-midx.c: add '--show-objects'
pack-bitmap: add 'test_bitmap_commits()' helper
t/helper/test-bitmap.c: initial commit
builtin/pack-objects.c: respect 'pack.preferBitmapTips'
midx: allow marking a pack as preferred
midx: don't free midx_name early
midx: keep track of the checksum
midx: make some functions non-static
Documentation/technical: describe multi-pack reverse indexes
pack-revindex: read multi-pack reverse indexes
pack-write.c: extract 'write_rev_file_order'
pack-revindex: write multi-pack reverse indexes
Todd Zullinger (1):
t7500: remove non-existant C_LOCALE_OUTPUT prereq
Torsten Bögershausen (3):
git mv foo FOO ; git mv foo bar gave an assert
precompose_utf8: make precompose_string_if_needed() public
macOS: precompose startup_info->prefix
Trần Ngọc Quân (1):
l10n: vi.po(5204t): Updated Vietnamese translation for v2.32.0
Ville Skyttä (2):
completion: audit and guard $GIT_* against unset use
completion: avoid aliased command lookup error in nounset mode
Vincent Tam (1):
l10n: fr.po fixed inconsistencies
Will Chandler (1):
refs: cleanup directories when deleting packed ref
Wolfgang Müller (1):
rev-parse: fix segfault with missing --path-format argument
Yi-Jyun Pan (2):
l10n: zh_TW.po: v2.32.0 round 1 (11 untranslated)
l10n: zh_TW.po: localized
ZheNing Hu (8):
commit: add --trailer option
format-patch: allow a non-integral version numbers
ref-filter: get rid of show_ref_array_item
ref-filter: reuse output buffer
pretty: provide human date format
docs: correct descript of trailer.<token>.command
trailer: add new .cmd config option
ref-filter: fix read invalid union member bug
brian m. carlson (14):
builtin/init-db: handle bare clones when core.bare set to false
hash: add an algo member to struct object_id
Always use oidread to read into struct object_id
http-push: set algorithm when reading object ID
hash: add a function to finalize object IDs
Use the final_oid_fn to finalize hashing of object IDs
builtin/pack-redundant: avoid casting buffers to struct object_id
hash: set, copy, and use algo field in struct object_id
hash: provide per-algorithm null OIDs
builtin/show-index: set the algorithm for object IDs
commit-graph: don't store file hashes as struct object_id
builtin/pack-objects: avoid using struct object_id for pack hash
hex: default to the_hash_algo on zero algorithm value
hex: print objects using the hash algorithm member
rlespinasse (1):
l10n: fr: fixed inconsistencies
Ævar Arnfjörð Bjarmason (97):
grep/pcre2: drop needless assignment + assert() on opt->pcre2
grep/pcre2: drop needless assignment to NULL
grep/pcre2: correct reference to grep_init() in comment
grep/pcre2: prepare to add debugging to pcre2_malloc()
grep/pcre2: add GREP_PCRE2_DEBUG_MALLOC debug mode
grep/pcre2: use compile-time PCREv2 version test
grep/pcre2: use pcre2_maketables_free() function
grep/pcre2: actually make pcre2 use custom allocator
grep/pcre2: move back to thread-only PCREv2 structures
grep/pcre2: move definitions of pcre2_{malloc,free}
Makefile: guard against TEST_OBJS in the environment
Makefile: split up long OBJECTS line
Makefile: sort OBJECTS assignment for subsequent change
Makefile: split OBJECTS into OBJECTS and GIT_OBJS
Makefile: add {program,xdiff,test,git,fuzz}-objs & objects targets
remote: add camel-cased *.tagOpt key, like clone
remote: write camel-cased *.pushRemote on rename
fsck.c: refactor and rename common config callback
show tests: add test for "git show <tree>"
ls-files tests: add meaningful --with-tree tests
tree.c API: move read_tree() into builtin/ls-files.c
ls-files: don't needlessly pass around stage variable
ls-files: refactor away read_tree()
archive: stop passing "stage" through read_tree_recursive()
tree.h API: expose read_tree_1() as read_tree_at()
tree.h API: simplify read_tree_recursive() signature
diff --no-index tests: add test for --exit-code
diff --no-index tests: test mode normalization
rebase: remove transitory rebase.useBuiltin setting & env
mktag tests: fix broken "&&" chain
fsck.h: use designed initializers for FSCK_OPTIONS_{DEFAULT,STRICT}
fsck.h: use "enum object_type" instead of "int"
fsck.c: rename variables in fsck_set_msg_type() for less confusion
fsck.c: remove (mostly) redundant append_msg_id() function
fsck.c: rename remaining fsck_msg_id "id" to "msg_id"
fsck.c: refactor fsck_msg_type() to limit scope of "int msg_type"
fsck.h: move FSCK_{FATAL,INFO,ERROR,WARN,IGNORE} into an enum
fsck.h: re-order and re-assign "enum fsck_msg_type"
fsck.c: call parse_msg_type() early in fsck_set_msg_type()
fsck.c: undefine temporary STR macro after use
fsck.c: give "FOREACH_MSG_ID" a more specific name
fsck.[ch]: move FOREACH_FSCK_MSG_ID & fsck_msg_id from *.c to *.h
fsck.c: pass along the fsck_msg_id in the fsck_error callback
fsck.c: add an fsck_set_msg_type() API that takes enums
fsck.c: move gitmodules_{found,done} into fsck_options
fetch-pack: don't needlessly copy fsck_options
fetch-pack: use file-scope static struct for fsck_options
fetch-pack: use new fsck API to printing dangling submodules
Makefile: add QUIET_GEN to "tags" and "TAGS" targets
git-send-email: replace "map" in void context with "for"
git-send-email: test full --validate output
git-send-email: refactor duplicate $? checks into a function
git-send-email: improve --validate error output
bash completion: complete CHERRY_PICK_HEAD
config.c: remove last remnant of GIT_TEST_GETTEXT_POISON
userdiff style: re-order drivers in alphabetical order
userdiff style: declare patterns with consistent style
userdiff style: normalize pascal regex declaration
userdiff: add and use for_each_userdiff_driver()
userdiff tests: explicitly test "default" pattern
userdiff tests: list builtin drivers via test-tool
userdiff: remove support for "broken" tests
blame tests: don't rely on t/t4018/ directory
blame tests: simplify userdiff driver test
rebase tests: camel-case rebase.rescheduleFailedExec consistently
rebase: don't override --no-reschedule-failed-exec with config
Documentation/Makefile: make $(wildcard howto/*.txt) a var
Documentation/Makefile: make doc.dep dependencies a variable again
doc lint: Perl "strict" and "warnings" in lint-gitlink.perl
doc lint: fix bugs in, simplify and improve lint script
doc lint: lint and fix missing "GIT" end sections
doc lint: lint relative section order
docs: fix linting issues due to incorrect relative section order
svn tests: remove legacy re-setup from init-clone test
svn tests: refactor away a "set -e" in test body
tests: remove all uses of test_i18cmp
usage.c: don't copy/paste the same comment three times
api docs: document BUG() in api-error-handling.txt
api docs: document that BUG() emits a trace2 error event
pretty tests: simplify %aI/%cI date format test
pretty tests: give --date/format tests a better description
sparse-index.c: remove set_index_sparse_config()
streaming.c: avoid forward declarations
streaming.c: remove enum/function/vtbl indirection
streaming.c: remove {open,close,read}_method_decl() macros
streaming.c: stop passing around "object_info *" to open()
streaming.c: move {open,close,read} from vtable to "struct git_istream"
Makefile: don't re-define PERL_DEFINES
Makefile: regenerate perl/build/* if GIT-PERL-DEFINES changes
Makefile: regenerate *.pm on NO_PERL_CPAN_FALLBACKS change
perl: use mock i18n functions under NO_GETTEXT=Y
Makefile: make PERL_DEFINES recursively expanded
send-email: fix missing error message regression
send-email: don't needlessly abs_path() the core.hooksPath
send-email: move "hooks_path" invocation to git-send-email.perl
pack-objects: move static inline from a header to the sole consumer
builtin/fsck.c: don't conflate "int" and "enum" in callback
Øystein Walle (2):
transport: respect verbosity when setting upstream
add: die if both --dry-run and --interactive are given
Đoàn Trần Công Danh (6):
mailinfo: load default metainfo_charset lazily
mailinfo: stop parsing options manually
mailinfo: warn if CRLF found in decoded base64/QP email
mailinfo: allow squelching quoted CRLF warning
mailinfo: allow stripping quoted CR without warning
am: learn to process quoted lines that ends with CRLF
^ permalink raw reply [relevance 3%]
* [ANNOUNCE] Git v2.32.0-rc3
@ 2021-06-02 8:29 3% Junio C Hamano
0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2021-06-02 8:29 UTC (permalink / raw)
To: git; +Cc: Linux Kernel, git-packagers
A release candidate Git v2.32.0-rc3 is now available for testing at
the usual places. It is comprised of 589 non-merge commits since
v2.31.0, contributed by 84 people, 31 of which are new faces [*].
A couple of small last-minute regression fixes are in, relative to
the previouss release candidate. Hopefully we can tag the final
this weekend.
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.32.0-rc3' tag and the 'master' branch that the tag points at:
url = https://git.kernel.org/pub/scm/git/git
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.31.0 are as follows.
Welcome to the Git development community!
Adam Sharafeddine, Andrey Bienkowski, Atharva Raykar, Bruno
Albuquerque, Chinmoy Chakraborty, Christopher Schenk, Dan
Moseley, David Emett, Dmitry Torilov, Fabien Terrani, Firmin
Martin, Georgios Kontaxis, Jason Gore, Jerry Zhang, Joachim
Kuebart, Joseph Vusich, Josh Soref, Julien Richard, Li Linchao,
Louis Sautier, Luke Shumaker, Nicholas Clark, Peter Oliver,
Renato Botelho, Robert Foss, RyotaK, Sardorbek Imomaliev,
Tom Saeger, Will Chandler, Wolfgang Müller, and Yiyuan guo.
Returning contributors who helped this release are as follows.
Thanks for your continued support.
Adam Dinwoodie, Ævar Arnfjörð Bjarmason, Alex Henrie, Andrzej
Hunt, Bagas Sanjaya, Ben Humphreys, brian m. carlson, Charvi
Mendiratta, Christian Couder, David Aguilar, Dennis Ameling,
Denton Liu, Derrick Stolee, Đoàn Trần Công Danh, Elijah
Newren, Eric Sunshine, Eric Wong, Han-Wen Nienhuys, Han Xin,
Jeff Hostetler, Jeff King, Johannes Schindelin, Johannes Sixt,
John Szakmeister, Jonathan Nieder, Jonathan Tan, Junio C Hamano,
Kyle Meyer, Lénaïc Huard, Luke Diamand, Marc Branchaud,
Martin Ågren, Matheus Tavares, Nguyễn Thái Ngọc Duy,
Nipunn Koorapati, Øystein Walle, Patrick Steinhardt, Phillip
Wood, Rafael Silva, Ramkumar Ramachandra, Ramsay Jones, Randall
S. Becker, René Scharfe, Sergey Organov, Shubham Verma, Son
Luong Ngoc, SZEDER Gábor, Taylor Blau, Todd Zullinger, Torsten
Bögershausen, Trygve Aaberge, Ville Skyttä, and ZheNing Hu.
[*] We are counting not just the authorship contribution but
issue reporting, testing and reviewing that are recorded
in the commit trailers.
----------------------------------------------------------------
Git 2.32 Release Notes (draft)
==============================
Backward compatibility notes
----------------------------
* ".gitattributes", ".gitignore", and ".mailmap" files that are
symbolic links are ignored.
* "git apply --3way" used to first attempt a straight application,
and only fell back to the 3-way merge algorithm when the stright
application failed. Starting with this version, the command will
first try the 3-way merge algorithm and only when it fails (either
resulting with conflict or the base versions of blobs are missing),
falls back to the usual patch application.
Updates since v2.31
-------------------
UI, Workflows & Features
* It does not make sense to make ".gitattributes", ".gitignore" and
".mailmap" symlinks, as they are supposed to be usable from the
object store (think: bare repositories where HEAD:.mailmap etc. are
used). When these files are symbolic links, we used to read the
contents of the files pointed by them by mistake, which has been
corrected.
* "git stash show" learned to optionally show untracked part of the
stash.
* "git log --format='...'" learned "%(describe)" placeholder.
* "git repack" so far has been only capable of repacking everything
under the sun into a single pack (or split by size). A cleverer
strategy to reduce the cost of repacking a repository has been
introduced.
* The http codepath learned to let the credential layer to cache the
password used to unlock a certificate that has successfully been
used.
* "git commit --fixup=<commit>", which was to tweak the changes made
to the contents while keeping the original log message intact,
learned "--fixup=(amend|reword):<commit>", that can be used to
tweak both the message and the contents, and only the message,
respectively.
* "git send-email" learned to honor the core.hooksPath configuration.
* "git format-patch -v<n>" learned to allow a reroll count that is
not an integer.
* "git commit" learned "--trailer <key>[=<value>]" option; together
with the interpret-trailers command, this will make it easier to
support custom trailers.
* "git clone --reject-shallow" option fails the clone as soon as we
notice that we are cloning from a shallow repository.
* A configuration variable has been added to force tips of certain
refs to be given a reachability bitmap.
* "gitweb" learned "e-mail privacy" feature to redact strings that
look like e-mail addresses on various pages.
* "git apply --3way" has always been "to fall back to 3-way merge
only when straight application fails". Swap the order of falling
back so that 3-way is always attempted first (only when the option
is given, of course) and then straight patch application is used as
a fallback when it fails.
* "git apply" now takes "--3way" and "--cached" at the same time, and
work and record results only in the index.
* The command line completion (in contrib/) has learned that
CHERRY_PICK_HEAD is a possible pseudo-ref.
* Userdiff patterns for "Scheme" has been added.
* "git log" learned "--diff-merges=<style>" option, with an
associated configuration variable log.diffMerges.
* "git log --format=..." placeholders learned %ah/%ch placeholders to
request the --date=human output.
* Replace GIT_CONFIG_NOSYSTEM mechanism to decline from reading the
system-wide configuration file with GIT_CONFIG_SYSTEM that lets
users specify from which file to read the system-wide configuration
(setting it to an empty file would essentially be the same as
setting NOSYSTEM), and introduce GIT_CONFIG_GLOBAL to override the
per-user configuration in $HOME/.gitconfig.
* "git add" and "git rm" learned not to touch those paths that are
outside of sparse checkout.
* "git rev-list" learns the "--filter=object:type=<type>" option,
which can be used to exclude objects of the given kind from the
packfile generated by pack-objects.
* The command line completion (in contrib/) for "git stash" has been
updated.
* "git subtree" updates.
* It is now documented that "format-patch" skips merges.
* Options to "git pack-objects" that take numeric values like
--window and --depth should not accept negative values; the input
validation has been tightened.
* The way the command line specified by the trailer.<token>.command
configuration variable receives the end-user supplied value was
both error prone and misleading. An alternative to achieve the
same goal in a safer and more intuitive way has been added, as
the trailer.<token>.cmd configuration variable, to replace it.
* "git add -i --dry-run" does not dry-run, which was surprising. The
combination of options has taught to error out.
* "git push" learns to discover common ancestor with the receiving
end over protocol v2. This will hopefully make "git push" as
efficient as "git fetch" in avoiding objects from getting
transferred unnecessarily.
* "git mailinfo" (hence "git am") learned the "--quoted-cr" option to
control how lines ending with CRLF wrapped in base64 or qp are
handled.
Performance, Internal Implementation, Development Support etc.
* Rename detection rework continues.
* GIT_TEST_FAIL_PREREQS is a mechanism to skip test pieces with
prerequisites to catch broken tests that depend on the side effects
of optional pieces, but did not work at all when negative
prerequisites were involved.
(merge 27d578d904 jk/fail-prereq-testfix later to maint).
* "git diff-index" codepath has been taught to trust fsmonitor status
to reduce number of lstat() calls.
(merge 7e5aa13d2c nk/diff-index-fsmonitor later to maint).
* Reorganize Makefile to allow building git.o and other essential
objects without extra stuff needed only for testing.
* Preparatory API changes for parallel checkout.
* A simple IPC interface gets introduced to build services like
fsmonitor on top.
* Fsck API clean-up.
* SECURITY.md that is facing individual contributors and end users
has been introduced. Also a procedure to follow when preparing
embargoed releases has been spelled out.
(merge 09420b7648 js/security-md later to maint).
* Optimize "rev-list --use-bitmap-index --objects" corner case that
uses negative tags as the stopping points.
* CMake update for vsbuild.
* An on-disk reverse-index to map the in-pack location of an object
back to its object name across multiple packfiles is introduced.
* Generate [ec]tags under $(QUIET_GEN).
* Clean-up codepaths that implements "git send-email --validate"
option and improves the message from it.
* The last remnant of gettext-poison has been removed.
* The test framework has been taught to optionally turn the default
merge strategy to "ort" throughout the system where we use
three-way merges internally, like cherry-pick, rebase etc.,
primarily to enhance its test coverage (the strategy has been
available as an explicit "-s ort" choice).
* A bit of code clean-up and a lot of test clean-up around userdiff
area.
* Handling of "promisor packs" that allows certain objects to be
missing and lazily retrievable has been optimized (a bit).
* When packet_write() fails, we gave an extra error message
unnecessarily, which has been corrected.
* The checkout machinery has been taught to perform the actual
write-out of the files in parallel when able.
* Show errno in the trace output in the error codepath that calls
read_raw_ref method.
* Effort to make the command line completion (in contrib/) safe with
"set -u" continues.
* Tweak a few tests for "log --format=..." that show timestamps in
various formats.
* The reflog expiry machinery has been taught to emit trace events.
* Over-the-wire protocol learns a new request type to ask for object
sizes given a list of object names.
Fixes since v2.31
-----------------
* The fsmonitor interface read from its input without making sure
there is something to read from. This bug is new in 2.31
timeframe.
* The data structure used by fsmonitor interface was not properly
duplicated during an in-core merge, leading to use-after-free etc.
* "git bisect" reimplemented more in C during 2.30 timeframe did not
take an annotated tag as a good/bad endpoint well. This regression
has been corrected.
* Fix macros that can silently inject unintended null-statements.
* CALLOC_ARRAY() macro replaces many uses of xcalloc().
* Update insn in Makefile comments to run fuzz-all target.
* Fix a corner case bug in "git mv" on case insensitive systems,
which was introduced in 2.29 timeframe.
* We had a code to diagnose and die cleanly when a required
clean/smudge filter is missing, but an assert before that
unnecessarily fired, hiding the end-user facing die() message.
(merge 6fab35f748 mt/cleanly-die-upon-missing-required-filter later to maint).
* Update C code that sets a few configuration variables when a remote
is configured so that it spells configuration variable names in the
canonical camelCase.
(merge 0f1da600e6 ab/remote-write-config-in-camel-case later to maint).
* A new configuration variable has been introduced to allow choosing
which version of the generation number gets used in the
commit-graph file.
(merge 702110aac6 ds/commit-graph-generation-config later to maint).
* Perf test update to work better in secondary worktrees.
(merge 36e834abc1 jk/perf-in-worktrees later to maint).
* Updates to memory allocation code around the use of pcre2 library.
(merge c1760352e0 ab/grep-pcre2-allocfix later to maint).
* "git -c core.bare=false clone --bare ..." would have segfaulted,
which has been corrected.
(merge 75555676ad bc/clone-bare-with-conflicting-config later to maint).
* When "git checkout" removes a path that does not exist in the
commit it is checking out, it wasn't careful enough not to follow
symbolic links, which has been corrected.
(merge fab78a0c3d mt/checkout-remove-nofollow later to maint).
* A few option description strings started with capital letters,
which were corrected.
(merge 5ee90326dc cc/downcase-opt-help later to maint).
* Plug or annotate remaining leaks that trigger while running the
very basic set of tests.
(merge 68ffe095a2 ah/plugleaks later to maint).
* The hashwrite() API uses a buffering mechanism to avoid calling
write(2) too frequently. This logic has been refactored to be
easier to understand.
(merge ddaf1f62e3 ds/clarify-hashwrite later to maint).
* "git cherry-pick/revert" with or without "--[no-]edit" did not spawn
the editor as expected (e.g. "revert --no-edit" after a conflict
still asked to edit the message), which has been corrected.
(merge 39edfd5cbc en/sequencer-edit-upon-conflict-fix later to maint).
* "git daemon" has been tightened against systems that take backslash
as directory separator.
(merge 9a7f1ce8b7 rs/daemon-sanitize-dir-sep later to maint).
* A NULL-dereference bug has been corrected in an error codepath in
"git for-each-ref", "git branch --list" etc.
(merge c685450880 jk/ref-filter-segfault-fix later to maint).
* Streamline the codepath to fix the UTF-8 encoding issues in the
argv[] and the prefix on macOS.
(merge c7d0e61016 tb/precompose-prefix-simplify later to maint).
* The command-line completion script (in contrib/) had a couple of
references that would have given a warning under the "-u" (nounset)
option.
(merge c5c0548d79 vs/completion-with-set-u later to maint).
* When "git pack-objects" makes a literal copy of a part of existing
packfile using the reachability bitmaps, its update to the progress
meter was broken.
(merge 8e118e8490 jk/pack-objects-bitmap-progress-fix later to maint).
* The dependencies for config-list.h and command-list.h were broken
when the former was split out of the latter, which has been
corrected.
(merge 56550ea718 sg/bugreport-fixes later to maint).
* "git push --quiet --set-upstream" was not quiet when setting the
upstream branch configuration, which has been corrected.
(merge f3cce896a8 ow/push-quiet-set-upstream later to maint).
* The prefetch task in "git maintenance" assumed that "git fetch"
from any remote would fetch all its local branches, which would
fetch too much if the user is interested in only a subset of
branches there.
(merge 32f67888d8 ds/maintenance-prefetch-fix later to maint).
* Clarify that pathnames recorded in Git trees are most often (but
not necessarily) encoded in UTF-8.
(merge 9364bf465d ab/pathname-encoding-doc later to maint).
* "git --config-env var=val cmd" weren't accepted (only
--config-env=var=val was).
(merge c331551ccf ps/config-env-option-with-separate-value later to maint).
* When the reachability bitmap is in effect, the "do not lose
recently created objects and those that are reachable from them"
safety to protect us from races were disabled by mistake, which has
been corrected.
(merge 2ba582ba4c jk/prune-with-bitmap-fix later to maint).
* Cygwin pathname handling fix.
(merge bccc37fdc7 ad/cygwin-no-backslashes-in-paths later to maint).
* "git rebase --[no-]reschedule-failed-exec" did not work well with
its configuration variable, which has been corrected.
(merge e5b32bffd1 ab/rebase-no-reschedule-failed-exec later to maint).
* Portability fix for command line completion script (in contrib/).
(merge f2acf763e2 si/zsh-complete-comment-fix later to maint).
* "git repack -A -d" in a partial clone unnecessarily loosened
objects in promisor pack.
* "git bisect skip" when custom words are used for new/old did not
work, which has been corrected.
* A few variants of informational message "Already up-to-date" has
been rephrased.
(merge ad9322da03 js/merge-already-up-to-date-message-reword later to maint).
* "git submodule update --quiet" did not propagate the quiet option
down to underlying "git fetch", which has been corrected.
(merge 62af4bdd42 nc/submodule-update-quiet later to maint).
* Document that our test can use "local" keyword.
(merge a84fd3bcc6 jc/test-allows-local later to maint).
* The word-diff mode has been taught to work better with a word
regexp that can match an empty string.
(merge 0324e8fc6b pw/word-diff-zero-width-matches later to maint).
* "git p4" learned to find branch points more efficiently.
(merge 6b79818bfb jk/p4-locate-branch-point-optim later to maint).
* When "git update-ref -d" removes a ref that is packed, it left
empty directories under $GIT_DIR/refs/ for
(merge 5f03e5126d wc/packed-ref-removal-cleanup later to maint).
* "git clean" and "git ls-files -i" had confusion around working on
or showing ignored paths inside an ignored directory, which has
been corrected.
(merge b548f0f156 en/dir-traversal later to maint).
* The handling of "%(push)" formatting element of "for-each-ref" and
friends was broken when the same codepath started handling
"%(push:<what>)", which has been corrected.
(merge 1e1c4c5eac zh/ref-filter-push-remote-fix later to maint).
* The bash prompt script (in contrib/) did not work under "set -u".
(merge 5c0cbdb107 en/prompt-under-set-u later to maint).
* The "chainlint" feature in the test framework is a handy way to
catch common mistakes in writing new tests, but tends to get
expensive. An knob to selectively disable it has been introduced
to help running tests that the developer has not modified.
(merge 2d86a96220 jk/test-chainlint-softer later to maint).
* The "rev-parse" command did not diagnose the lack of argument to
"--path-format" option, which was introduced in v2.31 era, which
has been corrected.
(merge 99fc555188 wm/rev-parse-path-format-wo-arg later to maint).
* Other code cleanup, docfix, build fix, etc.
(merge f451960708 dl/cat-file-doc-cleanup later to maint).
(merge 12604a8d0c sv/t9801-test-path-is-file-cleanup later to maint).
(merge ea7e63921c jr/doc-ignore-typofix later to maint).
(merge 23c781f173 ps/update-ref-trans-hook-doc later to maint).
(merge 42efa1231a jk/filter-branch-sha256 later to maint).
(merge 4c8e3dca6e tb/push-simple-uses-branch-merge-config later to maint).
(merge 6534d436a2 bs/asciidoctor-installation-hints later to maint).
(merge 47957485b3 ab/read-tree later to maint).
(merge 2be927f3d1 ab/diff-no-index-tests later to maint).
(merge 76593c09bb ab/detox-gettext-tests later to maint).
(merge 28e29ee38b jc/doc-format-patch-clarify later to maint).
(merge fc12b6fdde fm/user-manual-use-preface later to maint).
(merge dba94e3a85 cc/test-helper-bloom-usage-fix later to maint).
(merge 61a7660516 hn/reftable-tables-doc-update later to maint).
(merge 81ed96a9b2 jt/fetch-pack-request-fix later to maint).
(merge 151b6c2dd7 jc/doc-do-not-capitalize-clarification later to maint).
(merge 9160068ac6 js/access-nul-emulation-on-windows later to maint).
(merge 7a14acdbe6 po/diff-patch-doc later to maint).
(merge f91371b948 pw/patience-diff-clean-up later to maint).
(merge 3a7f0908b6 mt/clean-clean later to maint).
(merge d4e2d15a8b ab/streaming-simplify later to maint).
(merge 0e59f7ad67 ah/merge-ort-i18n later to maint).
(merge e6f68f62e0 ls/typofix later to maint).
----------------------------------------------------------------
Changes since v2.31.0 are as follows:
Adam Dinwoodie (1):
cygwin: disallow backslashes in file names
Alex Henrie (1):
merge-ort: split "distinct types" message into two translatable messages
Andrey Bienkowski (1):
doc: clarify the filename encoding in git diff
Andrzej Hunt (24):
Makefile: update 'make fuzz-all' docs to reflect modern clang
symbolic-ref: don't leak shortened refname in check_symref()
reset: free instead of leaking unneeded ref
clone: free or UNLEAK further pointers when finished
worktree: fix leak in dwim_branch()
init: remove git_init_db_config() while fixing leaks
init-db: silence template_dir leak when converting to absolute path
fsmonitor: avoid global-buffer-overflow READ when checking trivial response
parse-options: convert bitfield values to use binary shift
parse-options: don't leak alias help messages
transport: also free remote_refs in transport_disconnect()
merge-ort: only do pointer arithmetic for non-empty lists
revision: free remainder of old commit list in limit_list
wt-status: fix multiple small leaks
ls-files: free max_prefix when done
bloom: clear each bloom_key after use
branch: FREE_AND_NULL instead of NULL'ing real_ref
builtin/bugreport: don't leak prefixed filename
builtin/check-ignore: clear_pathspec before returning
builtin/checkout: clear pending objects after diffing
mailinfo: also free strbuf lists when clearing mailinfo
builtin/for-each-ref: free filter and UNLEAK sorting.
builtin/rebase: release git_format_patch_opt too
builtin/rm: avoid leaking pathspec and seen
Atharva Raykar (1):
userdiff: add support for Scheme
Bagas Sanjaya (1):
INSTALL: note on using Asciidoctor to build doc
Bruno Albuquerque (1):
object-info: support for retrieving object info
Charvi Mendiratta (23):
sequencer: pass todo_item to do_pick_commit()
sequencer: use const variable for commit message comments
rebase -i: add fixup [-C | -c] command
t3437: test script for fixup [-C|-c] options in interactive rebase
rebase -i: teach --autosquash to work with amend!
doc/git-rebase: add documentation for fixup [-C|-c] options
sequencer: fixup the datatype of the 'flag' argument
sequencer: rename a few functions
rebase -i: clarify and fix 'fixup -c' rebase-todo help
t/lib-rebase: update the documentation of FAKE_LINES
t/t3437: fixup here-docs in the 'setup' test
t/t3437: remove the dependency of 'expected-message' file from tests
t/t3437: check the author date of fixed up commit
t/t3437: simplify and document the test helpers
t/t3437: use named commits in the tests
t/t3437: fixup the test 'multiple fixup -c opens editor once'
doc/rebase -i: fix typo in the documentation of 'fixup' command
sequencer: export and rename subject_length()
commit: add amend suboption to --fixup to create amend! commit
commit: add a reword suboption to --fixup
t7500: add tests for --fixup=[amend|reword] options
t3437: use --fixup with options to create amend! commit
doc/git-commit: add documentation for fixup=[amend|reword] options
Chinmoy Chakraborty (1):
column, range-diff: downcase option description
Christian Couder (1):
test-bloom: fix missing 'bloom' from usage string
Christopher Schenk (1):
remote-curl: fall back to basic auth if Negotiate fails
David Aguilar (1):
contrib/completion: fix zsh completion regression from 59d85a2a05
Dennis Ameling (2):
cmake(install): fix double .exe suffixes
cmake(install): include vcpkg dlls
Denton Liu (14):
git-cat-file.txt: monospace args, placeholders and filenames
git-cat-file.txt: remove references to "sha1"
stash show: teach --include-untracked and --only-untracked
stash show: learn stash.showIncludeUntracked
git-completion.bash: pass $__git_subcommand_idx from __git_main()
git-completion.bash: extract from else in _git_stash()
git-completion.bash: use __gitcomp_builtin() in _git_stash()
git-completion.bash: separate some commands onto their own line
git-completion.bash: rename to $__git_cmd_idx
git-completion.bash: use $__git_cmd_idx in more places
git-completion.bash: consolidate cases in _git_stash()
t3905: correct test title
stash show: fix segfault with --{include,only}-untracked
stash show: use stash.showIncludeUntracked even when diff options given
Derrick Stolee (58):
commit-graph: create local repository pointer
commit-graph: use config to specify generation type
csum-file: make hashwrite() more readable
sparse-index: design doc and format update
t/perf: add performance test for sparse operations
t1092: clean up script quoting
sparse-index: add guard to ensure full index
sparse-index: implement ensure_full_index()
t1092: compare sparse-checkout to sparse-index
test-read-cache: print cache entries with --table
test-tool: don't force full index
unpack-trees: ensure full index
sparse-checkout: hold pattern list in index
sparse-index: add 'sdir' index extension
sparse-index: convert from full to sparse
submodule: sparse-index should not collapse links
unpack-trees: allow sparse directories
sparse-index: check index conversion happens
sparse-index: add index.sparse config option
sparse-checkout: toggle sparse index from builtin
sparse-checkout: disable sparse-index
cache-tree: integrate with sparse directory entries
sparse-index: loose integration with cache_tree_verify()
p2000: add sparse-index repos
maintenance: simplify prefetch logic
sparse-index: API protection strategy
*: remove 'const' qualifier for struct index_state
read-cache: expand on query into sparse-directory entry
cache: move ensure_full_index() to cache.h
add: ensure full index
checkout-index: ensure full index
checkout: ensure full index
commit: ensure full index
difftool: ensure full index
fsck: ensure full index
grep: ensure full index
ls-files: ensure full index
merge-index: ensure full index
rm: ensure full index
stash: ensure full index
update-index: ensure full index
dir: ensure full index
entry: ensure full index
merge-recursive: ensure full index
pathspec: ensure full index
read-cache: ensure full index
resolve-undo: ensure full index
revision: ensure full index
name-hash: don't add directories to name_hash
sparse-index: expand_to_path()
name-hash: use expand_to_path()
fetch: add --prefetch option
maintenance: use 'git fetch --prefetch'
maintenance: respect remote.*.skipFetchAll
dir: update stale description of treat_directory()
sparse-index: fix uninitialized jump
t1092: use GIT_PROGRESS_DELAY for consistent results
dir: update stale description of treat_directory()
Elijah Newren (50):
diffcore-rename: use directory rename guided basename comparisons
diffcore-rename: provide basic implementation of idx_possible_rename()
diffcore-rename: add a mapping of destination names to their indices
Move computation of dir_rename_count from merge-ort to diffcore-rename
diffcore-rename: add function for clearing dir_rename_count
diffcore-rename: move dir_rename_counts into dir_rename_info struct
diffcore-rename: extend cleanup_dir_rename_info()
diffcore-rename: compute dir_rename_counts in stages
diffcore-rename: limit dir_rename_counts computation to relevant dirs
diffcore-rename: compute dir_rename_guess from dir_rename_counts
diffcore-rename: enable filtering possible rename sources
merge-ort: precompute subset of sources for which we need rename detection
merge-ort: add data structures for an alternate tree traversal
merge-ort: introduce wrappers for alternate tree traversal
merge-ort: precompute whether directory rename detection is needed
merge-ort: use relevant_sources to filter possible rename sources
merge-ort: skip rename detection entirely if possible
diffcore-rename: avoid doing basename comparisons for irrelevant sources
diffcore-rename: take advantage of "majority rules" to skip more renames
merge-ort, diffcore-rename: tweak dirs_removed and relevant_source type
merge-ort: record the reason that we want a rename for a directory
diffcore-rename: only compute dir_rename_count for relevant directories
diffcore-rename: check if we have enough renames for directories early on
diffcore-rename: add computation of number of unknown renames
merge-ort: record the reason that we want a rename for a file
diffcore-rename: determine which relevant_sources are no longer relevant
merge-ort: use STABLE_QSORT instead of QSORT where required
merge-ort: add a special minimal index just for renormalization
merge-ort: have ll_merge() use a special attr_index for renormalization
merge-ort: let renormalization change modify/delete into clean delete
merge-ort: support subtree shifting
t6428: new test for SKIP_WORKTREE handling and conflicts
merge-ort: implement CE_SKIP_WORKTREE handling with conflicted entries
t: mark several submodule merging tests as fixed under merge-ort
merge-ort: write $GIT_DIR/AUTO_MERGE whenever we hit a conflict
merge-recursive: add a bunch of FIXME comments documenting known bugs
Revert "merge-ort: ignore the directory rename split conflict for now"
t6423: mark remaining expected failure under merge-ort as such
Add testing with merge-ort merge strategy
sequencer: fix edit handling for cherry-pick and revert messages
dir: convert trace calls to trace2 equivalents
dir: report number of visited directories and paths with trace2
ls-files: error out on -i unless -o or -c are specified
t7300: add testcase showing unnecessary traversal into ignored directory
t3001, t7300: add testcase showcasing missed directory traversal
dir: avoid unnecessary traversal into ignored directory
dir: traverse into untracked directories if they may have ignored subfiles
dir: introduce readdir_skip_dot_and_dotdot() helper
git-prompt: work under set -u
dir: introduce readdir_skip_dot_and_dotdot() helper
Eric Sunshine (1):
merge(s): apply consistent punctuation to "up to date" messages
Eric Wong (1):
remote-curl: fix clone on sha256 repos
Firmin Martin (1):
user-manual.txt: assign preface an id and a title
Georgios Kontaxis (1):
gitweb: add "e-mail privacy" feature to redact e-mail addresses
Han Xin (1):
pack-objects: fix comment of reused_chunk.difference
Han-Wen Nienhuys (3):
reftable: document an alternate cleanup method on Windows
refs: print errno for read_raw_ref if GIT_TRACE_REFS is set
refs/debug: trace into reflog expiry too
Jeff Hostetler (14):
pkt-line: eliminate the need for static buffer in packet_write_gently()
simple-ipc: design documentation for new IPC mechanism
simple-ipc: add win32 implementation
unix-socket: eliminate static unix_stream_socket() helper function
unix-socket: add backlog size option to unix_stream_listen()
unix-socket: disallow chdir() when creating unix domain sockets
unix-stream-server: create unix domain socket under lock
convert: make convert_attrs() and convert structs public
convert: add [async_]convert_to_working_tree_ca() variants
convert: add get_stream_filter_ca() variant
convert: add classification for conv_attrs struct
simple-ipc: add Unix domain socket implementation
t0052: add simple-ipc tests and t/helper/test-simple-ipc tool
simple-ipc: correct ifdefs when NO_PTHREADS is defined
Jeff King (43):
add open_nofollow() helper
attr: convert "macro_ok" into a flags field
exclude: add flags parameter to add_patterns()
attr: do not respect symlinks for in-tree .gitattributes
exclude: do not respect symlinks for in-tree .gitignore
mailmap: do not respect symlinks for in-tree .mailmap
p5303: add missing &&-chains
p5303: measure time to repack with keep
builtin/pack-objects.c: rewrite honor-pack-keep logic
packfile: add kept-pack cache for find_kept_pack_entry()
t/perf: handle worktrees as test repos
t/perf: avoid copying worktree files from test repo
t7003: test ref rewriting explicitly
filter-branch: drop multiple-ancestor warning
filter-branch: drop $_x40 glob
bisect: peel annotated tags to commits
t: annotate !PTHREADS tests with !FAIL_PREREQS
ref-filter: fix NULL check for parse object failure
midx.c: improve cache locality in midx_pack_order_cmp()
pack-objects: update "nr_seen" progress based on pack-reused count
is_promisor_object(): free tree buffer after parsing
lookup_unknown_object(): take a repository argument
revision: avoid parsing with --exclude-promisor-objects
pack-bitmap: clean up include_check after use
prune: save reachable-from-recent objects with bitmaps
t5300: modernize basic tests
t5300: check that we produced expected number of deltas
pack-objects: clamp negative window size to 0
t5316: check behavior of pack-objects --depth=0
pack-objects: clamp negative depth to 0
docs/format-patch: mention handling of merges
t7415: remove out-dated comment about translation
fsck_tree(): fix shadowed variable
fsck_tree(): wrap some long lines
t7415: rename to expand scope
t7450: test verify_path() handling of gitmodules
t7450: test .gitmodules symlink matching against obscured names
t0060: test ntfs/hfs-obscured dotfiles
fsck: warn about symlinked dotfiles we'll open with O_NOFOLLOW
docs: document symlink restrictions for dot-files
t: avoid sed-based chain-linting in some expensive cases
t5551: test http interaction with credential helpers
Revert "remote-curl: fall back to basic auth if Negotiate fails"
Jerry Zhang (3):
git-apply: try threeway first when "--3way" is used
git-apply: allow simultaneous --cached and --3way options
apply: adjust messages to account for --3way changes
Joachim Kuebart (2):
git-p4: ensure complex branches are cloned correctly
git-p4: speed up search for branch parent
Johannes Schindelin (10):
pkt-line: do not issue flush packets in write_packetized_*()
pkt-line: add PACKET_READ_GENTLE_ON_READ_ERROR option
pkt-line: add options argument to read_packetized_to_strbuf()
fsmonitor: fix memory corruption in some corner cases
fsmonitor: do not forget to release the token in `discard_index()`
SECURITY: describe how to report vulnerabilities
Document how we do embargoed releases
cmake: support SKIP_DASHED_BUILT_INS
cmake: add a preparatory work-around to accommodate `vcpkg`
msvc: avoid calling `access("NUL", flags)`
Johannes Sixt (1):
t9001-send-email.sh: fix expected absolute paths on Windows
John Szakmeister (2):
http: store credential when PKI auth is used
http: drop the check for an empty proxy password before approving
Jonathan Tan (8):
t5606: run clone branch name test with protocol v2
fetch-pack: buffer object-format with other args
fetch-pack: refactor process_acks()
fetch-pack: refactor add_haves()
fetch-pack: refactor command and capability write
fetch: teach independent negotiation (no packfile)
send-pack: support push negotiation
t5601: mark protocol v2-only test
Josh Soref (1):
merge: fix swapped "up to date" message components
Julien Richard (1):
doc: .gitignore documentation typofix
Junio C Hamano (32):
builtin/repack.c: reword comment around pack-objects flags
xcalloc: use CALLOC_ARRAY() when applicable
cocci: allow xcalloc(1, size)
The first batch in 2.32 cycle
The second batch
format-patch: give an overview of what a "patch" message is
The third patch
Git 2.31.1
The fourth batch
The fifth batch
The sixth batch
The seventh batch
The eighth batch
The ninth batch
doc: clarify "do not capitalize the first word" rule
The tenth batch
The eleventh (aka "ort") batch
The twelfth batch
The thirteenth batch
CodingGuidelines: explicitly allow "local" for test scripts
The fourteenth batch
The fifteenth batch
The sixteenth batch
The seventeenth batch
Git 2.32-rc0
A handful more topics before -rc1
Git 2.32-rc1
t1092: revert the "-1" hack for emulating "no progress meter"
Revert "dir: introduce readdir_skip_dot_and_dotdot() helper"
Revert "dir: update stale description of treat_directory()"
Git 2.32-rc2
Git 2.32-rc3
Kyle Meyer (1):
config.txt: add missing period
Li Linchao (1):
builtin/clone.c: add --reject-shallow option
Louis Sautier (1):
pretty: fix a typo in the documentation for %(trailers)
Luke Shumaker (30):
.gitignore: ignore 'git-subtree' as a build artifact
subtree: t7900: update for having the default branch name be 'main'
subtree: t7900: use test-lib.sh's test_count
subtree: t7900: use consistent formatting
subtree: t7900: comment subtree_test_create_repo
subtree: t7900: use 'test' for string equality
subtree: t7900: delete some dead code
subtree: t7900: fix 'verify one file change per commit'
subtree: t7900: rename last_commit_message to last_commit_subject
subtree: t7900: add a test for the -h flag
subtree: t7900: add porcelain tests for 'pull' and 'push'
subtree: don't have loose code outside of a function
subtree: more consistent error propagation
subtree: drop support for git < 1.7
subtree: use `git merge-base --is-ancestor`
subtree: use git-sh-setup's `say`
subtree: use more explicit variable names for cmdline args
subtree: use "$*" instead of "$@" as appropriate
subtree: don't fuss with PATH
subtree: use "^{commit}" instead of "^0"
subtree: parse revs in individual cmd_ functions
subtree: remove duplicate check
subtree: add comments and sanity checks
subtree: don't let debug and progress output clash
subtree: have $indent actually affect indentation
subtree: give the docs a once-over
subtree: allow --squash to be used with --rejoin
subtree: allow 'split' flags to be passed to 'push'
subtree: push: allow specifying a local rev other than HEAD
subtree: be stricter about validating flags
Lénaïc Huard (1):
maintenance: fix two memory leaks
Martin Ågren (2):
git-repack.txt: remove spurious ")"
pretty-formats.txt: add missing space
Matheus Tavares (32):
convert: fail gracefully upon missing clean cmd on required filter
symlinks: update comment on threaded_check_leading_path()
checkout: don't follow symlinks when removing entries
entry: extract a header file for entry.c functions
entry: make fstat_output() and read_blob_entry() public
entry: extract update_ce_after_write() from write_entry()
entry: move conv_attrs lookup up to checkout_entry()
entry: add checkout_entry_ca() taking preloaded conv_attrs
add: include magic part of pathspec on --refresh error
t3705: add tests for `git add` in sparse checkouts
add: make --chmod and --renormalize honor sparse checkouts
pathspec: allow to ignore SKIP_WORKTREE entries on index matching
refresh_index(): add flag to ignore SKIP_WORKTREE entries
add: warn when asked to update SKIP_WORKTREE entries
rm: honor sparse checkout patterns
pkt-line: do not report packet write errors twice
unpack-trees: add basic support for parallel checkout
parallel-checkout: make it truly parallel
parallel-checkout: add configuration options
parallel-checkout: support progress displaying
parallel-checkout: add design documentation
make_transient_cache_entry(): optionally alloc from mem_pool
builtin/checkout.c: complete parallel checkout support
parallel-checkout: add tests related to path collisions
t0028: extract encoding helpers to lib-encoding.sh
checkout-index: add parallel checkout support
parallel-checkout: add tests related to .gitattributes
parallel-checkout: add tests for basic operations
ci: run test round with parallel-checkout enabled
clean: remove unnecessary variable
init: fix bug regarding ~/ expansion in init.templateDir
t2080: fix cp invocation to copy symlinks instead of following them
Nicholas Clark (1):
submodule update: silence underlying fetch with "--quiet"
Nipunn Koorapati (3):
fsmonitor: skip lstat deletion check during git diff-index
fsmonitor: add assertion that fsmonitor is valid to check_removed
fsmonitor: add perf test for git diff HEAD
Patrick Steinhardt (17):
githooks.txt: replace mentions of SHA-1 specific properties
githooks.txt: clarify documentation on reference-transaction hook
pack-bitmap: avoid traversal of objects referenced by uninteresting tag
uploadpack.txt: document implication of `uploadpackfilter.allow`
revision: mark commit parents as NOT_USER_GIVEN
list-objects: move tag processing into its own function
list-objects: support filtering by tag and commit
list-objects: implement object type filter
pack-bitmap: implement object type filter
pack-bitmap: implement combined filter
rev-list: allow filtering of provided items
config: rename `git_etc_config()`
config: unify code paths to get global config paths
config: allow overriding of global and system configuration
t1300: fix unset of GIT_CONFIG_NOSYSTEM leaking into subsequent tests
git.txt: fix synopsis of `--config-env` missing the equals sign
git: support separate arg for `--config-env`'s value
Peter Oliver (1):
doc: point to diff attribute in patch format docs
Phillip Wood (6):
rebase -i: only write fixup-message when it's needed
sequencer: factor out code to append squash message
rebase -i: comment out squash!/fixup! subjects from squash message
word diff: handle zero length matches
patience diff: remove unnecessary string comparisons
patience diff: remove unused variable
Rafael Silva (1):
repack: avoid loosening promisor objects in partial clones
Ramkumar Ramachandra (1):
Add entry for Ramkumar Ramachandra
Ramsay Jones (1):
bisect--helper: use BISECT_TERMS in 'bisect skip' command
René Scharfe (12):
pretty: add %(describe)
pretty: add merge and exclude options to %(describe)
t4205: assert %(describe) test coverage
pretty: document multiple %(describe) being inconsistent
fix xcalloc() argument order
archive: expand only a single %(describe) per archive
git-compat-util.h: drop trailing semicolon from macro definition
use CALLOC_ARRAY
vcs-svn: remove header files as well
block-sha1: drop trailing semicolon from macro definition
mem-pool: drop trailing semicolon from macro definition
daemon: sanitize all directory separators
Robert Foss (1):
git-send-email: Respect core.hooksPath setting
SZEDER Gábor (1):
Makefile: add missing dependencies of 'config-list.h'
Sardorbek Imomaliev (1):
work around zsh comment in __git_complete_worktree_paths
Sergey Organov (5):
diff-merges: introduce --diff-merges=on
diff-merges: refactor set_diff_merges()
diff-merges: adapt -m to enable default diff format
diff-merges: introduce log.diffMerges config variable
doc/diff-options: document new --diff-merges features
Shubham Verma (1):
t9801: replace test -f with test_path_is_file
Taylor Blau (28):
packfile: introduce 'find_kept_pack_entry()'
revision: learn '--no-kept-objects'
builtin/pack-objects.c: add '--stdin-packs' option
builtin/repack.c: add '--geometric' option
builtin/repack.c: do not repack single packs with --geometric
t7703: test --geometric repack with loose objects
builtin/repack.c: assign pack split later
builtin/repack.c: be more conservative with unsigned overflows
Documentation/git-push.txt: correct configuration typo
builtin/pack-objects.c: ignore missing links with --stdin-packs
builtin/multi-pack-index.c: inline 'flags' with options
builtin/multi-pack-index.c: don't handle 'progress' separately
builtin/multi-pack-index.c: define common usage with a macro
builtin/multi-pack-index.c: split sub-commands
builtin/multi-pack-index.c: don't enter bogus cmd_mode
builtin/multi-pack-index.c: display usage on unrecognized command
t/helper/test-read-midx.c: add '--show-objects'
pack-bitmap: add 'test_bitmap_commits()' helper
t/helper/test-bitmap.c: initial commit
builtin/pack-objects.c: respect 'pack.preferBitmapTips'
midx: allow marking a pack as preferred
midx: don't free midx_name early
midx: keep track of the checksum
midx: make some functions non-static
Documentation/technical: describe multi-pack reverse indexes
pack-revindex: read multi-pack reverse indexes
pack-write.c: extract 'write_rev_file_order'
pack-revindex: write multi-pack reverse indexes
Todd Zullinger (1):
t7500: remove non-existant C_LOCALE_OUTPUT prereq
Torsten Bögershausen (3):
git mv foo FOO ; git mv foo bar gave an assert
precompose_utf8: make precompose_string_if_needed() public
macOS: precompose startup_info->prefix
Ville Skyttä (2):
completion: audit and guard $GIT_* against unset use
completion: avoid aliased command lookup error in nounset mode
Will Chandler (1):
refs: cleanup directories when deleting packed ref
Wolfgang Müller (1):
rev-parse: fix segfault with missing --path-format argument
ZheNing Hu (8):
commit: add --trailer option
format-patch: allow a non-integral version numbers
ref-filter: get rid of show_ref_array_item
ref-filter: reuse output buffer
pretty: provide human date format
docs: correct descript of trailer.<token>.command
trailer: add new .cmd config option
ref-filter: fix read invalid union member bug
brian m. carlson (14):
builtin/init-db: handle bare clones when core.bare set to false
hash: add an algo member to struct object_id
Always use oidread to read into struct object_id
http-push: set algorithm when reading object ID
hash: add a function to finalize object IDs
Use the final_oid_fn to finalize hashing of object IDs
builtin/pack-redundant: avoid casting buffers to struct object_id
hash: set, copy, and use algo field in struct object_id
hash: provide per-algorithm null OIDs
builtin/show-index: set the algorithm for object IDs
commit-graph: don't store file hashes as struct object_id
builtin/pack-objects: avoid using struct object_id for pack hash
hex: default to the_hash_algo on zero algorithm value
hex: print objects using the hash algorithm member
Ævar Arnfjörð Bjarmason (97):
grep/pcre2: drop needless assignment + assert() on opt->pcre2
grep/pcre2: drop needless assignment to NULL
grep/pcre2: correct reference to grep_init() in comment
grep/pcre2: prepare to add debugging to pcre2_malloc()
grep/pcre2: add GREP_PCRE2_DEBUG_MALLOC debug mode
grep/pcre2: use compile-time PCREv2 version test
grep/pcre2: use pcre2_maketables_free() function
grep/pcre2: actually make pcre2 use custom allocator
grep/pcre2: move back to thread-only PCREv2 structures
grep/pcre2: move definitions of pcre2_{malloc,free}
Makefile: guard against TEST_OBJS in the environment
Makefile: split up long OBJECTS line
Makefile: sort OBJECTS assignment for subsequent change
Makefile: split OBJECTS into OBJECTS and GIT_OBJS
Makefile: add {program,xdiff,test,git,fuzz}-objs & objects targets
remote: add camel-cased *.tagOpt key, like clone
remote: write camel-cased *.pushRemote on rename
fsck.c: refactor and rename common config callback
show tests: add test for "git show <tree>"
ls-files tests: add meaningful --with-tree tests
tree.c API: move read_tree() into builtin/ls-files.c
ls-files: don't needlessly pass around stage variable
ls-files: refactor away read_tree()
archive: stop passing "stage" through read_tree_recursive()
tree.h API: expose read_tree_1() as read_tree_at()
tree.h API: simplify read_tree_recursive() signature
diff --no-index tests: add test for --exit-code
diff --no-index tests: test mode normalization
rebase: remove transitory rebase.useBuiltin setting & env
mktag tests: fix broken "&&" chain
fsck.h: use designed initializers for FSCK_OPTIONS_{DEFAULT,STRICT}
fsck.h: use "enum object_type" instead of "int"
fsck.c: rename variables in fsck_set_msg_type() for less confusion
fsck.c: remove (mostly) redundant append_msg_id() function
fsck.c: rename remaining fsck_msg_id "id" to "msg_id"
fsck.c: refactor fsck_msg_type() to limit scope of "int msg_type"
fsck.h: move FSCK_{FATAL,INFO,ERROR,WARN,IGNORE} into an enum
fsck.h: re-order and re-assign "enum fsck_msg_type"
fsck.c: call parse_msg_type() early in fsck_set_msg_type()
fsck.c: undefine temporary STR macro after use
fsck.c: give "FOREACH_MSG_ID" a more specific name
fsck.[ch]: move FOREACH_FSCK_MSG_ID & fsck_msg_id from *.c to *.h
fsck.c: pass along the fsck_msg_id in the fsck_error callback
fsck.c: add an fsck_set_msg_type() API that takes enums
fsck.c: move gitmodules_{found,done} into fsck_options
fetch-pack: don't needlessly copy fsck_options
fetch-pack: use file-scope static struct for fsck_options
fetch-pack: use new fsck API to printing dangling submodules
Makefile: add QUIET_GEN to "tags" and "TAGS" targets
git-send-email: replace "map" in void context with "for"
git-send-email: test full --validate output
git-send-email: refactor duplicate $? checks into a function
git-send-email: improve --validate error output
bash completion: complete CHERRY_PICK_HEAD
config.c: remove last remnant of GIT_TEST_GETTEXT_POISON
userdiff style: re-order drivers in alphabetical order
userdiff style: declare patterns with consistent style
userdiff style: normalize pascal regex declaration
userdiff: add and use for_each_userdiff_driver()
userdiff tests: explicitly test "default" pattern
userdiff tests: list builtin drivers via test-tool
userdiff: remove support for "broken" tests
blame tests: don't rely on t/t4018/ directory
blame tests: simplify userdiff driver test
rebase tests: camel-case rebase.rescheduleFailedExec consistently
rebase: don't override --no-reschedule-failed-exec with config
Documentation/Makefile: make $(wildcard howto/*.txt) a var
Documentation/Makefile: make doc.dep dependencies a variable again
doc lint: Perl "strict" and "warnings" in lint-gitlink.perl
doc lint: fix bugs in, simplify and improve lint script
doc lint: lint and fix missing "GIT" end sections
doc lint: lint relative section order
docs: fix linting issues due to incorrect relative section order
svn tests: remove legacy re-setup from init-clone test
svn tests: refactor away a "set -e" in test body
tests: remove all uses of test_i18cmp
usage.c: don't copy/paste the same comment three times
api docs: document BUG() in api-error-handling.txt
api docs: document that BUG() emits a trace2 error event
pretty tests: simplify %aI/%cI date format test
pretty tests: give --date/format tests a better description
sparse-index.c: remove set_index_sparse_config()
streaming.c: avoid forward declarations
streaming.c: remove enum/function/vtbl indirection
streaming.c: remove {open,close,read}_method_decl() macros
streaming.c: stop passing around "object_info *" to open()
streaming.c: move {open,close,read} from vtable to "struct git_istream"
Makefile: don't re-define PERL_DEFINES
Makefile: regenerate perl/build/* if GIT-PERL-DEFINES changes
Makefile: regenerate *.pm on NO_PERL_CPAN_FALLBACKS change
perl: use mock i18n functions under NO_GETTEXT=Y
Makefile: make PERL_DEFINES recursively expanded
send-email: fix missing error message regression
send-email: don't needlessly abs_path() the core.hooksPath
send-email: move "hooks_path" invocation to git-send-email.perl
pack-objects: move static inline from a header to the sole consumer
builtin/fsck.c: don't conflate "int" and "enum" in callback
Øystein Walle (2):
transport: respect verbosity when setting upstream
add: die if both --dry-run and --interactive are given
Đoàn Trần Công Danh (6):
mailinfo: load default metainfo_charset lazily
mailinfo: stop parsing options manually
mailinfo: warn if CRLF found in decoded base64/QP email
mailinfo: allow squelching quoted CRLF warning
mailinfo: allow stripping quoted CR without warning
am: learn to process quoted lines that ends with CRLF
^ permalink raw reply [relevance 3%]
* [ANNOUNCE] Git v2.32.0-rc2
@ 2021-05-28 6:13 3% Junio C Hamano
0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2021-05-28 6:13 UTC (permalink / raw)
To: git; +Cc: Linux Kernel, git-packagers, lwn
A release candidate Git v2.32.0-rc2 is now available for testing at
the usual places. It is comprised of 586 non-merge commits since
v2.31.0, contributed by 83 people, 31 of which are new faces [*].
There have been a handful of regression found since v2.32.0-rc0 was
tagged, and this has fixes to them. https://tinyurl.com/gitCal says
that we plan to have another release candidate mid next week, but we
may go straight to the final 2.32 instead. Let's see how this one
fares before deciding.
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.32.0-rc2' tag and the 'master' branch that the tag points at:
url = https://git.kernel.org/pub/scm/git/git
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.31.0 are as follows.
Welcome to the Git development community!
Adam Sharafeddine, Andrey Bienkowski, Atharva Raykar, Bruno
Albuquerque, Chinmoy Chakraborty, Christopher Schenk, Dan
Moseley, David Emett, Dmitry Torilov, Fabien Terrani, Firmin
Martin, Georgios Kontaxis, Jason Gore, Jerry Zhang, Joachim
Kuebart, Joseph Vusich, Josh Soref, Julien Richard, Li Linchao,
Louis Sautier, Luke Shumaker, Nicholas Clark, Peter Oliver,
Renato Botelho, Robert Foss, RyotaK, Sardorbek Imomaliev,
Tom Saeger, Will Chandler, Wolfgang Müller, and Yiyuan guo.
Returning contributors who helped this release are as follows.
Thanks for your continued support.
Adam Dinwoodie, Ævar Arnfjörð Bjarmason, Alex Henrie,
Andrzej Hunt, Bagas Sanjaya, Ben Humphreys, brian m. carlson,
Charvi Mendiratta, Christian Couder, Dennis Ameling, Denton Liu,
Derrick Stolee, Đoàn Trần Công Danh, Elijah Newren, Eric
Sunshine, Eric Wong, Han-Wen Nienhuys, Han Xin, Jeff Hostetler,
Jeff King, Johannes Schindelin, Johannes Sixt, John Szakmeister,
Jonathan Nieder, Jonathan Tan, Junio C Hamano, Kyle Meyer,
Lénaïc Huard, Luke Diamand, Marc Branchaud, Martin Ågren,
Matheus Tavares, Nguyễn Thái Ngọc Duy, Nipunn Koorapati,
Øystein Walle, Patrick Steinhardt, Phillip Wood, Rafael Silva,
Ramkumar Ramachandra, Ramsay Jones, Randall S. Becker, René
Scharfe, Sergey Organov, Shubham Verma, Son Luong Ngoc, SZEDER
Gábor, Taylor Blau, Todd Zullinger, Torsten Bögershausen,
Trygve Aaberge, Ville Skyttä, and ZheNing Hu.
[*] We are counting not just the authorship contribution but
issue reporting, testing and reviewing that are recorded
in the commit trailers.
----------------------------------------------------------------
Git 2.32 Release Notes (draft)
==============================
Backward compatibility notes
----------------------------
* ".gitattributes", ".gitignore", and ".mailmap" files that are
symbolic links are ignored.
* "git apply --3way" used to first attempt a straight application,
and only fell back to the 3-way merge algorithm when the stright
application failed. Starting with this version, the command will
first try the 3-way merge algorithm and only when it fails (either
resulting with conflict or the base versions of blobs are missing),
falls back to the usual patch application.
Updates since v2.31
-------------------
UI, Workflows & Features
* It does not make sense to make ".gitattributes", ".gitignore" and
".mailmap" symlinks, as they are supposed to be usable from the
object store (think: bare repositories where HEAD:.mailmap etc. are
used). When these files are symbolic links, we used to read the
contents of the files pointed by them by mistake, which has been
corrected.
* "git stash show" learned to optionally show untracked part of the
stash.
* "git log --format='...'" learned "%(describe)" placeholder.
* "git repack" so far has been only capable of repacking everything
under the sun into a single pack (or split by size). A cleverer
strategy to reduce the cost of repacking a repository has been
introduced.
* The http codepath learned to let the credential layer to cache the
password used to unlock a certificate that has successfully been
used.
* "git commit --fixup=<commit>", which was to tweak the changes made
to the contents while keeping the original log message intact,
learned "--fixup=(amend|reword):<commit>", that can be used to
tweak both the message and the contents, and only the message,
respectively.
* "git send-email" learned to honor the core.hooksPath configuration.
* "git format-patch -v<n>" learned to allow a reroll count that is
not an integer.
* "git commit" learned "--trailer <key>[=<value>]" option; together
with the interpret-trailers command, this will make it easier to
support custom trailers.
* "git clone --reject-shallow" option fails the clone as soon as we
notice that we are cloning from a shallow repository.
* A configuration variable has been added to force tips of certain
refs to be given a reachability bitmap.
* "gitweb" learned "e-mail privacy" feature to redact strings that
look like e-mail addresses on various pages.
* "git apply --3way" has always been "to fall back to 3-way merge
only when straight application fails". Swap the order of falling
back so that 3-way is always attempted first (only when the option
is given, of course) and then straight patch application is used as
a fallback when it fails.
* "git apply" now takes "--3way" and "--cached" at the same time, and
work and record results only in the index.
* The command line completion (in contrib/) has learned that
CHERRY_PICK_HEAD is a possible pseudo-ref.
* Userdiff patterns for "Scheme" has been added.
* "git log" learned "--diff-merges=<style>" option, with an
associated configuration variable log.diffMerges.
* "git log --format=..." placeholders learned %ah/%ch placeholders to
request the --date=human output.
* Replace GIT_CONFIG_NOSYSTEM mechanism to decline from reading the
system-wide configuration file with GIT_CONFIG_SYSTEM that lets
users specify from which file to read the system-wide configuration
(setting it to an empty file would essentially be the same as
setting NOSYSTEM), and introduce GIT_CONFIG_GLOBAL to override the
per-user configuration in $HOME/.gitconfig.
* "git add" and "git rm" learned not to touch those paths that are
outside of sparse checkout.
* "git rev-list" learns the "--filter=object:type=<type>" option,
which can be used to exclude objects of the given kind from the
packfile generated by pack-objects.
* The command line completion (in contrib/) for "git stash" has been
updated.
* "git subtree" updates.
* It is now documented that "format-patch" skips merges.
* Options to "git pack-objects" that take numeric values like
--window and --depth should not accept negative values; the input
validation has been tightened.
* The way the command line specified by the trailer.<token>.command
configuration variable receives the end-user supplied value was
both error prone and misleading. An alternative to achieve the
same goal in a safer and more intuitive way has been added, as
the trailer.<token>.cmd configuration variable, to replace it.
* "git add -i --dry-run" does not dry-run, which was surprising. The
combination of options has taught to error out.
* "git push" learns to discover common ancestor with the receiving
end over protocol v2. This will hopefully make "git push" as
efficient as "git fetch" in avoiding objects from getting
transferred unnecessarily.
* "git mailinfo" (hence "git am") learned the "--quoted-cr" option to
control how lines ending with CRLF wrapped in base64 or qp are
handled.
Performance, Internal Implementation, Development Support etc.
* Rename detection rework continues.
* GIT_TEST_FAIL_PREREQS is a mechanism to skip test pieces with
prerequisites to catch broken tests that depend on the side effects
of optional pieces, but did not work at all when negative
prerequisites were involved.
(merge 27d578d904 jk/fail-prereq-testfix later to maint).
* "git diff-index" codepath has been taught to trust fsmonitor status
to reduce number of lstat() calls.
(merge 7e5aa13d2c nk/diff-index-fsmonitor later to maint).
* Reorganize Makefile to allow building git.o and other essential
objects without extra stuff needed only for testing.
* Preparatory API changes for parallel checkout.
* A simple IPC interface gets introduced to build services like
fsmonitor on top.
* Fsck API clean-up.
* SECURITY.md that is facing individual contributors and end users
has been introduced. Also a procedure to follow when preparing
embargoed releases has been spelled out.
(merge 09420b7648 js/security-md later to maint).
* Optimize "rev-list --use-bitmap-index --objects" corner case that
uses negative tags as the stopping points.
* CMake update for vsbuild.
* An on-disk reverse-index to map the in-pack location of an object
back to its object name across multiple packfiles is introduced.
* Generate [ec]tags under $(QUIET_GEN).
* Clean-up codepaths that implements "git send-email --validate"
option and improves the message from it.
* The last remnant of gettext-poison has been removed.
* The test framework has been taught to optionally turn the default
merge strategy to "ort" throughout the system where we use
three-way merges internally, like cherry-pick, rebase etc.,
primarily to enhance its test coverage (the strategy has been
available as an explicit "-s ort" choice).
* A bit of code clean-up and a lot of test clean-up around userdiff
area.
* Handling of "promisor packs" that allows certain objects to be
missing and lazily retrievable has been optimized (a bit).
* When packet_write() fails, we gave an extra error message
unnecessarily, which has been corrected.
* The checkout machinery has been taught to perform the actual
write-out of the files in parallel when able.
* Show errno in the trace output in the error codepath that calls
read_raw_ref method.
* Effort to make the command line completion (in contrib/) safe with
"set -u" continues.
* Tweak a few tests for "log --format=..." that show timestamps in
various formats.
* The reflog expiry machinery has been taught to emit trace events.
* Over-the-wire protocol learns a new request type to ask for object
sizes given a list of object names.
Fixes since v2.31
-----------------
* The fsmonitor interface read from its input without making sure
there is something to read from. This bug is new in 2.31
timeframe.
* The data structure used by fsmonitor interface was not properly
duplicated during an in-core merge, leading to use-after-free etc.
* "git bisect" reimplemented more in C during 2.30 timeframe did not
take an annotated tag as a good/bad endpoint well. This regression
has been corrected.
* Fix macros that can silently inject unintended null-statements.
* CALLOC_ARRAY() macro replaces many uses of xcalloc().
* Update insn in Makefile comments to run fuzz-all target.
* Fix a corner case bug in "git mv" on case insensitive systems,
which was introduced in 2.29 timeframe.
* We had a code to diagnose and die cleanly when a required
clean/smudge filter is missing, but an assert before that
unnecessarily fired, hiding the end-user facing die() message.
(merge 6fab35f748 mt/cleanly-die-upon-missing-required-filter later to maint).
* Update C code that sets a few configuration variables when a remote
is configured so that it spells configuration variable names in the
canonical camelCase.
(merge 0f1da600e6 ab/remote-write-config-in-camel-case later to maint).
* A new configuration variable has been introduced to allow choosing
which version of the generation number gets used in the
commit-graph file.
(merge 702110aac6 ds/commit-graph-generation-config later to maint).
* Perf test update to work better in secondary worktrees.
(merge 36e834abc1 jk/perf-in-worktrees later to maint).
* Updates to memory allocation code around the use of pcre2 library.
(merge c1760352e0 ab/grep-pcre2-allocfix later to maint).
* "git -c core.bare=false clone --bare ..." would have segfaulted,
which has been corrected.
(merge 75555676ad bc/clone-bare-with-conflicting-config later to maint).
* When "git checkout" removes a path that does not exist in the
commit it is checking out, it wasn't careful enough not to follow
symbolic links, which has been corrected.
(merge fab78a0c3d mt/checkout-remove-nofollow later to maint).
* A few option description strings started with capital letters,
which were corrected.
(merge 5ee90326dc cc/downcase-opt-help later to maint).
* Plug or annotate remaining leaks that trigger while running the
very basic set of tests.
(merge 68ffe095a2 ah/plugleaks later to maint).
* The hashwrite() API uses a buffering mechanism to avoid calling
write(2) too frequently. This logic has been refactored to be
easier to understand.
(merge ddaf1f62e3 ds/clarify-hashwrite later to maint).
* "git cherry-pick/revert" with or without "--[no-]edit" did not spawn
the editor as expected (e.g. "revert --no-edit" after a conflict
still asked to edit the message), which has been corrected.
(merge 39edfd5cbc en/sequencer-edit-upon-conflict-fix later to maint).
* "git daemon" has been tightened against systems that take backslash
as directory separator.
(merge 9a7f1ce8b7 rs/daemon-sanitize-dir-sep later to maint).
* A NULL-dereference bug has been corrected in an error codepath in
"git for-each-ref", "git branch --list" etc.
(merge c685450880 jk/ref-filter-segfault-fix later to maint).
* Streamline the codepath to fix the UTF-8 encoding issues in the
argv[] and the prefix on macOS.
(merge c7d0e61016 tb/precompose-prefix-simplify later to maint).
* The command-line completion script (in contrib/) had a couple of
references that would have given a warning under the "-u" (nounset)
option.
(merge c5c0548d79 vs/completion-with-set-u later to maint).
* When "git pack-objects" makes a literal copy of a part of existing
packfile using the reachability bitmaps, its update to the progress
meter was broken.
(merge 8e118e8490 jk/pack-objects-bitmap-progress-fix later to maint).
* The dependencies for config-list.h and command-list.h were broken
when the former was split out of the latter, which has been
corrected.
(merge 56550ea718 sg/bugreport-fixes later to maint).
* "git push --quiet --set-upstream" was not quiet when setting the
upstream branch configuration, which has been corrected.
(merge f3cce896a8 ow/push-quiet-set-upstream later to maint).
* The prefetch task in "git maintenance" assumed that "git fetch"
from any remote would fetch all its local branches, which would
fetch too much if the user is interested in only a subset of
branches there.
(merge 32f67888d8 ds/maintenance-prefetch-fix later to maint).
* Clarify that pathnames recorded in Git trees are most often (but
not necessarily) encoded in UTF-8.
(merge 9364bf465d ab/pathname-encoding-doc later to maint).
* "git --config-env var=val cmd" weren't accepted (only
--config-env=var=val was).
(merge c331551ccf ps/config-env-option-with-separate-value later to maint).
* When the reachability bitmap is in effect, the "do not lose
recently created objects and those that are reachable from them"
safety to protect us from races were disabled by mistake, which has
been corrected.
(merge 2ba582ba4c jk/prune-with-bitmap-fix later to maint).
* Cygwin pathname handling fix.
(merge bccc37fdc7 ad/cygwin-no-backslashes-in-paths later to maint).
* "git rebase --[no-]reschedule-failed-exec" did not work well with
its configuration variable, which has been corrected.
(merge e5b32bffd1 ab/rebase-no-reschedule-failed-exec later to maint).
* Portability fix for command line completion script (in contrib/).
(merge f2acf763e2 si/zsh-complete-comment-fix later to maint).
* "git repack -A -d" in a partial clone unnecessarily loosened
objects in promisor pack.
* "git bisect skip" when custom words are used for new/old did not
work, which has been corrected.
* A few variants of informational message "Already up-to-date" has
been rephrased.
(merge ad9322da03 js/merge-already-up-to-date-message-reword later to maint).
* "git submodule update --quiet" did not propagate the quiet option
down to underlying "git fetch", which has been corrected.
(merge 62af4bdd42 nc/submodule-update-quiet later to maint).
* Document that our test can use "local" keyword.
(merge a84fd3bcc6 jc/test-allows-local later to maint).
* The word-diff mode has been taught to work better with a word
regexp that can match an empty string.
(merge 0324e8fc6b pw/word-diff-zero-width-matches later to maint).
* "git p4" learned to find branch points more efficiently.
(merge 6b79818bfb jk/p4-locate-branch-point-optim later to maint).
* When "git update-ref -d" removes a ref that is packed, it left
empty directories under $GIT_DIR/refs/ for
(merge 5f03e5126d wc/packed-ref-removal-cleanup later to maint).
* "git clean" and "git ls-files -i" had confusion around working on
or showing ignored paths inside an ignored directory, which has
been corrected.
(merge b548f0f156 en/dir-traversal later to maint).
* The handling of "%(push)" formatting element of "for-each-ref" and
friends was broken when the same codepath started handling
"%(push:<what>)", which has been corrected.
(merge 1e1c4c5eac zh/ref-filter-push-remote-fix later to maint).
* The bash prompt script (in contrib/) did not work under "set -u".
(merge 5c0cbdb107 en/prompt-under-set-u later to maint).
* The "chainlint" feature in the test framework is a handy way to
catch common mistakes in writing new tests, but tends to get
expensive. An knob to selectively disable it has been introduced
to help running tests that the developer has not modified.
(merge 2d86a96220 jk/test-chainlint-softer later to maint).
* The "rev-parse" command did not diagnose the lack of argument to
"--path-format" option, which was introduced in v2.31 era, which
has been corrected.
(merge 99fc555188 wm/rev-parse-path-format-wo-arg later to maint).
* Other code cleanup, docfix, build fix, etc.
(merge f451960708 dl/cat-file-doc-cleanup later to maint).
(merge 12604a8d0c sv/t9801-test-path-is-file-cleanup later to maint).
(merge ea7e63921c jr/doc-ignore-typofix later to maint).
(merge 23c781f173 ps/update-ref-trans-hook-doc later to maint).
(merge 42efa1231a jk/filter-branch-sha256 later to maint).
(merge 4c8e3dca6e tb/push-simple-uses-branch-merge-config later to maint).
(merge 6534d436a2 bs/asciidoctor-installation-hints later to maint).
(merge 47957485b3 ab/read-tree later to maint).
(merge 2be927f3d1 ab/diff-no-index-tests later to maint).
(merge 76593c09bb ab/detox-gettext-tests later to maint).
(merge 28e29ee38b jc/doc-format-patch-clarify later to maint).
(merge fc12b6fdde fm/user-manual-use-preface later to maint).
(merge dba94e3a85 cc/test-helper-bloom-usage-fix later to maint).
(merge 61a7660516 hn/reftable-tables-doc-update later to maint).
(merge 81ed96a9b2 jt/fetch-pack-request-fix later to maint).
(merge 151b6c2dd7 jc/doc-do-not-capitalize-clarification later to maint).
(merge 9160068ac6 js/access-nul-emulation-on-windows later to maint).
(merge 7a14acdbe6 po/diff-patch-doc later to maint).
(merge f91371b948 pw/patience-diff-clean-up later to maint).
(merge 3a7f0908b6 mt/clean-clean later to maint).
(merge d4e2d15a8b ab/streaming-simplify later to maint).
(merge 0e59f7ad67 ah/merge-ort-i18n later to maint).
(merge e6f68f62e0 ls/typofix later to maint).
----------------------------------------------------------------
Changes since v2.31.0 are as follows:
Adam Dinwoodie (1):
cygwin: disallow backslashes in file names
Alex Henrie (1):
merge-ort: split "distinct types" message into two translatable messages
Andrey Bienkowski (1):
doc: clarify the filename encoding in git diff
Andrzej Hunt (24):
Makefile: update 'make fuzz-all' docs to reflect modern clang
symbolic-ref: don't leak shortened refname in check_symref()
reset: free instead of leaking unneeded ref
clone: free or UNLEAK further pointers when finished
worktree: fix leak in dwim_branch()
init: remove git_init_db_config() while fixing leaks
init-db: silence template_dir leak when converting to absolute path
fsmonitor: avoid global-buffer-overflow READ when checking trivial response
parse-options: convert bitfield values to use binary shift
parse-options: don't leak alias help messages
transport: also free remote_refs in transport_disconnect()
merge-ort: only do pointer arithmetic for non-empty lists
revision: free remainder of old commit list in limit_list
wt-status: fix multiple small leaks
ls-files: free max_prefix when done
bloom: clear each bloom_key after use
branch: FREE_AND_NULL instead of NULL'ing real_ref
builtin/bugreport: don't leak prefixed filename
builtin/check-ignore: clear_pathspec before returning
builtin/checkout: clear pending objects after diffing
mailinfo: also free strbuf lists when clearing mailinfo
builtin/for-each-ref: free filter and UNLEAK sorting.
builtin/rebase: release git_format_patch_opt too
builtin/rm: avoid leaking pathspec and seen
Atharva Raykar (1):
userdiff: add support for Scheme
Bagas Sanjaya (1):
INSTALL: note on using Asciidoctor to build doc
Bruno Albuquerque (1):
object-info: support for retrieving object info
Charvi Mendiratta (23):
sequencer: pass todo_item to do_pick_commit()
sequencer: use const variable for commit message comments
rebase -i: add fixup [-C | -c] command
t3437: test script for fixup [-C|-c] options in interactive rebase
rebase -i: teach --autosquash to work with amend!
doc/git-rebase: add documentation for fixup [-C|-c] options
sequencer: fixup the datatype of the 'flag' argument
sequencer: rename a few functions
rebase -i: clarify and fix 'fixup -c' rebase-todo help
t/lib-rebase: update the documentation of FAKE_LINES
t/t3437: fixup here-docs in the 'setup' test
t/t3437: remove the dependency of 'expected-message' file from tests
t/t3437: check the author date of fixed up commit
t/t3437: simplify and document the test helpers
t/t3437: use named commits in the tests
t/t3437: fixup the test 'multiple fixup -c opens editor once'
doc/rebase -i: fix typo in the documentation of 'fixup' command
sequencer: export and rename subject_length()
commit: add amend suboption to --fixup to create amend! commit
commit: add a reword suboption to --fixup
t7500: add tests for --fixup=[amend|reword] options
t3437: use --fixup with options to create amend! commit
doc/git-commit: add documentation for fixup=[amend|reword] options
Chinmoy Chakraborty (1):
column, range-diff: downcase option description
Christian Couder (1):
test-bloom: fix missing 'bloom' from usage string
Christopher Schenk (1):
remote-curl: fall back to basic auth if Negotiate fails
Dennis Ameling (2):
cmake(install): fix double .exe suffixes
cmake(install): include vcpkg dlls
Denton Liu (14):
git-cat-file.txt: monospace args, placeholders and filenames
git-cat-file.txt: remove references to "sha1"
stash show: teach --include-untracked and --only-untracked
stash show: learn stash.showIncludeUntracked
git-completion.bash: pass $__git_subcommand_idx from __git_main()
git-completion.bash: extract from else in _git_stash()
git-completion.bash: use __gitcomp_builtin() in _git_stash()
git-completion.bash: separate some commands onto their own line
git-completion.bash: rename to $__git_cmd_idx
git-completion.bash: use $__git_cmd_idx in more places
git-completion.bash: consolidate cases in _git_stash()
t3905: correct test title
stash show: fix segfault with --{include,only}-untracked
stash show: use stash.showIncludeUntracked even when diff options given
Derrick Stolee (58):
commit-graph: create local repository pointer
commit-graph: use config to specify generation type
csum-file: make hashwrite() more readable
sparse-index: design doc and format update
t/perf: add performance test for sparse operations
t1092: clean up script quoting
sparse-index: add guard to ensure full index
sparse-index: implement ensure_full_index()
t1092: compare sparse-checkout to sparse-index
test-read-cache: print cache entries with --table
test-tool: don't force full index
unpack-trees: ensure full index
sparse-checkout: hold pattern list in index
sparse-index: add 'sdir' index extension
sparse-index: convert from full to sparse
submodule: sparse-index should not collapse links
unpack-trees: allow sparse directories
sparse-index: check index conversion happens
sparse-index: add index.sparse config option
sparse-checkout: toggle sparse index from builtin
sparse-checkout: disable sparse-index
cache-tree: integrate with sparse directory entries
sparse-index: loose integration with cache_tree_verify()
p2000: add sparse-index repos
maintenance: simplify prefetch logic
sparse-index: API protection strategy
*: remove 'const' qualifier for struct index_state
read-cache: expand on query into sparse-directory entry
cache: move ensure_full_index() to cache.h
add: ensure full index
checkout-index: ensure full index
checkout: ensure full index
commit: ensure full index
difftool: ensure full index
fsck: ensure full index
grep: ensure full index
ls-files: ensure full index
merge-index: ensure full index
rm: ensure full index
stash: ensure full index
update-index: ensure full index
dir: ensure full index
entry: ensure full index
merge-recursive: ensure full index
pathspec: ensure full index
read-cache: ensure full index
resolve-undo: ensure full index
revision: ensure full index
name-hash: don't add directories to name_hash
sparse-index: expand_to_path()
name-hash: use expand_to_path()
fetch: add --prefetch option
maintenance: use 'git fetch --prefetch'
maintenance: respect remote.*.skipFetchAll
dir: update stale description of treat_directory()
sparse-index: fix uninitialized jump
t1092: use GIT_PROGRESS_DELAY for consistent results
dir: update stale description of treat_directory()
Elijah Newren (50):
diffcore-rename: use directory rename guided basename comparisons
diffcore-rename: provide basic implementation of idx_possible_rename()
diffcore-rename: add a mapping of destination names to their indices
Move computation of dir_rename_count from merge-ort to diffcore-rename
diffcore-rename: add function for clearing dir_rename_count
diffcore-rename: move dir_rename_counts into dir_rename_info struct
diffcore-rename: extend cleanup_dir_rename_info()
diffcore-rename: compute dir_rename_counts in stages
diffcore-rename: limit dir_rename_counts computation to relevant dirs
diffcore-rename: compute dir_rename_guess from dir_rename_counts
diffcore-rename: enable filtering possible rename sources
merge-ort: precompute subset of sources for which we need rename detection
merge-ort: add data structures for an alternate tree traversal
merge-ort: introduce wrappers for alternate tree traversal
merge-ort: precompute whether directory rename detection is needed
merge-ort: use relevant_sources to filter possible rename sources
merge-ort: skip rename detection entirely if possible
diffcore-rename: avoid doing basename comparisons for irrelevant sources
diffcore-rename: take advantage of "majority rules" to skip more renames
merge-ort, diffcore-rename: tweak dirs_removed and relevant_source type
merge-ort: record the reason that we want a rename for a directory
diffcore-rename: only compute dir_rename_count for relevant directories
diffcore-rename: check if we have enough renames for directories early on
diffcore-rename: add computation of number of unknown renames
merge-ort: record the reason that we want a rename for a file
diffcore-rename: determine which relevant_sources are no longer relevant
merge-ort: use STABLE_QSORT instead of QSORT where required
merge-ort: add a special minimal index just for renormalization
merge-ort: have ll_merge() use a special attr_index for renormalization
merge-ort: let renormalization change modify/delete into clean delete
merge-ort: support subtree shifting
t6428: new test for SKIP_WORKTREE handling and conflicts
merge-ort: implement CE_SKIP_WORKTREE handling with conflicted entries
t: mark several submodule merging tests as fixed under merge-ort
merge-ort: write $GIT_DIR/AUTO_MERGE whenever we hit a conflict
merge-recursive: add a bunch of FIXME comments documenting known bugs
Revert "merge-ort: ignore the directory rename split conflict for now"
t6423: mark remaining expected failure under merge-ort as such
Add testing with merge-ort merge strategy
sequencer: fix edit handling for cherry-pick and revert messages
dir: convert trace calls to trace2 equivalents
dir: report number of visited directories and paths with trace2
ls-files: error out on -i unless -o or -c are specified
t7300: add testcase showing unnecessary traversal into ignored directory
t3001, t7300: add testcase showcasing missed directory traversal
dir: avoid unnecessary traversal into ignored directory
dir: traverse into untracked directories if they may have ignored subfiles
dir: introduce readdir_skip_dot_and_dotdot() helper
git-prompt: work under set -u
dir: introduce readdir_skip_dot_and_dotdot() helper
Eric Sunshine (1):
merge(s): apply consistent punctuation to "up to date" messages
Eric Wong (1):
remote-curl: fix clone on sha256 repos
Firmin Martin (1):
user-manual.txt: assign preface an id and a title
Georgios Kontaxis (1):
gitweb: add "e-mail privacy" feature to redact e-mail addresses
Han Xin (1):
pack-objects: fix comment of reused_chunk.difference
Han-Wen Nienhuys (3):
reftable: document an alternate cleanup method on Windows
refs: print errno for read_raw_ref if GIT_TRACE_REFS is set
refs/debug: trace into reflog expiry too
Jeff Hostetler (14):
pkt-line: eliminate the need for static buffer in packet_write_gently()
simple-ipc: design documentation for new IPC mechanism
simple-ipc: add win32 implementation
unix-socket: eliminate static unix_stream_socket() helper function
unix-socket: add backlog size option to unix_stream_listen()
unix-socket: disallow chdir() when creating unix domain sockets
unix-stream-server: create unix domain socket under lock
convert: make convert_attrs() and convert structs public
convert: add [async_]convert_to_working_tree_ca() variants
convert: add get_stream_filter_ca() variant
convert: add classification for conv_attrs struct
simple-ipc: add Unix domain socket implementation
t0052: add simple-ipc tests and t/helper/test-simple-ipc tool
simple-ipc: correct ifdefs when NO_PTHREADS is defined
Jeff King (43):
add open_nofollow() helper
attr: convert "macro_ok" into a flags field
exclude: add flags parameter to add_patterns()
attr: do not respect symlinks for in-tree .gitattributes
exclude: do not respect symlinks for in-tree .gitignore
mailmap: do not respect symlinks for in-tree .mailmap
p5303: add missing &&-chains
p5303: measure time to repack with keep
builtin/pack-objects.c: rewrite honor-pack-keep logic
packfile: add kept-pack cache for find_kept_pack_entry()
t/perf: handle worktrees as test repos
t/perf: avoid copying worktree files from test repo
t7003: test ref rewriting explicitly
filter-branch: drop multiple-ancestor warning
filter-branch: drop $_x40 glob
bisect: peel annotated tags to commits
t: annotate !PTHREADS tests with !FAIL_PREREQS
ref-filter: fix NULL check for parse object failure
midx.c: improve cache locality in midx_pack_order_cmp()
pack-objects: update "nr_seen" progress based on pack-reused count
is_promisor_object(): free tree buffer after parsing
lookup_unknown_object(): take a repository argument
revision: avoid parsing with --exclude-promisor-objects
pack-bitmap: clean up include_check after use
prune: save reachable-from-recent objects with bitmaps
t5300: modernize basic tests
t5300: check that we produced expected number of deltas
pack-objects: clamp negative window size to 0
t5316: check behavior of pack-objects --depth=0
pack-objects: clamp negative depth to 0
docs/format-patch: mention handling of merges
t7415: remove out-dated comment about translation
fsck_tree(): fix shadowed variable
fsck_tree(): wrap some long lines
t7415: rename to expand scope
t7450: test verify_path() handling of gitmodules
t7450: test .gitmodules symlink matching against obscured names
t0060: test ntfs/hfs-obscured dotfiles
fsck: warn about symlinked dotfiles we'll open with O_NOFOLLOW
docs: document symlink restrictions for dot-files
t: avoid sed-based chain-linting in some expensive cases
t5551: test http interaction with credential helpers
Revert "remote-curl: fall back to basic auth if Negotiate fails"
Jerry Zhang (3):
git-apply: try threeway first when "--3way" is used
git-apply: allow simultaneous --cached and --3way options
apply: adjust messages to account for --3way changes
Joachim Kuebart (2):
git-p4: ensure complex branches are cloned correctly
git-p4: speed up search for branch parent
Johannes Schindelin (10):
pkt-line: do not issue flush packets in write_packetized_*()
pkt-line: add PACKET_READ_GENTLE_ON_READ_ERROR option
pkt-line: add options argument to read_packetized_to_strbuf()
fsmonitor: fix memory corruption in some corner cases
fsmonitor: do not forget to release the token in `discard_index()`
SECURITY: describe how to report vulnerabilities
Document how we do embargoed releases
cmake: support SKIP_DASHED_BUILT_INS
cmake: add a preparatory work-around to accommodate `vcpkg`
msvc: avoid calling `access("NUL", flags)`
Johannes Sixt (1):
t9001-send-email.sh: fix expected absolute paths on Windows
John Szakmeister (2):
http: store credential when PKI auth is used
http: drop the check for an empty proxy password before approving
Jonathan Tan (8):
t5606: run clone branch name test with protocol v2
fetch-pack: buffer object-format with other args
fetch-pack: refactor process_acks()
fetch-pack: refactor add_haves()
fetch-pack: refactor command and capability write
fetch: teach independent negotiation (no packfile)
send-pack: support push negotiation
t5601: mark protocol v2-only test
Josh Soref (1):
merge: fix swapped "up to date" message components
Julien Richard (1):
doc: .gitignore documentation typofix
Junio C Hamano (31):
builtin/repack.c: reword comment around pack-objects flags
xcalloc: use CALLOC_ARRAY() when applicable
cocci: allow xcalloc(1, size)
The first batch in 2.32 cycle
The second batch
format-patch: give an overview of what a "patch" message is
The third patch
Git 2.31.1
The fourth batch
The fifth batch
The sixth batch
The seventh batch
The eighth batch
The ninth batch
doc: clarify "do not capitalize the first word" rule
The tenth batch
The eleventh (aka "ort") batch
The twelfth batch
The thirteenth batch
CodingGuidelines: explicitly allow "local" for test scripts
The fourteenth batch
The fifteenth batch
The sixteenth batch
The seventeenth batch
Git 2.32-rc0
A handful more topics before -rc1
Git 2.32-rc1
t1092: revert the "-1" hack for emulating "no progress meter"
Revert "dir: introduce readdir_skip_dot_and_dotdot() helper"
Revert "dir: update stale description of treat_directory()"
Git 2.32-rc2
Kyle Meyer (1):
config.txt: add missing period
Li Linchao (1):
builtin/clone.c: add --reject-shallow option
Louis Sautier (1):
pretty: fix a typo in the documentation for %(trailers)
Luke Shumaker (30):
.gitignore: ignore 'git-subtree' as a build artifact
subtree: t7900: update for having the default branch name be 'main'
subtree: t7900: use test-lib.sh's test_count
subtree: t7900: use consistent formatting
subtree: t7900: comment subtree_test_create_repo
subtree: t7900: use 'test' for string equality
subtree: t7900: delete some dead code
subtree: t7900: fix 'verify one file change per commit'
subtree: t7900: rename last_commit_message to last_commit_subject
subtree: t7900: add a test for the -h flag
subtree: t7900: add porcelain tests for 'pull' and 'push'
subtree: don't have loose code outside of a function
subtree: more consistent error propagation
subtree: drop support for git < 1.7
subtree: use `git merge-base --is-ancestor`
subtree: use git-sh-setup's `say`
subtree: use more explicit variable names for cmdline args
subtree: use "$*" instead of "$@" as appropriate
subtree: don't fuss with PATH
subtree: use "^{commit}" instead of "^0"
subtree: parse revs in individual cmd_ functions
subtree: remove duplicate check
subtree: add comments and sanity checks
subtree: don't let debug and progress output clash
subtree: have $indent actually affect indentation
subtree: give the docs a once-over
subtree: allow --squash to be used with --rejoin
subtree: allow 'split' flags to be passed to 'push'
subtree: push: allow specifying a local rev other than HEAD
subtree: be stricter about validating flags
Lénaïc Huard (1):
maintenance: fix two memory leaks
Martin Ågren (2):
git-repack.txt: remove spurious ")"
pretty-formats.txt: add missing space
Matheus Tavares (32):
convert: fail gracefully upon missing clean cmd on required filter
symlinks: update comment on threaded_check_leading_path()
checkout: don't follow symlinks when removing entries
entry: extract a header file for entry.c functions
entry: make fstat_output() and read_blob_entry() public
entry: extract update_ce_after_write() from write_entry()
entry: move conv_attrs lookup up to checkout_entry()
entry: add checkout_entry_ca() taking preloaded conv_attrs
add: include magic part of pathspec on --refresh error
t3705: add tests for `git add` in sparse checkouts
add: make --chmod and --renormalize honor sparse checkouts
pathspec: allow to ignore SKIP_WORKTREE entries on index matching
refresh_index(): add flag to ignore SKIP_WORKTREE entries
add: warn when asked to update SKIP_WORKTREE entries
rm: honor sparse checkout patterns
pkt-line: do not report packet write errors twice
unpack-trees: add basic support for parallel checkout
parallel-checkout: make it truly parallel
parallel-checkout: add configuration options
parallel-checkout: support progress displaying
parallel-checkout: add design documentation
make_transient_cache_entry(): optionally alloc from mem_pool
builtin/checkout.c: complete parallel checkout support
parallel-checkout: add tests related to path collisions
t0028: extract encoding helpers to lib-encoding.sh
checkout-index: add parallel checkout support
parallel-checkout: add tests related to .gitattributes
parallel-checkout: add tests for basic operations
ci: run test round with parallel-checkout enabled
clean: remove unnecessary variable
init: fix bug regarding ~/ expansion in init.templateDir
t2080: fix cp invocation to copy symlinks instead of following them
Nicholas Clark (1):
submodule update: silence underlying fetch with "--quiet"
Nipunn Koorapati (3):
fsmonitor: skip lstat deletion check during git diff-index
fsmonitor: add assertion that fsmonitor is valid to check_removed
fsmonitor: add perf test for git diff HEAD
Patrick Steinhardt (17):
githooks.txt: replace mentions of SHA-1 specific properties
githooks.txt: clarify documentation on reference-transaction hook
pack-bitmap: avoid traversal of objects referenced by uninteresting tag
uploadpack.txt: document implication of `uploadpackfilter.allow`
revision: mark commit parents as NOT_USER_GIVEN
list-objects: move tag processing into its own function
list-objects: support filtering by tag and commit
list-objects: implement object type filter
pack-bitmap: implement object type filter
pack-bitmap: implement combined filter
rev-list: allow filtering of provided items
config: rename `git_etc_config()`
config: unify code paths to get global config paths
config: allow overriding of global and system configuration
t1300: fix unset of GIT_CONFIG_NOSYSTEM leaking into subsequent tests
git.txt: fix synopsis of `--config-env` missing the equals sign
git: support separate arg for `--config-env`'s value
Peter Oliver (1):
doc: point to diff attribute in patch format docs
Phillip Wood (6):
rebase -i: only write fixup-message when it's needed
sequencer: factor out code to append squash message
rebase -i: comment out squash!/fixup! subjects from squash message
word diff: handle zero length matches
patience diff: remove unnecessary string comparisons
patience diff: remove unused variable
Rafael Silva (1):
repack: avoid loosening promisor objects in partial clones
Ramkumar Ramachandra (1):
Add entry for Ramkumar Ramachandra
Ramsay Jones (1):
bisect--helper: use BISECT_TERMS in 'bisect skip' command
René Scharfe (12):
pretty: add %(describe)
pretty: add merge and exclude options to %(describe)
t4205: assert %(describe) test coverage
pretty: document multiple %(describe) being inconsistent
fix xcalloc() argument order
archive: expand only a single %(describe) per archive
git-compat-util.h: drop trailing semicolon from macro definition
use CALLOC_ARRAY
vcs-svn: remove header files as well
block-sha1: drop trailing semicolon from macro definition
mem-pool: drop trailing semicolon from macro definition
daemon: sanitize all directory separators
Robert Foss (1):
git-send-email: Respect core.hooksPath setting
SZEDER Gábor (1):
Makefile: add missing dependencies of 'config-list.h'
Sardorbek Imomaliev (1):
work around zsh comment in __git_complete_worktree_paths
Sergey Organov (5):
diff-merges: introduce --diff-merges=on
diff-merges: refactor set_diff_merges()
diff-merges: adapt -m to enable default diff format
diff-merges: introduce log.diffMerges config variable
doc/diff-options: document new --diff-merges features
Shubham Verma (1):
t9801: replace test -f with test_path_is_file
Taylor Blau (28):
packfile: introduce 'find_kept_pack_entry()'
revision: learn '--no-kept-objects'
builtin/pack-objects.c: add '--stdin-packs' option
builtin/repack.c: add '--geometric' option
builtin/repack.c: do not repack single packs with --geometric
t7703: test --geometric repack with loose objects
builtin/repack.c: assign pack split later
builtin/repack.c: be more conservative with unsigned overflows
Documentation/git-push.txt: correct configuration typo
builtin/pack-objects.c: ignore missing links with --stdin-packs
builtin/multi-pack-index.c: inline 'flags' with options
builtin/multi-pack-index.c: don't handle 'progress' separately
builtin/multi-pack-index.c: define common usage with a macro
builtin/multi-pack-index.c: split sub-commands
builtin/multi-pack-index.c: don't enter bogus cmd_mode
builtin/multi-pack-index.c: display usage on unrecognized command
t/helper/test-read-midx.c: add '--show-objects'
pack-bitmap: add 'test_bitmap_commits()' helper
t/helper/test-bitmap.c: initial commit
builtin/pack-objects.c: respect 'pack.preferBitmapTips'
midx: allow marking a pack as preferred
midx: don't free midx_name early
midx: keep track of the checksum
midx: make some functions non-static
Documentation/technical: describe multi-pack reverse indexes
pack-revindex: read multi-pack reverse indexes
pack-write.c: extract 'write_rev_file_order'
pack-revindex: write multi-pack reverse indexes
Todd Zullinger (1):
t7500: remove non-existant C_LOCALE_OUTPUT prereq
Torsten Bögershausen (3):
git mv foo FOO ; git mv foo bar gave an assert
precompose_utf8: make precompose_string_if_needed() public
macOS: precompose startup_info->prefix
Ville Skyttä (2):
completion: audit and guard $GIT_* against unset use
completion: avoid aliased command lookup error in nounset mode
Will Chandler (1):
refs: cleanup directories when deleting packed ref
Wolfgang Müller (1):
rev-parse: fix segfault with missing --path-format argument
ZheNing Hu (8):
commit: add --trailer option
format-patch: allow a non-integral version numbers
ref-filter: get rid of show_ref_array_item
ref-filter: reuse output buffer
pretty: provide human date format
docs: correct descript of trailer.<token>.command
trailer: add new .cmd config option
ref-filter: fix read invalid union member bug
brian m. carlson (14):
builtin/init-db: handle bare clones when core.bare set to false
hash: add an algo member to struct object_id
Always use oidread to read into struct object_id
http-push: set algorithm when reading object ID
hash: add a function to finalize object IDs
Use the final_oid_fn to finalize hashing of object IDs
builtin/pack-redundant: avoid casting buffers to struct object_id
hash: set, copy, and use algo field in struct object_id
hash: provide per-algorithm null OIDs
builtin/show-index: set the algorithm for object IDs
commit-graph: don't store file hashes as struct object_id
builtin/pack-objects: avoid using struct object_id for pack hash
hex: default to the_hash_algo on zero algorithm value
hex: print objects using the hash algorithm member
Ævar Arnfjörð Bjarmason (96):
grep/pcre2: drop needless assignment + assert() on opt->pcre2
grep/pcre2: drop needless assignment to NULL
grep/pcre2: correct reference to grep_init() in comment
grep/pcre2: prepare to add debugging to pcre2_malloc()
grep/pcre2: add GREP_PCRE2_DEBUG_MALLOC debug mode
grep/pcre2: use compile-time PCREv2 version test
grep/pcre2: use pcre2_maketables_free() function
grep/pcre2: actually make pcre2 use custom allocator
grep/pcre2: move back to thread-only PCREv2 structures
grep/pcre2: move definitions of pcre2_{malloc,free}
Makefile: guard against TEST_OBJS in the environment
Makefile: split up long OBJECTS line
Makefile: sort OBJECTS assignment for subsequent change
Makefile: split OBJECTS into OBJECTS and GIT_OBJS
Makefile: add {program,xdiff,test,git,fuzz}-objs & objects targets
remote: add camel-cased *.tagOpt key, like clone
remote: write camel-cased *.pushRemote on rename
fsck.c: refactor and rename common config callback
show tests: add test for "git show <tree>"
ls-files tests: add meaningful --with-tree tests
tree.c API: move read_tree() into builtin/ls-files.c
ls-files: don't needlessly pass around stage variable
ls-files: refactor away read_tree()
archive: stop passing "stage" through read_tree_recursive()
tree.h API: expose read_tree_1() as read_tree_at()
tree.h API: simplify read_tree_recursive() signature
diff --no-index tests: add test for --exit-code
diff --no-index tests: test mode normalization
rebase: remove transitory rebase.useBuiltin setting & env
mktag tests: fix broken "&&" chain
fsck.h: use designed initializers for FSCK_OPTIONS_{DEFAULT,STRICT}
fsck.h: use "enum object_type" instead of "int"
fsck.c: rename variables in fsck_set_msg_type() for less confusion
fsck.c: remove (mostly) redundant append_msg_id() function
fsck.c: rename remaining fsck_msg_id "id" to "msg_id"
fsck.c: refactor fsck_msg_type() to limit scope of "int msg_type"
fsck.h: move FSCK_{FATAL,INFO,ERROR,WARN,IGNORE} into an enum
fsck.h: re-order and re-assign "enum fsck_msg_type"
fsck.c: call parse_msg_type() early in fsck_set_msg_type()
fsck.c: undefine temporary STR macro after use
fsck.c: give "FOREACH_MSG_ID" a more specific name
fsck.[ch]: move FOREACH_FSCK_MSG_ID & fsck_msg_id from *.c to *.h
fsck.c: pass along the fsck_msg_id in the fsck_error callback
fsck.c: add an fsck_set_msg_type() API that takes enums
fsck.c: move gitmodules_{found,done} into fsck_options
fetch-pack: don't needlessly copy fsck_options
fetch-pack: use file-scope static struct for fsck_options
fetch-pack: use new fsck API to printing dangling submodules
Makefile: add QUIET_GEN to "tags" and "TAGS" targets
git-send-email: replace "map" in void context with "for"
git-send-email: test full --validate output
git-send-email: refactor duplicate $? checks into a function
git-send-email: improve --validate error output
bash completion: complete CHERRY_PICK_HEAD
config.c: remove last remnant of GIT_TEST_GETTEXT_POISON
userdiff style: re-order drivers in alphabetical order
userdiff style: declare patterns with consistent style
userdiff style: normalize pascal regex declaration
userdiff: add and use for_each_userdiff_driver()
userdiff tests: explicitly test "default" pattern
userdiff tests: list builtin drivers via test-tool
userdiff: remove support for "broken" tests
blame tests: don't rely on t/t4018/ directory
blame tests: simplify userdiff driver test
rebase tests: camel-case rebase.rescheduleFailedExec consistently
rebase: don't override --no-reschedule-failed-exec with config
Documentation/Makefile: make $(wildcard howto/*.txt) a var
Documentation/Makefile: make doc.dep dependencies a variable again
doc lint: Perl "strict" and "warnings" in lint-gitlink.perl
doc lint: fix bugs in, simplify and improve lint script
doc lint: lint and fix missing "GIT" end sections
doc lint: lint relative section order
docs: fix linting issues due to incorrect relative section order
svn tests: remove legacy re-setup from init-clone test
svn tests: refactor away a "set -e" in test body
tests: remove all uses of test_i18cmp
usage.c: don't copy/paste the same comment three times
api docs: document BUG() in api-error-handling.txt
api docs: document that BUG() emits a trace2 error event
pretty tests: simplify %aI/%cI date format test
pretty tests: give --date/format tests a better description
sparse-index.c: remove set_index_sparse_config()
streaming.c: avoid forward declarations
streaming.c: remove enum/function/vtbl indirection
streaming.c: remove {open,close,read}_method_decl() macros
streaming.c: stop passing around "object_info *" to open()
streaming.c: move {open,close,read} from vtable to "struct git_istream"
Makefile: don't re-define PERL_DEFINES
Makefile: regenerate perl/build/* if GIT-PERL-DEFINES changes
Makefile: regenerate *.pm on NO_PERL_CPAN_FALLBACKS change
perl: use mock i18n functions under NO_GETTEXT=Y
Makefile: make PERL_DEFINES recursively expanded
send-email: fix missing error message regression
send-email: don't needlessly abs_path() the core.hooksPath
send-email: move "hooks_path" invocation to git-send-email.perl
pack-objects: move static inline from a header to the sole consumer
Øystein Walle (2):
transport: respect verbosity when setting upstream
add: die if both --dry-run and --interactive are given
Đoàn Trần Công Danh (6):
mailinfo: load default metainfo_charset lazily
mailinfo: stop parsing options manually
mailinfo: warn if CRLF found in decoded base64/QP email
mailinfo: allow squelching quoted CRLF warning
mailinfo: allow stripping quoted CR without warning
am: learn to process quoted lines that ends with CRLF
^ permalink raw reply [relevance 3%]
* [ANNOUNCE] Git v2.32.0-rc1
@ 2021-05-22 14:21 3% Junio C Hamano
0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2021-05-22 14:21 UTC (permalink / raw)
To: git
A release candidate Git v2.32.0-rc1 is now available for testing at
the usual places. It is comprised of 572 non-merge commits since
v2.31.0, contributed by 82 people, 31 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.32.0-rc1' tag and the 'master' branch that the tag points at:
url = https://git.kernel.org/pub/scm/git/git
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.31.0 are as follows.
Welcome to the Git development community!
Adam Sharafeddine, Andrey Bienkowski, Atharva Raykar, Bruno
Albuquerque, Chinmoy Chakraborty, Christopher Schenk, Dan
Moseley, David Emett, Dmitry Torilov, Fabien Terrani, Firmin
Martin, Georgios Kontaxis, Jason Gore, Jerry Zhang, Joachim
Kuebart, Joseph Vusich, Josh Soref, Julien Richard, Li Linchao,
Louis Sautier, Luke Shumaker, Nicholas Clark, Peter Oliver,
Renato Botelho, Robert Foss, RyotaK, Sardorbek Imomaliev,
Tom Saeger, Will Chandler, Wolfgang Müller, and Yiyuan guo.
Returning contributors who helped this release are as follows.
Thanks for your continued support.
Adam Dinwoodie, Ævar Arnfjörð Bjarmason, Alex Henrie,
Andrzej Hunt, Bagas Sanjaya, Ben Humphreys, brian m. carlson,
Charvi Mendiratta, Christian Couder, Dennis Ameling, Denton
Liu, Derrick Stolee, Đoàn Trần Công Danh, Elijah Newren,
Eric Sunshine, Eric Wong, Han-Wen Nienhuys, Han Xin, Jeff
Hostetler, Jeff King, Johannes Schindelin, John Szakmeister,
Jonathan Nieder, Jonathan Tan, Junio C Hamano, Kyle Meyer,
Lénaïc Huard, Luke Diamand, Marc Branchaud, Martin Ågren,
Matheus Tavares, Nguyễn Thái Ngọc Duy, Nipunn Koorapati,
Øystein Walle, Patrick Steinhardt, Phillip Wood, Rafael Silva,
Ramkumar Ramachandra, Ramsay Jones, Randall S. Becker, René
Scharfe, Sergey Organov, Shubham Verma, Son Luong Ngoc, SZEDER
Gábor, Taylor Blau, Todd Zullinger, Torsten Bögershausen,
Trygve Aaberge, Ville Skyttä, and ZheNing Hu.
[*] We are counting not just the authorship contribution but
issue reporting, testing and reviewing that are recorded
in the commit trailers.
----------------------------------------------------------------
Git 2.32 Release Notes (draft)
==============================
Backward compatibility notes
----------------------------
* ".gitattributes", ".gitignore", and ".mailmap" files that are
symbolic links are ignored.
* "git apply --3way" used to first attempt a straight application,
and only fell back to the 3-way merge algorithm when the stright
application failed. Starting with this version, the command will
first try the 3-way merge algorithm and only when it fails (either
resulting with conflict or the base versions of blobs are missing),
falls back to the usual patch application.
Updates since v2.31
-------------------
UI, Workflows & Features
* It does not make sense to make ".gitattributes", ".gitignore" and
".mailmap" symlinks, as they are supposed to be usable from the
object store (think: bare repositories where HEAD:.mailmap etc. are
used). When these files are symbolic links, we used to read the
contents of the files pointed by them by mistake, which has been
corrected.
* "git stash show" learned to optionally show untracked part of the
stash.
* "git log --format='...'" learned "%(describe)" placeholder.
* "git repack" so far has been only capable of repacking everything
under the sun into a single pack (or split by size). A cleverer
strategy to reduce the cost of repacking a repository has been
introduced.
* The http codepath learned to let the credential layer to cache the
password used to unlock a certificate that has successfully been
used.
* "git commit --fixup=<commit>", which was to tweak the changes made
to the contents while keeping the original log message intact,
learned "--fixup=(amend|reword):<commit>", that can be used to
tweak both the message and the contents, and only the message,
respectively.
* "git send-email" learned to honor the core.hooksPath configuration.
* "git format-patch -v<n>" learned to allow a reroll count that is
not an integer.
* "git commit" learned "--trailer <key>[=<value>]" option; together
with the interpret-trailers command, this will make it easier to
support custom trailers.
* "git clone --reject-shallow" option fails the clone as soon as we
notice that we are cloning from a shallow repository.
* A configuration variable has been added to force tips of certain
refs to be given a reachability bitmap.
* "gitweb" learned "e-mail privacy" feature to redact strings that
look like e-mail addresses on various pages.
* "git apply --3way" has always been "to fall back to 3-way merge
only when straight application fails". Swap the order of falling
back so that 3-way is always attempted first (only when the option
is given, of course) and then straight patch application is used as
a fallback when it fails.
* "git apply" now takes "--3way" and "--cached" at the same time, and
work and record results only in the index.
* The command line completion (in contrib/) has learned that
CHERRY_PICK_HEAD is a possible pseudo-ref.
* Userdiff patterns for "Scheme" has been added.
* "git log" learned "--diff-merges=<style>" option, with an
associated configuration variable log.diffMerges.
* "git log --format=..." placeholders learned %ah/%ch placeholders to
request the --date=human output.
* Replace GIT_CONFIG_NOSYSTEM mechanism to decline from reading the
system-wide configuration file with GIT_CONFIG_SYSTEM that lets
users specify from which file to read the system-wide configuration
(setting it to an empty file would essentially be the same as
setting NOSYSTEM), and introduce GIT_CONFIG_GLOBAL to override the
per-user configuration in $HOME/.gitconfig.
* "git add" and "git rm" learned not to touch those paths that are
outside of sparse checkout.
* "git rev-list" learns the "--filter=object:type=<type>" option,
which can be used to exclude objects of the given kind from the
packfile generated by pack-objects.
* The command line completion (in contrib/) for "git stash" has been
updated.
* "git subtree" updates.
* It is now documented that "format-patch" skips merges.
* Options to "git pack-objects" that take numeric values like
--window and --depth should not accept negative values; the input
validation has been tightened.
* The way the command line specified by the trailer.<token>.command
configuration variable receives the end-user supplied value was
both error prone and misleading. An alternative to achieve the
same goal in a safer and more intuitive way has been added, as
the trailer.<token>.cmd configuration variable, to replace it.
* "git add -i --dry-run" does not dry-run, which was surprising. The
combination of options has taught to error out.
* "git push" learns to discover common ancestor with the receiving
end over protocol v2. This will hopefully make "git push" as
efficient as "git fetch" in avoiding objects from getting
transferred unnecessarily.
* "git mailinfo" (hence "git am") learned the "--quoted-cr" option to
control how lines ending with CRLF wrapped in base64 or qp are
handled.
Performance, Internal Implementation, Development Support etc.
* Rename detection rework continues.
* GIT_TEST_FAIL_PREREQS is a mechanism to skip test pieces with
prerequisites to catch broken tests that depend on the side effects
of optional pieces, but did not work at all when negative
prerequisites were involved.
(merge 27d578d904 jk/fail-prereq-testfix later to maint).
* "git diff-index" codepath has been taught to trust fsmonitor status
to reduce number of lstat() calls.
(merge 7e5aa13d2c nk/diff-index-fsmonitor later to maint).
* Reorganize Makefile to allow building git.o and other essential
objects without extra stuff needed only for testing.
* Preparatory API changes for parallel checkout.
* A simple IPC interface gets introduced to build services like
fsmonitor on top.
* Fsck API clean-up.
* SECURITY.md that is facing individual contributors and end users
has been introduced. Also a procedure to follow when preparing
embargoed releases has been spelled out.
(merge 09420b7648 js/security-md later to maint).
* Optimize "rev-list --use-bitmap-index --objects" corner case that
uses negative tags as the stopping points.
* CMake update for vsbuild.
* An on-disk reverse-index to map the in-pack location of an object
back to its object name across multiple packfiles is introduced.
* Generate [ec]tags under $(QUIET_GEN).
* Clean-up codepaths that implements "git send-email --validate"
option and improves the message from it.
* The last remnant of gettext-poison has been removed.
* The test framework has been taught to optionally turn the default
merge strategy to "ort" throughout the system where we use
three-way merges internally, like cherry-pick, rebase etc.,
primarily to enhance its test coverage (the strategy has been
available as an explicit "-s ort" choice).
* A bit of code clean-up and a lot of test clean-up around userdiff
area.
* Handling of "promisor packs" that allows certain objects to be
missing and lazily retrievable has been optimized (a bit).
* When packet_write() fails, we gave an extra error message
unnecessarily, which has been corrected.
* The checkout machinery has been taught to perform the actual
write-out of the files in parallel when able.
* Show errno in the trace output in the error codepath that calls
read_raw_ref method.
* Effort to make the command line completion (in contrib/) safe with
"set -u" continues.
* Tweak a few tests for "log --format=..." that show timestamps in
various formats.
* The reflog expiry machinery has been taught to emit trace events.
* Over-the-wire protocol learns a new request type to ask for object
sizes given a list of object names.
Fixes since v2.31
-----------------
* The fsmonitor interface read from its input without making sure
there is something to read from. This bug is new in 2.31
timeframe.
* The data structure used by fsmonitor interface was not properly
duplicated during an in-core merge, leading to use-after-free etc.
* "git bisect" reimplemented more in C during 2.30 timeframe did not
take an annotated tag as a good/bad endpoint well. This regression
has been corrected.
* Fix macros that can silently inject unintended null-statements.
* CALLOC_ARRAY() macro replaces many uses of xcalloc().
* Update insn in Makefile comments to run fuzz-all target.
* Fix a corner case bug in "git mv" on case insensitive systems,
which was introduced in 2.29 timeframe.
* We had a code to diagnose and die cleanly when a required
clean/smudge filter is missing, but an assert before that
unnecessarily fired, hiding the end-user facing die() message.
(merge 6fab35f748 mt/cleanly-die-upon-missing-required-filter later to maint).
* Update C code that sets a few configuration variables when a remote
is configured so that it spells configuration variable names in the
canonical camelCase.
(merge 0f1da600e6 ab/remote-write-config-in-camel-case later to maint).
* A new configuration variable has been introduced to allow choosing
which version of the generation number gets used in the
commit-graph file.
(merge 702110aac6 ds/commit-graph-generation-config later to maint).
* Perf test update to work better in secondary worktrees.
(merge 36e834abc1 jk/perf-in-worktrees later to maint).
* Updates to memory allocation code around the use of pcre2 library.
(merge c1760352e0 ab/grep-pcre2-allocfix later to maint).
* "git -c core.bare=false clone --bare ..." would have segfaulted,
which has been corrected.
(merge 75555676ad bc/clone-bare-with-conflicting-config later to maint).
* When "git checkout" removes a path that does not exist in the
commit it is checking out, it wasn't careful enough not to follow
symbolic links, which has been corrected.
(merge fab78a0c3d mt/checkout-remove-nofollow later to maint).
* A few option description strings started with capital letters,
which were corrected.
(merge 5ee90326dc cc/downcase-opt-help later to maint).
* Plug or annotate remaining leaks that trigger while running the
very basic set of tests.
(merge 68ffe095a2 ah/plugleaks later to maint).
* The hashwrite() API uses a buffering mechanism to avoid calling
write(2) too frequently. This logic has been refactored to be
easier to understand.
(merge ddaf1f62e3 ds/clarify-hashwrite later to maint).
* "git cherry-pick/revert" with or without "--[no-]edit" did not spawn
the editor as expected (e.g. "revert --no-edit" after a conflict
still asked to edit the message), which has been corrected.
(merge 39edfd5cbc en/sequencer-edit-upon-conflict-fix later to maint).
* "git daemon" has been tightened against systems that take backslash
as directory separator.
(merge 9a7f1ce8b7 rs/daemon-sanitize-dir-sep later to maint).
* A NULL-dereference bug has been corrected in an error codepath in
"git for-each-ref", "git branch --list" etc.
(merge c685450880 jk/ref-filter-segfault-fix later to maint).
* Streamline the codepath to fix the UTF-8 encoding issues in the
argv[] and the prefix on macOS.
(merge c7d0e61016 tb/precompose-prefix-simplify later to maint).
* The command-line completion script (in contrib/) had a couple of
references that would have given a warning under the "-u" (nounset)
option.
(merge c5c0548d79 vs/completion-with-set-u later to maint).
* When "git pack-objects" makes a literal copy of a part of existing
packfile using the reachability bitmaps, its update to the progress
meter was broken.
(merge 8e118e8490 jk/pack-objects-bitmap-progress-fix later to maint).
* The dependencies for config-list.h and command-list.h were broken
when the former was split out of the latter, which has been
corrected.
(merge 56550ea718 sg/bugreport-fixes later to maint).
* "git push --quiet --set-upstream" was not quiet when setting the
upstream branch configuration, which has been corrected.
(merge f3cce896a8 ow/push-quiet-set-upstream later to maint).
* The prefetch task in "git maintenance" assumed that "git fetch"
from any remote would fetch all its local branches, which would
fetch too much if the user is interested in only a subset of
branches there.
(merge 32f67888d8 ds/maintenance-prefetch-fix later to maint).
* Clarify that pathnames recorded in Git trees are most often (but
not necessarily) encoded in UTF-8.
(merge 9364bf465d ab/pathname-encoding-doc later to maint).
* "git --config-env var=val cmd" weren't accepted (only
--config-env=var=val was).
(merge c331551ccf ps/config-env-option-with-separate-value later to maint).
* When the reachability bitmap is in effect, the "do not lose
recently created objects and those that are reachable from them"
safety to protect us from races were disabled by mistake, which has
been corrected.
(merge 2ba582ba4c jk/prune-with-bitmap-fix later to maint).
* Cygwin pathname handling fix.
(merge bccc37fdc7 ad/cygwin-no-backslashes-in-paths later to maint).
* "git rebase --[no-]reschedule-failed-exec" did not work well with
its configuration variable, which has been corrected.
(merge e5b32bffd1 ab/rebase-no-reschedule-failed-exec later to maint).
* Portability fix for command line completion script (in contrib/).
(merge f2acf763e2 si/zsh-complete-comment-fix later to maint).
* "git repack -A -d" in a partial clone unnecessarily loosened
objects in promisor pack.
* "git bisect skip" when custom words are used for new/old did not
work, which has been corrected.
* A few variants of informational message "Already up-to-date" has
been rephrased.
(merge ad9322da03 js/merge-already-up-to-date-message-reword later to maint).
* "git submodule update --quiet" did not propagate the quiet option
down to underlying "git fetch", which has been corrected.
(merge 62af4bdd42 nc/submodule-update-quiet later to maint).
* Document that our test can use "local" keyword.
(merge a84fd3bcc6 jc/test-allows-local later to maint).
* The word-diff mode has been taught to work better with a word
regexp that can match an empty string.
(merge 0324e8fc6b pw/word-diff-zero-width-matches later to maint).
* "git p4" learned to find branch points more efficiently.
(merge 6b79818bfb jk/p4-locate-branch-point-optim later to maint).
* When "git update-ref -d" removes a ref that is packed, it left
empty directories under $GIT_DIR/refs/ for
(merge 5f03e5126d wc/packed-ref-removal-cleanup later to maint).
* "git clean" and "git ls-files -i" had confusion around working on
or showing ignored paths inside an ignored directory, which has
been corrected.
(merge b548f0f156 en/dir-traversal later to maint).
* The handling of "%(push)" formatting element of "for-each-ref" and
friends was broken when the same codepath started handling
"%(push:<what>)", which has been corrected.
(merge 1e1c4c5eac zh/ref-filter-push-remote-fix later to maint).
* The bash prompt script (in contrib/) did not work under "set -u".
(merge 5c0cbdb107 en/prompt-under-set-u later to maint).
* The "chainlint" feature in the test framework is a handy way to
catch common mistakes in writing new tests, but tends to get
expensive. An knob to selectively disable it has been introduced
to help running tests that the developer has not modified.
(merge 2d86a96220 jk/test-chainlint-softer later to maint).
* The "rev-parse" command did not diagnose the lack of argument to
"--path-format" option, which was introduced in v2.31 era, which
has been corrected.
(merge 99fc555188 wm/rev-parse-path-format-wo-arg later to maint).
* Other code cleanup, docfix, build fix, etc.
(merge f451960708 dl/cat-file-doc-cleanup later to maint).
(merge 12604a8d0c sv/t9801-test-path-is-file-cleanup later to maint).
(merge ea7e63921c jr/doc-ignore-typofix later to maint).
(merge 23c781f173 ps/update-ref-trans-hook-doc later to maint).
(merge 42efa1231a jk/filter-branch-sha256 later to maint).
(merge 4c8e3dca6e tb/push-simple-uses-branch-merge-config later to maint).
(merge 6534d436a2 bs/asciidoctor-installation-hints later to maint).
(merge 47957485b3 ab/read-tree later to maint).
(merge 2be927f3d1 ab/diff-no-index-tests later to maint).
(merge 76593c09bb ab/detox-gettext-tests later to maint).
(merge 28e29ee38b jc/doc-format-patch-clarify later to maint).
(merge fc12b6fdde fm/user-manual-use-preface later to maint).
(merge dba94e3a85 cc/test-helper-bloom-usage-fix later to maint).
(merge 61a7660516 hn/reftable-tables-doc-update later to maint).
(merge 81ed96a9b2 jt/fetch-pack-request-fix later to maint).
(merge 151b6c2dd7 jc/doc-do-not-capitalize-clarification later to maint).
(merge 9160068ac6 js/access-nul-emulation-on-windows later to maint).
(merge 7a14acdbe6 po/diff-patch-doc later to maint).
(merge f91371b948 pw/patience-diff-clean-up later to maint).
(merge 3a7f0908b6 mt/clean-clean later to maint).
(merge d4e2d15a8b ab/streaming-simplify later to maint).
(merge 0e59f7ad67 ah/merge-ort-i18n later to maint).
(merge e6f68f62e0 ls/typofix later to maint).
----------------------------------------------------------------
Changes since v2.31.0 are as follows:
Adam Dinwoodie (1):
cygwin: disallow backslashes in file names
Alex Henrie (1):
merge-ort: split "distinct types" message into two translatable messages
Andrey Bienkowski (1):
doc: clarify the filename encoding in git diff
Andrzej Hunt (24):
Makefile: update 'make fuzz-all' docs to reflect modern clang
symbolic-ref: don't leak shortened refname in check_symref()
reset: free instead of leaking unneeded ref
clone: free or UNLEAK further pointers when finished
worktree: fix leak in dwim_branch()
init: remove git_init_db_config() while fixing leaks
init-db: silence template_dir leak when converting to absolute path
fsmonitor: avoid global-buffer-overflow READ when checking trivial response
parse-options: convert bitfield values to use binary shift
parse-options: don't leak alias help messages
transport: also free remote_refs in transport_disconnect()
merge-ort: only do pointer arithmetic for non-empty lists
revision: free remainder of old commit list in limit_list
wt-status: fix multiple small leaks
ls-files: free max_prefix when done
bloom: clear each bloom_key after use
branch: FREE_AND_NULL instead of NULL'ing real_ref
builtin/bugreport: don't leak prefixed filename
builtin/check-ignore: clear_pathspec before returning
builtin/checkout: clear pending objects after diffing
mailinfo: also free strbuf lists when clearing mailinfo
builtin/for-each-ref: free filter and UNLEAK sorting.
builtin/rebase: release git_format_patch_opt too
builtin/rm: avoid leaking pathspec and seen
Atharva Raykar (1):
userdiff: add support for Scheme
Bagas Sanjaya (1):
INSTALL: note on using Asciidoctor to build doc
Bruno Albuquerque (1):
object-info: support for retrieving object info
Charvi Mendiratta (23):
sequencer: pass todo_item to do_pick_commit()
sequencer: use const variable for commit message comments
rebase -i: add fixup [-C | -c] command
t3437: test script for fixup [-C|-c] options in interactive rebase
rebase -i: teach --autosquash to work with amend!
doc/git-rebase: add documentation for fixup [-C|-c] options
sequencer: fixup the datatype of the 'flag' argument
sequencer: rename a few functions
rebase -i: clarify and fix 'fixup -c' rebase-todo help
t/lib-rebase: update the documentation of FAKE_LINES
t/t3437: fixup here-docs in the 'setup' test
t/t3437: remove the dependency of 'expected-message' file from tests
t/t3437: check the author date of fixed up commit
t/t3437: simplify and document the test helpers
t/t3437: use named commits in the tests
t/t3437: fixup the test 'multiple fixup -c opens editor once'
doc/rebase -i: fix typo in the documentation of 'fixup' command
sequencer: export and rename subject_length()
commit: add amend suboption to --fixup to create amend! commit
commit: add a reword suboption to --fixup
t7500: add tests for --fixup=[amend|reword] options
t3437: use --fixup with options to create amend! commit
doc/git-commit: add documentation for fixup=[amend|reword] options
Chinmoy Chakraborty (1):
column, range-diff: downcase option description
Christian Couder (1):
test-bloom: fix missing 'bloom' from usage string
Christopher Schenk (1):
remote-curl: fall back to basic auth if Negotiate fails
Dennis Ameling (2):
cmake(install): fix double .exe suffixes
cmake(install): include vcpkg dlls
Denton Liu (14):
git-cat-file.txt: monospace args, placeholders and filenames
git-cat-file.txt: remove references to "sha1"
stash show: teach --include-untracked and --only-untracked
stash show: learn stash.showIncludeUntracked
git-completion.bash: pass $__git_subcommand_idx from __git_main()
git-completion.bash: extract from else in _git_stash()
git-completion.bash: use __gitcomp_builtin() in _git_stash()
git-completion.bash: separate some commands onto their own line
git-completion.bash: rename to $__git_cmd_idx
git-completion.bash: use $__git_cmd_idx in more places
git-completion.bash: consolidate cases in _git_stash()
t3905: correct test title
stash show: fix segfault with --{include,only}-untracked
stash show: use stash.showIncludeUntracked even when diff options given
Derrick Stolee (56):
commit-graph: create local repository pointer
commit-graph: use config to specify generation type
csum-file: make hashwrite() more readable
sparse-index: design doc and format update
t/perf: add performance test for sparse operations
t1092: clean up script quoting
sparse-index: add guard to ensure full index
sparse-index: implement ensure_full_index()
t1092: compare sparse-checkout to sparse-index
test-read-cache: print cache entries with --table
test-tool: don't force full index
unpack-trees: ensure full index
sparse-checkout: hold pattern list in index
sparse-index: add 'sdir' index extension
sparse-index: convert from full to sparse
submodule: sparse-index should not collapse links
unpack-trees: allow sparse directories
sparse-index: check index conversion happens
sparse-index: add index.sparse config option
sparse-checkout: toggle sparse index from builtin
sparse-checkout: disable sparse-index
cache-tree: integrate with sparse directory entries
sparse-index: loose integration with cache_tree_verify()
p2000: add sparse-index repos
maintenance: simplify prefetch logic
sparse-index: API protection strategy
*: remove 'const' qualifier for struct index_state
read-cache: expand on query into sparse-directory entry
cache: move ensure_full_index() to cache.h
add: ensure full index
checkout-index: ensure full index
checkout: ensure full index
commit: ensure full index
difftool: ensure full index
fsck: ensure full index
grep: ensure full index
ls-files: ensure full index
merge-index: ensure full index
rm: ensure full index
stash: ensure full index
update-index: ensure full index
dir: ensure full index
entry: ensure full index
merge-recursive: ensure full index
pathspec: ensure full index
read-cache: ensure full index
resolve-undo: ensure full index
revision: ensure full index
name-hash: don't add directories to name_hash
sparse-index: expand_to_path()
name-hash: use expand_to_path()
fetch: add --prefetch option
maintenance: use 'git fetch --prefetch'
maintenance: respect remote.*.skipFetchAll
dir: update stale description of treat_directory()
sparse-index: fix uninitialized jump
Elijah Newren (49):
diffcore-rename: use directory rename guided basename comparisons
diffcore-rename: provide basic implementation of idx_possible_rename()
diffcore-rename: add a mapping of destination names to their indices
Move computation of dir_rename_count from merge-ort to diffcore-rename
diffcore-rename: add function for clearing dir_rename_count
diffcore-rename: move dir_rename_counts into dir_rename_info struct
diffcore-rename: extend cleanup_dir_rename_info()
diffcore-rename: compute dir_rename_counts in stages
diffcore-rename: limit dir_rename_counts computation to relevant dirs
diffcore-rename: compute dir_rename_guess from dir_rename_counts
diffcore-rename: enable filtering possible rename sources
merge-ort: precompute subset of sources for which we need rename detection
merge-ort: add data structures for an alternate tree traversal
merge-ort: introduce wrappers for alternate tree traversal
merge-ort: precompute whether directory rename detection is needed
merge-ort: use relevant_sources to filter possible rename sources
merge-ort: skip rename detection entirely if possible
diffcore-rename: avoid doing basename comparisons for irrelevant sources
diffcore-rename: take advantage of "majority rules" to skip more renames
merge-ort, diffcore-rename: tweak dirs_removed and relevant_source type
merge-ort: record the reason that we want a rename for a directory
diffcore-rename: only compute dir_rename_count for relevant directories
diffcore-rename: check if we have enough renames for directories early on
diffcore-rename: add computation of number of unknown renames
merge-ort: record the reason that we want a rename for a file
diffcore-rename: determine which relevant_sources are no longer relevant
merge-ort: use STABLE_QSORT instead of QSORT where required
merge-ort: add a special minimal index just for renormalization
merge-ort: have ll_merge() use a special attr_index for renormalization
merge-ort: let renormalization change modify/delete into clean delete
merge-ort: support subtree shifting
t6428: new test for SKIP_WORKTREE handling and conflicts
merge-ort: implement CE_SKIP_WORKTREE handling with conflicted entries
t: mark several submodule merging tests as fixed under merge-ort
merge-ort: write $GIT_DIR/AUTO_MERGE whenever we hit a conflict
merge-recursive: add a bunch of FIXME comments documenting known bugs
Revert "merge-ort: ignore the directory rename split conflict for now"
t6423: mark remaining expected failure under merge-ort as such
Add testing with merge-ort merge strategy
sequencer: fix edit handling for cherry-pick and revert messages
dir: convert trace calls to trace2 equivalents
dir: report number of visited directories and paths with trace2
ls-files: error out on -i unless -o or -c are specified
t7300: add testcase showing unnecessary traversal into ignored directory
t3001, t7300: add testcase showcasing missed directory traversal
dir: avoid unnecessary traversal into ignored directory
dir: traverse into untracked directories if they may have ignored subfiles
dir: introduce readdir_skip_dot_and_dotdot() helper
git-prompt: work under set -u
Eric Sunshine (1):
merge(s): apply consistent punctuation to "up to date" messages
Eric Wong (1):
remote-curl: fix clone on sha256 repos
Firmin Martin (1):
user-manual.txt: assign preface an id and a title
Georgios Kontaxis (1):
gitweb: add "e-mail privacy" feature to redact e-mail addresses
Han Xin (1):
pack-objects: fix comment of reused_chunk.difference
Han-Wen Nienhuys (3):
reftable: document an alternate cleanup method on Windows
refs: print errno for read_raw_ref if GIT_TRACE_REFS is set
refs/debug: trace into reflog expiry too
Jeff Hostetler (14):
pkt-line: eliminate the need for static buffer in packet_write_gently()
simple-ipc: design documentation for new IPC mechanism
simple-ipc: add win32 implementation
unix-socket: eliminate static unix_stream_socket() helper function
unix-socket: add backlog size option to unix_stream_listen()
unix-socket: disallow chdir() when creating unix domain sockets
unix-stream-server: create unix domain socket under lock
convert: make convert_attrs() and convert structs public
convert: add [async_]convert_to_working_tree_ca() variants
convert: add get_stream_filter_ca() variant
convert: add classification for conv_attrs struct
simple-ipc: add Unix domain socket implementation
t0052: add simple-ipc tests and t/helper/test-simple-ipc tool
simple-ipc: correct ifdefs when NO_PTHREADS is defined
Jeff King (43):
add open_nofollow() helper
attr: convert "macro_ok" into a flags field
exclude: add flags parameter to add_patterns()
attr: do not respect symlinks for in-tree .gitattributes
exclude: do not respect symlinks for in-tree .gitignore
mailmap: do not respect symlinks for in-tree .mailmap
p5303: add missing &&-chains
p5303: measure time to repack with keep
builtin/pack-objects.c: rewrite honor-pack-keep logic
packfile: add kept-pack cache for find_kept_pack_entry()
t/perf: handle worktrees as test repos
t/perf: avoid copying worktree files from test repo
t7003: test ref rewriting explicitly
filter-branch: drop multiple-ancestor warning
filter-branch: drop $_x40 glob
bisect: peel annotated tags to commits
t: annotate !PTHREADS tests with !FAIL_PREREQS
ref-filter: fix NULL check for parse object failure
midx.c: improve cache locality in midx_pack_order_cmp()
pack-objects: update "nr_seen" progress based on pack-reused count
is_promisor_object(): free tree buffer after parsing
lookup_unknown_object(): take a repository argument
revision: avoid parsing with --exclude-promisor-objects
pack-bitmap: clean up include_check after use
prune: save reachable-from-recent objects with bitmaps
t5300: modernize basic tests
t5300: check that we produced expected number of deltas
pack-objects: clamp negative window size to 0
t5316: check behavior of pack-objects --depth=0
pack-objects: clamp negative depth to 0
docs/format-patch: mention handling of merges
t7415: remove out-dated comment about translation
fsck_tree(): fix shadowed variable
fsck_tree(): wrap some long lines
t7415: rename to expand scope
t7450: test verify_path() handling of gitmodules
t7450: test .gitmodules symlink matching against obscured names
t0060: test ntfs/hfs-obscured dotfiles
fsck: warn about symlinked dotfiles we'll open with O_NOFOLLOW
docs: document symlink restrictions for dot-files
t: avoid sed-based chain-linting in some expensive cases
t5551: test http interaction with credential helpers
Revert "remote-curl: fall back to basic auth if Negotiate fails"
Jerry Zhang (3):
git-apply: try threeway first when "--3way" is used
git-apply: allow simultaneous --cached and --3way options
apply: adjust messages to account for --3way changes
Joachim Kuebart (2):
git-p4: ensure complex branches are cloned correctly
git-p4: speed up search for branch parent
Johannes Schindelin (10):
pkt-line: do not issue flush packets in write_packetized_*()
pkt-line: add PACKET_READ_GENTLE_ON_READ_ERROR option
pkt-line: add options argument to read_packetized_to_strbuf()
fsmonitor: fix memory corruption in some corner cases
fsmonitor: do not forget to release the token in `discard_index()`
SECURITY: describe how to report vulnerabilities
Document how we do embargoed releases
cmake: support SKIP_DASHED_BUILT_INS
cmake: add a preparatory work-around to accommodate `vcpkg`
msvc: avoid calling `access("NUL", flags)`
John Szakmeister (2):
http: store credential when PKI auth is used
http: drop the check for an empty proxy password before approving
Jonathan Tan (8):
t5606: run clone branch name test with protocol v2
fetch-pack: buffer object-format with other args
fetch-pack: refactor process_acks()
fetch-pack: refactor add_haves()
fetch-pack: refactor command and capability write
fetch: teach independent negotiation (no packfile)
send-pack: support push negotiation
t5601: mark protocol v2-only test
Josh Soref (1):
merge: fix swapped "up to date" message components
Julien Richard (1):
doc: .gitignore documentation typofix
Junio C Hamano (27):
builtin/repack.c: reword comment around pack-objects flags
xcalloc: use CALLOC_ARRAY() when applicable
cocci: allow xcalloc(1, size)
The first batch in 2.32 cycle
The second batch
format-patch: give an overview of what a "patch" message is
The third patch
Git 2.31.1
The fourth batch
The fifth batch
The sixth batch
The seventh batch
The eighth batch
The ninth batch
doc: clarify "do not capitalize the first word" rule
The tenth batch
The eleventh (aka "ort") batch
The twelfth batch
The thirteenth batch
CodingGuidelines: explicitly allow "local" for test scripts
The fourteenth batch
The fifteenth batch
The sixteenth batch
The seventeenth batch
Git 2.32-rc0
A handful more topics before -rc1
Git 2.32-rc1
Kyle Meyer (1):
config.txt: add missing period
Li Linchao (1):
builtin/clone.c: add --reject-shallow option
Louis Sautier (1):
pretty: fix a typo in the documentation for %(trailers)
Luke Shumaker (30):
.gitignore: ignore 'git-subtree' as a build artifact
subtree: t7900: update for having the default branch name be 'main'
subtree: t7900: use test-lib.sh's test_count
subtree: t7900: use consistent formatting
subtree: t7900: comment subtree_test_create_repo
subtree: t7900: use 'test' for string equality
subtree: t7900: delete some dead code
subtree: t7900: fix 'verify one file change per commit'
subtree: t7900: rename last_commit_message to last_commit_subject
subtree: t7900: add a test for the -h flag
subtree: t7900: add porcelain tests for 'pull' and 'push'
subtree: don't have loose code outside of a function
subtree: more consistent error propagation
subtree: drop support for git < 1.7
subtree: use `git merge-base --is-ancestor`
subtree: use git-sh-setup's `say`
subtree: use more explicit variable names for cmdline args
subtree: use "$*" instead of "$@" as appropriate
subtree: don't fuss with PATH
subtree: use "^{commit}" instead of "^0"
subtree: parse revs in individual cmd_ functions
subtree: remove duplicate check
subtree: add comments and sanity checks
subtree: don't let debug and progress output clash
subtree: have $indent actually affect indentation
subtree: give the docs a once-over
subtree: allow --squash to be used with --rejoin
subtree: allow 'split' flags to be passed to 'push'
subtree: push: allow specifying a local rev other than HEAD
subtree: be stricter about validating flags
Lénaïc Huard (1):
maintenance: fix two memory leaks
Martin Ågren (2):
git-repack.txt: remove spurious ")"
pretty-formats.txt: add missing space
Matheus Tavares (30):
convert: fail gracefully upon missing clean cmd on required filter
symlinks: update comment on threaded_check_leading_path()
checkout: don't follow symlinks when removing entries
entry: extract a header file for entry.c functions
entry: make fstat_output() and read_blob_entry() public
entry: extract update_ce_after_write() from write_entry()
entry: move conv_attrs lookup up to checkout_entry()
entry: add checkout_entry_ca() taking preloaded conv_attrs
add: include magic part of pathspec on --refresh error
t3705: add tests for `git add` in sparse checkouts
add: make --chmod and --renormalize honor sparse checkouts
pathspec: allow to ignore SKIP_WORKTREE entries on index matching
refresh_index(): add flag to ignore SKIP_WORKTREE entries
add: warn when asked to update SKIP_WORKTREE entries
rm: honor sparse checkout patterns
pkt-line: do not report packet write errors twice
unpack-trees: add basic support for parallel checkout
parallel-checkout: make it truly parallel
parallel-checkout: add configuration options
parallel-checkout: support progress displaying
parallel-checkout: add design documentation
make_transient_cache_entry(): optionally alloc from mem_pool
builtin/checkout.c: complete parallel checkout support
checkout-index: add parallel checkout support
parallel-checkout: add tests for basic operations
parallel-checkout: add tests related to path collisions
t0028: extract encoding helpers to lib-encoding.sh
parallel-checkout: add tests related to .gitattributes
ci: run test round with parallel-checkout enabled
clean: remove unnecessary variable
Nicholas Clark (1):
submodule update: silence underlying fetch with "--quiet"
Nipunn Koorapati (3):
fsmonitor: skip lstat deletion check during git diff-index
fsmonitor: add assertion that fsmonitor is valid to check_removed
fsmonitor: add perf test for git diff HEAD
Patrick Steinhardt (17):
githooks.txt: replace mentions of SHA-1 specific properties
githooks.txt: clarify documentation on reference-transaction hook
pack-bitmap: avoid traversal of objects referenced by uninteresting tag
uploadpack.txt: document implication of `uploadpackfilter.allow`
revision: mark commit parents as NOT_USER_GIVEN
list-objects: move tag processing into its own function
list-objects: support filtering by tag and commit
list-objects: implement object type filter
pack-bitmap: implement object type filter
pack-bitmap: implement combined filter
rev-list: allow filtering of provided items
config: rename `git_etc_config()`
config: unify code paths to get global config paths
config: allow overriding of global and system configuration
t1300: fix unset of GIT_CONFIG_NOSYSTEM leaking into subsequent tests
git.txt: fix synopsis of `--config-env` missing the equals sign
git: support separate arg for `--config-env`'s value
Peter Oliver (1):
doc: point to diff attribute in patch format docs
Phillip Wood (6):
rebase -i: only write fixup-message when it's needed
sequencer: factor out code to append squash message
rebase -i: comment out squash!/fixup! subjects from squash message
word diff: handle zero length matches
patience diff: remove unnecessary string comparisons
patience diff: remove unused variable
Rafael Silva (1):
repack: avoid loosening promisor objects in partial clones
Ramkumar Ramachandra (1):
Add entry for Ramkumar Ramachandra
Ramsay Jones (1):
bisect--helper: use BISECT_TERMS in 'bisect skip' command
René Scharfe (12):
pretty: add %(describe)
pretty: add merge and exclude options to %(describe)
t4205: assert %(describe) test coverage
pretty: document multiple %(describe) being inconsistent
fix xcalloc() argument order
archive: expand only a single %(describe) per archive
git-compat-util.h: drop trailing semicolon from macro definition
use CALLOC_ARRAY
vcs-svn: remove header files as well
block-sha1: drop trailing semicolon from macro definition
mem-pool: drop trailing semicolon from macro definition
daemon: sanitize all directory separators
Robert Foss (1):
git-send-email: Respect core.hooksPath setting
SZEDER Gábor (1):
Makefile: add missing dependencies of 'config-list.h'
Sardorbek Imomaliev (1):
work around zsh comment in __git_complete_worktree_paths
Sergey Organov (5):
diff-merges: introduce --diff-merges=on
diff-merges: refactor set_diff_merges()
diff-merges: adapt -m to enable default diff format
diff-merges: introduce log.diffMerges config variable
doc/diff-options: document new --diff-merges features
Shubham Verma (1):
t9801: replace test -f with test_path_is_file
Taylor Blau (28):
packfile: introduce 'find_kept_pack_entry()'
revision: learn '--no-kept-objects'
builtin/pack-objects.c: add '--stdin-packs' option
builtin/repack.c: add '--geometric' option
builtin/repack.c: do not repack single packs with --geometric
t7703: test --geometric repack with loose objects
builtin/repack.c: assign pack split later
builtin/repack.c: be more conservative with unsigned overflows
Documentation/git-push.txt: correct configuration typo
builtin/pack-objects.c: ignore missing links with --stdin-packs
builtin/multi-pack-index.c: inline 'flags' with options
builtin/multi-pack-index.c: don't handle 'progress' separately
builtin/multi-pack-index.c: define common usage with a macro
builtin/multi-pack-index.c: split sub-commands
builtin/multi-pack-index.c: don't enter bogus cmd_mode
builtin/multi-pack-index.c: display usage on unrecognized command
t/helper/test-read-midx.c: add '--show-objects'
pack-bitmap: add 'test_bitmap_commits()' helper
t/helper/test-bitmap.c: initial commit
builtin/pack-objects.c: respect 'pack.preferBitmapTips'
midx: allow marking a pack as preferred
midx: don't free midx_name early
midx: keep track of the checksum
midx: make some functions non-static
Documentation/technical: describe multi-pack reverse indexes
pack-revindex: read multi-pack reverse indexes
pack-write.c: extract 'write_rev_file_order'
pack-revindex: write multi-pack reverse indexes
Todd Zullinger (1):
t7500: remove non-existant C_LOCALE_OUTPUT prereq
Torsten Bögershausen (3):
git mv foo FOO ; git mv foo bar gave an assert
precompose_utf8: make precompose_string_if_needed() public
macOS: precompose startup_info->prefix
Ville Skyttä (2):
completion: audit and guard $GIT_* against unset use
completion: avoid aliased command lookup error in nounset mode
Will Chandler (1):
refs: cleanup directories when deleting packed ref
Wolfgang Müller (1):
rev-parse: fix segfault with missing --path-format argument
ZheNing Hu (8):
commit: add --trailer option
format-patch: allow a non-integral version numbers
ref-filter: get rid of show_ref_array_item
ref-filter: reuse output buffer
pretty: provide human date format
docs: correct descript of trailer.<token>.command
trailer: add new .cmd config option
ref-filter: fix read invalid union member bug
brian m. carlson (14):
builtin/init-db: handle bare clones when core.bare set to false
hash: add an algo member to struct object_id
Always use oidread to read into struct object_id
http-push: set algorithm when reading object ID
hash: add a function to finalize object IDs
Use the final_oid_fn to finalize hashing of object IDs
builtin/pack-redundant: avoid casting buffers to struct object_id
hash: set, copy, and use algo field in struct object_id
hash: provide per-algorithm null OIDs
builtin/show-index: set the algorithm for object IDs
commit-graph: don't store file hashes as struct object_id
builtin/pack-objects: avoid using struct object_id for pack hash
hex: default to the_hash_algo on zero algorithm value
hex: print objects using the hash algorithm member
Ævar Arnfjörð Bjarmason (92):
grep/pcre2: drop needless assignment + assert() on opt->pcre2
grep/pcre2: drop needless assignment to NULL
grep/pcre2: correct reference to grep_init() in comment
grep/pcre2: prepare to add debugging to pcre2_malloc()
grep/pcre2: add GREP_PCRE2_DEBUG_MALLOC debug mode
grep/pcre2: use compile-time PCREv2 version test
grep/pcre2: use pcre2_maketables_free() function
grep/pcre2: actually make pcre2 use custom allocator
grep/pcre2: move back to thread-only PCREv2 structures
grep/pcre2: move definitions of pcre2_{malloc,free}
Makefile: guard against TEST_OBJS in the environment
Makefile: split up long OBJECTS line
Makefile: sort OBJECTS assignment for subsequent change
Makefile: split OBJECTS into OBJECTS and GIT_OBJS
Makefile: add {program,xdiff,test,git,fuzz}-objs & objects targets
remote: add camel-cased *.tagOpt key, like clone
remote: write camel-cased *.pushRemote on rename
fsck.c: refactor and rename common config callback
show tests: add test for "git show <tree>"
ls-files tests: add meaningful --with-tree tests
tree.c API: move read_tree() into builtin/ls-files.c
ls-files: don't needlessly pass around stage variable
ls-files: refactor away read_tree()
archive: stop passing "stage" through read_tree_recursive()
tree.h API: expose read_tree_1() as read_tree_at()
tree.h API: simplify read_tree_recursive() signature
diff --no-index tests: add test for --exit-code
diff --no-index tests: test mode normalization
rebase: remove transitory rebase.useBuiltin setting & env
mktag tests: fix broken "&&" chain
fsck.h: use designed initializers for FSCK_OPTIONS_{DEFAULT,STRICT}
fsck.h: use "enum object_type" instead of "int"
fsck.c: rename variables in fsck_set_msg_type() for less confusion
fsck.c: remove (mostly) redundant append_msg_id() function
fsck.c: rename remaining fsck_msg_id "id" to "msg_id"
fsck.c: refactor fsck_msg_type() to limit scope of "int msg_type"
fsck.h: move FSCK_{FATAL,INFO,ERROR,WARN,IGNORE} into an enum
fsck.h: re-order and re-assign "enum fsck_msg_type"
fsck.c: call parse_msg_type() early in fsck_set_msg_type()
fsck.c: undefine temporary STR macro after use
fsck.c: give "FOREACH_MSG_ID" a more specific name
fsck.[ch]: move FOREACH_FSCK_MSG_ID & fsck_msg_id from *.c to *.h
fsck.c: pass along the fsck_msg_id in the fsck_error callback
fsck.c: add an fsck_set_msg_type() API that takes enums
fsck.c: move gitmodules_{found,done} into fsck_options
fetch-pack: don't needlessly copy fsck_options
fetch-pack: use file-scope static struct for fsck_options
fetch-pack: use new fsck API to printing dangling submodules
Makefile: add QUIET_GEN to "tags" and "TAGS" targets
git-send-email: replace "map" in void context with "for"
git-send-email: test full --validate output
git-send-email: refactor duplicate $? checks into a function
git-send-email: improve --validate error output
bash completion: complete CHERRY_PICK_HEAD
config.c: remove last remnant of GIT_TEST_GETTEXT_POISON
userdiff style: re-order drivers in alphabetical order
userdiff style: declare patterns with consistent style
userdiff style: normalize pascal regex declaration
userdiff: add and use for_each_userdiff_driver()
userdiff tests: explicitly test "default" pattern
userdiff tests: list builtin drivers via test-tool
userdiff: remove support for "broken" tests
blame tests: don't rely on t/t4018/ directory
blame tests: simplify userdiff driver test
rebase tests: camel-case rebase.rescheduleFailedExec consistently
rebase: don't override --no-reschedule-failed-exec with config
Documentation/Makefile: make $(wildcard howto/*.txt) a var
Documentation/Makefile: make doc.dep dependencies a variable again
doc lint: Perl "strict" and "warnings" in lint-gitlink.perl
doc lint: fix bugs in, simplify and improve lint script
doc lint: lint and fix missing "GIT" end sections
doc lint: lint relative section order
docs: fix linting issues due to incorrect relative section order
svn tests: remove legacy re-setup from init-clone test
svn tests: refactor away a "set -e" in test body
tests: remove all uses of test_i18cmp
usage.c: don't copy/paste the same comment three times
api docs: document BUG() in api-error-handling.txt
api docs: document that BUG() emits a trace2 error event
pretty tests: simplify %aI/%cI date format test
pretty tests: give --date/format tests a better description
sparse-index.c: remove set_index_sparse_config()
streaming.c: avoid forward declarations
streaming.c: remove enum/function/vtbl indirection
streaming.c: remove {open,close,read}_method_decl() macros
streaming.c: stop passing around "object_info *" to open()
streaming.c: move {open,close,read} from vtable to "struct git_istream"
Makefile: don't re-define PERL_DEFINES
Makefile: regenerate perl/build/* if GIT-PERL-DEFINES changes
Makefile: regenerate *.pm on NO_PERL_CPAN_FALLBACKS change
perl: use mock i18n functions under NO_GETTEXT=Y
Makefile: make PERL_DEFINES recursively expanded
Øystein Walle (2):
transport: respect verbosity when setting upstream
add: die if both --dry-run and --interactive are given
Đoàn Trần Công Danh (6):
mailinfo: load default metainfo_charset lazily
mailinfo: stop parsing options manually
mailinfo: warn if CRLF found in decoded base64/QP email
mailinfo: allow squelching quoted CRLF warning
mailinfo: allow stripping quoted CR without warning
am: learn to process quoted lines that ends with CRLF
^ permalink raw reply [relevance 3%]
* [ANNOUNCE] Git v2.32.0-rc0
@ 2021-05-17 7:06 3% Junio C Hamano
0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2021-05-17 7:06 UTC (permalink / raw)
To: git; +Cc: Linux Kernel, git-packagers
An early preview release Git v2.32.0-rc0 is now available for
testing at the usual places. It is comprised of 545 non-merge
commits since v2.31.0, contributed by 76 people, 29 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.32.0-rc0' tag and the 'master' branch that the tag points at:
url = https://git.kernel.org/pub/scm/git/git
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.31.0 are as follows.
Welcome to the Git development community!
Adam Sharafeddine, Andrey Bienkowski, Atharva Raykar, Bruno
Albuquerque, Chinmoy Chakraborty, Christopher Schenk, Dan
Moseley, David Emett, Dmitry Torilov, Fabien Terrani, Firmin
Martin, Georgios Kontaxis, Jerry Zhang, Joachim Kuebart, Joseph
Vusich, Josh Soref, Julien Richard, Li Linchao, Louis Sautier,
Luke Shumaker, Nicholas Clark, Peter Oliver, Renato Botelho,
Robert Foss, RyotaK, Sardorbek Imomaliev, Tom Saeger, Will
Chandler, and Yiyuan guo.
Returning contributors who helped this release are as follows.
Thanks for your continued support.
Adam Dinwoodie, Ævar Arnfjörð Bjarmason, Alex Henrie, Andrzej
Hunt, Bagas Sanjaya, brian m. carlson, Charvi Mendiratta,
Christian Couder, Dennis Ameling, Denton Liu, Derrick Stolee,
Đoàn Trần Công Danh, Elijah Newren, Eric Sunshine,
Han-Wen Nienhuys, Han Xin, Jeff Hostetler, Jeff King, Johannes
Schindelin, John Szakmeister, Jonathan Nieder, Jonathan Tan,
Junio C Hamano, Kyle Meyer, Lénaïc Huard, Luke Diamand,
Marc Branchaud, Martin Ågren, Matheus Tavares, Nguyễn Thái
Ngọc Duy, Nipunn Koorapati, Øystein Walle, Patrick Steinhardt,
Phillip Wood, Rafael Silva, Ramkumar Ramachandra, Ramsay Jones,
René Scharfe, Sergey Organov, Shubham Verma, Son Luong Ngoc,
SZEDER Gábor, Taylor Blau, Torsten Bögershausen, Trygve
Aaberge, Ville Skyttä, and ZheNing Hu.
[*] We are counting not just the authorship contribution but
issue reporting, testing and reviewing that are recorded
in the commit trailers.
----------------------------------------------------------------
Git 2.32 Release Notes (draft)
==============================
Backward compatibility notes
----------------------------
* ".gitattributes", ".gitignore", and ".mailmap" files that are
symbolic links are ignored.
* "git apply --3way" used to first attempt a straight application,
and only fell back to the 3-way merge algorithm when the stright
application failed. Starting with this version, the command will
first try the 3-way merge algorithm and only when it fails (either
resulting with conflict or the base versions of blobs are missing),
falls back to the usual patch application.
Updates since v2.31
-------------------
UI, Workflows & Features
* It does not make sense to make ".gitattributes", ".gitignore" and
".mailmap" symlinks, as they are supposed to be usable from the
object store (think: bare repositories where HEAD:.mailmap etc. are
used). When these files are symbolic links, we used to read the
contents of the files pointed by them by mistake, which has been
corrected.
* "git stash show" learned to optionally show untracked part of the
stash.
* "git log --format='...'" learned "%(describe)" placeholder.
* "git repack" so far has been only capable of repacking everything
under the sun into a single pack (or split by size). A cleverer
strategy to reduce the cost of repacking a repository has been
introduced.
* The http codepath learned to let the credential layer to cache the
password used to unlock a certificate that has successfully been
used.
* "git commit --fixup=<commit>", which was to tweak the changes made
to the contents while keeping the original log message intact,
learned "--fixup=(amend|reword):<commit>", that can be used to
tweak both the message and the contents, and only the message,
respectively.
* When accessing a server with a URL like https://user:pass@site/, we
did not to fall back to the basic authentication with the
credential material embedded in the URL after the "Negotiate"
authentication failed. Now we do.
* "git send-email" learned to honor the core.hooksPath configuration.
* "git format-patch -v<n>" learned to allow a reroll count that is
not an integer.
* "git commit" learned "--trailer <key>[=<value>]" option; together
with the interpret-trailers command, this will make it easier to
support custom trailers.
* "git clone --reject-shallow" option fails the clone as soon as we
notice that we are cloning from a shallow repository.
* A configuration variable has been added to force tips of certain
refs to be given a reachability bitmap.
* "gitweb" learned "e-mail privacy" feature to redact strings that
look like e-mail addresses on various pages.
* "git apply --3way" has always been "to fall back to 3-way merge
only when straight application fails". Swap the order of falling
back so that 3-way is always attempted first (only when the option
is given, of course) and then straight patch application is used as
a fallback when it fails.
* "git apply" now takes "--3way" and "--cached" at the same time, and
work and record results only in the index.
* The command line completion (in contrib/) has learned that
CHERRY_PICK_HEAD is a possible pseudo-ref.
* Userdiff patterns for "Scheme" has been added.
* "git log" learned "--diff-merges=<style>" option, with an
associated configuration variable log.diffMerges.
* "git log --format=..." placeholders learned %ah/%ch placeholders to
request the --date=human output.
* Replace GIT_CONFIG_NOSYSTEM mechanism to decline from reading the
system-wide configuration file with GIT_CONFIG_SYSTEM that lets
users specify from which file to read the system-wide configuration
(setting it to an empty file would essentially be the same as
setting NOSYSTEM), and introduce GIT_CONFIG_GLOBAL to override the
per-user configuration in $HOME/.gitconfig.
* "git add" and "git rm" learned not to touch those paths that are
outside of sparse checkout.
* "git rev-list" learns the "--filter=object:type=<type>" option,
which can be used to exclude objects of the given kind from the
packfile generated by pack-objects.
* The command line completion (in contrib/) for "git stash" has been
updated.
* "git subtree" updates.
* It is now documented that "format-patch" skips merges.
* Options to "git pack-objects" that take numeric values like
--window and --depth should not accept negative values; the input
validation has been tightened.
* The way the command line specified by the trailer.<token>.command
configuration variable receives the end-user supplied value was
both error prone and misleading. An alternative to achieve the
same goal in a safer and more intuitive way has been added, as
the trailer.<token>.cmd configuration variable, to replace it.
* "git add -i --dry-run" does not dry-run, which was surprising. The
combination of options has taught to error out.
* "git push" learns to discover common ancestor with the receiving
end over protocol v2. This will hopefully make "git push" as
efficient as "git fetch" in avoiding objects from getting
transferred unnecessarily.
* "git mailinfo" (hence "git am") learned the "--quoted-cr" option to
control how lines ending with CRLF wrapped in base64 or qp are
handled.
Performance, Internal Implementation, Development Support etc.
* Rename detection rework continues.
* GIT_TEST_FAIL_PREREQS is a mechanism to skip test pieces with
prerequisites to catch broken tests that depend on the side effects
of optional pieces, but did not work at all when negative
prerequisites were involved.
(merge 27d578d904 jk/fail-prereq-testfix later to maint).
* "git diff-index" codepath has been taught to trust fsmonitor status
to reduce number of lstat() calls.
(merge 7e5aa13d2c nk/diff-index-fsmonitor later to maint).
* Reorganize Makefile to allow building git.o and other essential
objects without extra stuff needed only for testing.
* Preparatory API changes for parallel checkout.
* A simple IPC interface gets introduced to build services like
fsmonitor on top.
* Fsck API clean-up.
* SECURITY.md that is facing individual contributors and end users
has been introduced. Also a procedure to follow when preparing
embargoed releases has been spelled out.
(merge 09420b7648 js/security-md later to maint).
* Optimize "rev-list --use-bitmap-index --objects" corner case that
uses negative tags as the stopping points.
* CMake update for vsbuild.
* An on-disk reverse-index to map the in-pack location of an object
back to its object name across multiple packfiles is introduced.
* Generate [ec]tags under $(QUIET_GEN).
* Clean-up codepaths that implements "git send-email --validate"
option and improves the message from it.
* The last remnant of gettext-poison has been removed.
* The test framework has been taught to optionally turn the default
merge strategy to "ort" throughout the system where we use
three-way merges internally, like cherry-pick, rebase etc.,
primarily to enhance its test coverage (the strategy has been
available as an explicit "-s ort" choice).
* A bit of code clean-up and a lot of test clean-up around userdiff
area.
* Handling of "promisor packs" that allows certain objects to be
missing and lazily retrievable has been optimized (a bit).
* When packet_write() fails, we gave an extra error message
unnecessarily, which has been corrected.
* The checkout machinery has been taught to perform the actual
write-out of the files in parallel when able.
* Show errno in the trace output in the error codepath that calls
read_raw_ref method.
* Effort to make the command line completion (in contrib/) safe with
"set -u" continues.
* Tweak a few tests for "log --format=..." that show timestamps in
various formats.
* The reflog expiry machinery has been taught to emit trace events.
* Over-the-wire protocol learns a new request type to ask for object
sizes given a list of object names.
Fixes since v2.31
-----------------
* The fsmonitor interface read from its input without making sure
there is something to read from. This bug is new in 2.31
timeframe.
* The data structure used by fsmonitor interface was not properly
duplicated during an in-core merge, leading to use-after-free etc.
* "git bisect" reimplemented more in C during 2.30 timeframe did not
take an annotated tag as a good/bad endpoint well. This regression
has been corrected.
* Fix macros that can silently inject unintended null-statements.
* CALLOC_ARRAY() macro replaces many uses of xcalloc().
* Update insn in Makefile comments to run fuzz-all target.
* Fix a corner case bug in "git mv" on case insensitive systems,
which was introduced in 2.29 timeframe.
* We had a code to diagnose and die cleanly when a required
clean/smudge filter is missing, but an assert before that
unnecessarily fired, hiding the end-user facing die() message.
(merge 6fab35f748 mt/cleanly-die-upon-missing-required-filter later to maint).
* Update C code that sets a few configuration variables when a remote
is configured so that it spells configuration variable names in the
canonical camelCase.
(merge 0f1da600e6 ab/remote-write-config-in-camel-case later to maint).
* A new configuration variable has been introduced to allow choosing
which version of the generation number gets used in the
commit-graph file.
(merge 702110aac6 ds/commit-graph-generation-config later to maint).
* Perf test update to work better in secondary worktrees.
(merge 36e834abc1 jk/perf-in-worktrees later to maint).
* Updates to memory allocation code around the use of pcre2 library.
(merge c1760352e0 ab/grep-pcre2-allocfix later to maint).
* "git -c core.bare=false clone --bare ..." would have segfaulted,
which has been corrected.
(merge 75555676ad bc/clone-bare-with-conflicting-config later to maint).
* When "git checkout" removes a path that does not exist in the
commit it is checking out, it wasn't careful enough not to follow
symbolic links, which has been corrected.
(merge fab78a0c3d mt/checkout-remove-nofollow later to maint).
* A few option description strings started with capital letters,
which were corrected.
(merge 5ee90326dc cc/downcase-opt-help later to maint).
* Plug or annotate remaining leaks that trigger while running the
very basic set of tests.
(merge 68ffe095a2 ah/plugleaks later to maint).
* The hashwrite() API uses a buffering mechanism to avoid calling
write(2) too frequently. This logic has been refactored to be
easier to understand.
(merge ddaf1f62e3 ds/clarify-hashwrite later to maint).
* "git cherry-pick/revert" with or without "--[no-]edit" did not spawn
the editor as expected (e.g. "revert --no-edit" after a conflict
still asked to edit the message), which has been corrected.
(merge 39edfd5cbc en/sequencer-edit-upon-conflict-fix later to maint).
* "git daemon" has been tightened against systems that take backslash
as directory separator.
(merge 9a7f1ce8b7 rs/daemon-sanitize-dir-sep later to maint).
* A NULL-dereference bug has been corrected in an error codepath in
"git for-each-ref", "git branch --list" etc.
(merge c685450880 jk/ref-filter-segfault-fix later to maint).
* Streamline the codepath to fix the UTF-8 encoding issues in the
argv[] and the prefix on macOS.
(merge c7d0e61016 tb/precompose-prefix-simplify later to maint).
* The command-line completion script (in contrib/) had a couple of
references that would have given a warning under the "-u" (nounset)
option.
(merge c5c0548d79 vs/completion-with-set-u later to maint).
* When "git pack-objects" makes a literal copy of a part of existing
packfile using the reachability bitmaps, its update to the progress
meter was broken.
(merge 8e118e8490 jk/pack-objects-bitmap-progress-fix later to maint).
* The dependencies for config-list.h and command-list.h were broken
when the former was split out of the latter, which has been
corrected.
(merge 56550ea718 sg/bugreport-fixes later to maint).
* "git push --quiet --set-upstream" was not quiet when setting the
upstream branch configuration, which has been corrected.
(merge f3cce896a8 ow/push-quiet-set-upstream later to maint).
* The prefetch task in "git maintenance" assumed that "git fetch"
from any remote would fetch all its local branches, which would
fetch too much if the user is interested in only a subset of
branches there.
(merge 32f67888d8 ds/maintenance-prefetch-fix later to maint).
* Clarify that pathnames recorded in Git trees are most often (but
not necessarily) encoded in UTF-8.
(merge 9364bf465d ab/pathname-encoding-doc later to maint).
* "git --config-env var=val cmd" weren't accepted (only
--config-env=var=val was).
(merge c331551ccf ps/config-env-option-with-separate-value later to maint).
* When the reachability bitmap is in effect, the "do not lose
recently created objects and those that are reachable from them"
safety to protect us from races were disabled by mistake, which has
been corrected.
(merge 2ba582ba4c jk/prune-with-bitmap-fix later to maint).
* Cygwin pathname handling fix.
(merge bccc37fdc7 ad/cygwin-no-backslashes-in-paths later to maint).
* "git rebase --[no-]reschedule-failed-exec" did not work well with
its configuration variable, which has been corrected.
(merge e5b32bffd1 ab/rebase-no-reschedule-failed-exec later to maint).
* Portability fix for command line completion script (in contrib/).
(merge f2acf763e2 si/zsh-complete-comment-fix later to maint).
* "git repack -A -d" in a partial clone unnecessarily loosened
objects in promisor pack.
* "git bisect skip" when custom words are used for new/old did not
work, which has been corrected.
* A few variants of informational message "Already up-to-date" has
been rephrased.
(merge ad9322da03 js/merge-already-up-to-date-message-reword later to maint).
* "git submodule update --quiet" did not propagate the quiet option
down to underlying "git fetch", which has been corrected.
(merge 62af4bdd42 nc/submodule-update-quiet later to maint).
* Document that our test can use "local" keyword.
(merge a84fd3bcc6 jc/test-allows-local later to maint).
* The word-diff mode has been taught to work better with a word
regexp that can match an empty string.
(merge 0324e8fc6b pw/word-diff-zero-width-matches later to maint).
* "git p4" learned to find branch points more efficiently.
(merge 6b79818bfb jk/p4-locate-branch-point-optim later to maint).
* When "git update-ref -d" removes a ref that is packed, it left
empty directories under $GIT_DIR/refs/ for
(merge 5f03e5126d wc/packed-ref-removal-cleanup later to maint).
* Other code cleanup, docfix, build fix, etc.
(merge f451960708 dl/cat-file-doc-cleanup later to maint).
(merge 12604a8d0c sv/t9801-test-path-is-file-cleanup later to maint).
(merge ea7e63921c jr/doc-ignore-typofix later to maint).
(merge 23c781f173 ps/update-ref-trans-hook-doc later to maint).
(merge 42efa1231a jk/filter-branch-sha256 later to maint).
(merge 4c8e3dca6e tb/push-simple-uses-branch-merge-config later to maint).
(merge 6534d436a2 bs/asciidoctor-installation-hints later to maint).
(merge 47957485b3 ab/read-tree later to maint).
(merge 2be927f3d1 ab/diff-no-index-tests later to maint).
(merge 76593c09bb ab/detox-gettext-tests later to maint).
(merge 28e29ee38b jc/doc-format-patch-clarify later to maint).
(merge fc12b6fdde fm/user-manual-use-preface later to maint).
(merge dba94e3a85 cc/test-helper-bloom-usage-fix later to maint).
(merge 61a7660516 hn/reftable-tables-doc-update later to maint).
(merge 81ed96a9b2 jt/fetch-pack-request-fix later to maint).
(merge 151b6c2dd7 jc/doc-do-not-capitalize-clarification later to maint).
(merge 9160068ac6 js/access-nul-emulation-on-windows later to maint).
(merge 7a14acdbe6 po/diff-patch-doc later to maint).
(merge f91371b948 pw/patience-diff-clean-up later to maint).
(merge 3a7f0908b6 mt/clean-clean later to maint).
(merge d4e2d15a8b ab/streaming-simplify later to maint).
(merge 0e59f7ad67 ah/merge-ort-i18n later to maint).
(merge e6f68f62e0 ls/typofix later to maint).
----------------------------------------------------------------
Changes since v2.31.0 are as follows:
Adam Dinwoodie (1):
cygwin: disallow backslashes in file names
Alex Henrie (1):
merge-ort: split "distinct types" message into two translatable messages
Andrey Bienkowski (1):
doc: clarify the filename encoding in git diff
Andrzej Hunt (24):
Makefile: update 'make fuzz-all' docs to reflect modern clang
symbolic-ref: don't leak shortened refname in check_symref()
reset: free instead of leaking unneeded ref
clone: free or UNLEAK further pointers when finished
worktree: fix leak in dwim_branch()
init: remove git_init_db_config() while fixing leaks
init-db: silence template_dir leak when converting to absolute path
fsmonitor: avoid global-buffer-overflow READ when checking trivial response
parse-options: convert bitfield values to use binary shift
parse-options: don't leak alias help messages
transport: also free remote_refs in transport_disconnect()
merge-ort: only do pointer arithmetic for non-empty lists
revision: free remainder of old commit list in limit_list
wt-status: fix multiple small leaks
ls-files: free max_prefix when done
bloom: clear each bloom_key after use
branch: FREE_AND_NULL instead of NULL'ing real_ref
builtin/bugreport: don't leak prefixed filename
builtin/check-ignore: clear_pathspec before returning
builtin/checkout: clear pending objects after diffing
mailinfo: also free strbuf lists when clearing mailinfo
builtin/for-each-ref: free filter and UNLEAK sorting.
builtin/rebase: release git_format_patch_opt too
builtin/rm: avoid leaking pathspec and seen
Atharva Raykar (1):
userdiff: add support for Scheme
Bagas Sanjaya (1):
INSTALL: note on using Asciidoctor to build doc
Bruno Albuquerque (1):
object-info: support for retrieving object info
Charvi Mendiratta (23):
sequencer: pass todo_item to do_pick_commit()
sequencer: use const variable for commit message comments
rebase -i: add fixup [-C | -c] command
t3437: test script for fixup [-C|-c] options in interactive rebase
rebase -i: teach --autosquash to work with amend!
doc/git-rebase: add documentation for fixup [-C|-c] options
sequencer: fixup the datatype of the 'flag' argument
sequencer: rename a few functions
rebase -i: clarify and fix 'fixup -c' rebase-todo help
t/lib-rebase: update the documentation of FAKE_LINES
t/t3437: fixup here-docs in the 'setup' test
t/t3437: remove the dependency of 'expected-message' file from tests
t/t3437: check the author date of fixed up commit
t/t3437: simplify and document the test helpers
t/t3437: use named commits in the tests
t/t3437: fixup the test 'multiple fixup -c opens editor once'
doc/rebase -i: fix typo in the documentation of 'fixup' command
sequencer: export and rename subject_length()
commit: add amend suboption to --fixup to create amend! commit
commit: add a reword suboption to --fixup
t7500: add tests for --fixup=[amend|reword] options
t3437: use --fixup with options to create amend! commit
doc/git-commit: add documentation for fixup=[amend|reword] options
Chinmoy Chakraborty (1):
column, range-diff: downcase option description
Christian Couder (1):
test-bloom: fix missing 'bloom' from usage string
Christopher Schenk (1):
remote-curl: fall back to basic auth if Negotiate fails
Dennis Ameling (2):
cmake(install): fix double .exe suffixes
cmake(install): include vcpkg dlls
Denton Liu (13):
git-cat-file.txt: monospace args, placeholders and filenames
git-cat-file.txt: remove references to "sha1"
stash show: teach --include-untracked and --only-untracked
stash show: learn stash.showIncludeUntracked
git-completion.bash: pass $__git_subcommand_idx from __git_main()
git-completion.bash: extract from else in _git_stash()
git-completion.bash: use __gitcomp_builtin() in _git_stash()
git-completion.bash: separate some commands onto their own line
git-completion.bash: rename to $__git_cmd_idx
git-completion.bash: use $__git_cmd_idx in more places
git-completion.bash: consolidate cases in _git_stash()
t3905: correct test title
stash show: fix segfault with --{include,only}-untracked
Derrick Stolee (54):
commit-graph: create local repository pointer
commit-graph: use config to specify generation type
csum-file: make hashwrite() more readable
sparse-index: design doc and format update
t/perf: add performance test for sparse operations
t1092: clean up script quoting
sparse-index: add guard to ensure full index
sparse-index: implement ensure_full_index()
t1092: compare sparse-checkout to sparse-index
test-read-cache: print cache entries with --table
test-tool: don't force full index
unpack-trees: ensure full index
sparse-checkout: hold pattern list in index
sparse-index: add 'sdir' index extension
sparse-index: convert from full to sparse
submodule: sparse-index should not collapse links
unpack-trees: allow sparse directories
sparse-index: check index conversion happens
sparse-index: add index.sparse config option
sparse-checkout: toggle sparse index from builtin
sparse-checkout: disable sparse-index
cache-tree: integrate with sparse directory entries
sparse-index: loose integration with cache_tree_verify()
p2000: add sparse-index repos
maintenance: simplify prefetch logic
sparse-index: API protection strategy
*: remove 'const' qualifier for struct index_state
read-cache: expand on query into sparse-directory entry
cache: move ensure_full_index() to cache.h
add: ensure full index
checkout-index: ensure full index
checkout: ensure full index
commit: ensure full index
difftool: ensure full index
fsck: ensure full index
grep: ensure full index
ls-files: ensure full index
merge-index: ensure full index
rm: ensure full index
stash: ensure full index
update-index: ensure full index
dir: ensure full index
entry: ensure full index
merge-recursive: ensure full index
pathspec: ensure full index
read-cache: ensure full index
resolve-undo: ensure full index
revision: ensure full index
name-hash: don't add directories to name_hash
sparse-index: expand_to_path()
name-hash: use expand_to_path()
fetch: add --prefetch option
maintenance: use 'git fetch --prefetch'
maintenance: respect remote.*.skipFetchAll
Elijah Newren (40):
diffcore-rename: use directory rename guided basename comparisons
diffcore-rename: provide basic implementation of idx_possible_rename()
diffcore-rename: add a mapping of destination names to their indices
Move computation of dir_rename_count from merge-ort to diffcore-rename
diffcore-rename: add function for clearing dir_rename_count
diffcore-rename: move dir_rename_counts into dir_rename_info struct
diffcore-rename: extend cleanup_dir_rename_info()
diffcore-rename: compute dir_rename_counts in stages
diffcore-rename: limit dir_rename_counts computation to relevant dirs
diffcore-rename: compute dir_rename_guess from dir_rename_counts
diffcore-rename: enable filtering possible rename sources
merge-ort: precompute subset of sources for which we need rename detection
merge-ort: add data structures for an alternate tree traversal
merge-ort: introduce wrappers for alternate tree traversal
merge-ort: precompute whether directory rename detection is needed
merge-ort: use relevant_sources to filter possible rename sources
merge-ort: skip rename detection entirely if possible
diffcore-rename: avoid doing basename comparisons for irrelevant sources
diffcore-rename: take advantage of "majority rules" to skip more renames
merge-ort, diffcore-rename: tweak dirs_removed and relevant_source type
merge-ort: record the reason that we want a rename for a directory
diffcore-rename: only compute dir_rename_count for relevant directories
diffcore-rename: check if we have enough renames for directories early on
diffcore-rename: add computation of number of unknown renames
merge-ort: record the reason that we want a rename for a file
diffcore-rename: determine which relevant_sources are no longer relevant
merge-ort: use STABLE_QSORT instead of QSORT where required
merge-ort: add a special minimal index just for renormalization
merge-ort: have ll_merge() use a special attr_index for renormalization
merge-ort: let renormalization change modify/delete into clean delete
merge-ort: support subtree shifting
t6428: new test for SKIP_WORKTREE handling and conflicts
merge-ort: implement CE_SKIP_WORKTREE handling with conflicted entries
t: mark several submodule merging tests as fixed under merge-ort
merge-ort: write $GIT_DIR/AUTO_MERGE whenever we hit a conflict
merge-recursive: add a bunch of FIXME comments documenting known bugs
Revert "merge-ort: ignore the directory rename split conflict for now"
t6423: mark remaining expected failure under merge-ort as such
Add testing with merge-ort merge strategy
sequencer: fix edit handling for cherry-pick and revert messages
Eric Sunshine (1):
merge(s): apply consistent punctuation to "up to date" messages
Firmin Martin (1):
user-manual.txt: assign preface an id and a title
Georgios Kontaxis (1):
gitweb: add "e-mail privacy" feature to redact e-mail addresses
Han Xin (1):
pack-objects: fix comment of reused_chunk.difference
Han-Wen Nienhuys (3):
reftable: document an alternate cleanup method on Windows
refs: print errno for read_raw_ref if GIT_TRACE_REFS is set
refs/debug: trace into reflog expiry too
Jeff Hostetler (13):
pkt-line: eliminate the need for static buffer in packet_write_gently()
simple-ipc: design documentation for new IPC mechanism
simple-ipc: add win32 implementation
unix-socket: eliminate static unix_stream_socket() helper function
unix-socket: add backlog size option to unix_stream_listen()
unix-socket: disallow chdir() when creating unix domain sockets
unix-stream-server: create unix domain socket under lock
convert: make convert_attrs() and convert structs public
convert: add [async_]convert_to_working_tree_ca() variants
convert: add get_stream_filter_ca() variant
convert: add classification for conv_attrs struct
simple-ipc: add Unix domain socket implementation
t0052: add simple-ipc tests and t/helper/test-simple-ipc tool
Jeff King (40):
add open_nofollow() helper
attr: convert "macro_ok" into a flags field
exclude: add flags parameter to add_patterns()
attr: do not respect symlinks for in-tree .gitattributes
exclude: do not respect symlinks for in-tree .gitignore
mailmap: do not respect symlinks for in-tree .mailmap
p5303: add missing &&-chains
p5303: measure time to repack with keep
builtin/pack-objects.c: rewrite honor-pack-keep logic
packfile: add kept-pack cache for find_kept_pack_entry()
t/perf: handle worktrees as test repos
t/perf: avoid copying worktree files from test repo
t7003: test ref rewriting explicitly
filter-branch: drop multiple-ancestor warning
filter-branch: drop $_x40 glob
bisect: peel annotated tags to commits
t: annotate !PTHREADS tests with !FAIL_PREREQS
ref-filter: fix NULL check for parse object failure
midx.c: improve cache locality in midx_pack_order_cmp()
pack-objects: update "nr_seen" progress based on pack-reused count
is_promisor_object(): free tree buffer after parsing
lookup_unknown_object(): take a repository argument
revision: avoid parsing with --exclude-promisor-objects
pack-bitmap: clean up include_check after use
prune: save reachable-from-recent objects with bitmaps
t5300: modernize basic tests
t5300: check that we produced expected number of deltas
pack-objects: clamp negative window size to 0
t5316: check behavior of pack-objects --depth=0
pack-objects: clamp negative depth to 0
docs/format-patch: mention handling of merges
t7415: remove out-dated comment about translation
fsck_tree(): fix shadowed variable
fsck_tree(): wrap some long lines
t7415: rename to expand scope
t7450: test verify_path() handling of gitmodules
t7450: test .gitmodules symlink matching against obscured names
t0060: test ntfs/hfs-obscured dotfiles
fsck: warn about symlinked dotfiles we'll open with O_NOFOLLOW
docs: document symlink restrictions for dot-files
Jerry Zhang (3):
git-apply: try threeway first when "--3way" is used
git-apply: allow simultaneous --cached and --3way options
apply: adjust messages to account for --3way changes
Joachim Kuebart (2):
git-p4: ensure complex branches are cloned correctly
git-p4: speed up search for branch parent
Johannes Schindelin (10):
pkt-line: do not issue flush packets in write_packetized_*()
pkt-line: add PACKET_READ_GENTLE_ON_READ_ERROR option
pkt-line: add options argument to read_packetized_to_strbuf()
fsmonitor: fix memory corruption in some corner cases
fsmonitor: do not forget to release the token in `discard_index()`
SECURITY: describe how to report vulnerabilities
Document how we do embargoed releases
cmake: support SKIP_DASHED_BUILT_INS
cmake: add a preparatory work-around to accommodate `vcpkg`
msvc: avoid calling `access("NUL", flags)`
John Szakmeister (2):
http: store credential when PKI auth is used
http: drop the check for an empty proxy password before approving
Jonathan Tan (8):
t5606: run clone branch name test with protocol v2
fetch-pack: buffer object-format with other args
fetch-pack: refactor process_acks()
fetch-pack: refactor add_haves()
fetch-pack: refactor command and capability write
fetch: teach independent negotiation (no packfile)
send-pack: support push negotiation
t5601: mark protocol v2-only test
Josh Soref (1):
merge: fix swapped "up to date" message components
Julien Richard (1):
doc: .gitignore documentation typofix
Junio C Hamano (25):
builtin/repack.c: reword comment around pack-objects flags
xcalloc: use CALLOC_ARRAY() when applicable
cocci: allow xcalloc(1, size)
The first batch in 2.32 cycle
The second batch
format-patch: give an overview of what a "patch" message is
The third patch
Git 2.31.1
The fourth batch
The fifth batch
The sixth batch
The seventh batch
The eighth batch
The ninth batch
doc: clarify "do not capitalize the first word" rule
The tenth batch
The eleventh (aka "ort") batch
The twelfth batch
The thirteenth batch
CodingGuidelines: explicitly allow "local" for test scripts
The fourteenth batch
The fifteenth batch
The sixteenth batch
The seventeenth batch
Git 2.32-rc0
Kyle Meyer (1):
config.txt: add missing period
Li Linchao (1):
builtin/clone.c: add --reject-shallow option
Louis Sautier (1):
pretty: fix a typo in the documentation for %(trailers)
Luke Shumaker (30):
.gitignore: ignore 'git-subtree' as a build artifact
subtree: t7900: update for having the default branch name be 'main'
subtree: t7900: use test-lib.sh's test_count
subtree: t7900: use consistent formatting
subtree: t7900: comment subtree_test_create_repo
subtree: t7900: use 'test' for string equality
subtree: t7900: delete some dead code
subtree: t7900: fix 'verify one file change per commit'
subtree: t7900: rename last_commit_message to last_commit_subject
subtree: t7900: add a test for the -h flag
subtree: t7900: add porcelain tests for 'pull' and 'push'
subtree: don't have loose code outside of a function
subtree: more consistent error propagation
subtree: drop support for git < 1.7
subtree: use `git merge-base --is-ancestor`
subtree: use git-sh-setup's `say`
subtree: use more explicit variable names for cmdline args
subtree: use "$*" instead of "$@" as appropriate
subtree: don't fuss with PATH
subtree: use "^{commit}" instead of "^0"
subtree: parse revs in individual cmd_ functions
subtree: remove duplicate check
subtree: add comments and sanity checks
subtree: don't let debug and progress output clash
subtree: have $indent actually affect indentation
subtree: give the docs a once-over
subtree: allow --squash to be used with --rejoin
subtree: allow 'split' flags to be passed to 'push'
subtree: push: allow specifying a local rev other than HEAD
subtree: be stricter about validating flags
Lénaïc Huard (1):
maintenance: fix two memory leaks
Martin Ågren (2):
git-repack.txt: remove spurious ")"
pretty-formats.txt: add missing space
Matheus Tavares (30):
convert: fail gracefully upon missing clean cmd on required filter
symlinks: update comment on threaded_check_leading_path()
checkout: don't follow symlinks when removing entries
entry: extract a header file for entry.c functions
entry: make fstat_output() and read_blob_entry() public
entry: extract update_ce_after_write() from write_entry()
entry: move conv_attrs lookup up to checkout_entry()
entry: add checkout_entry_ca() taking preloaded conv_attrs
add: include magic part of pathspec on --refresh error
t3705: add tests for `git add` in sparse checkouts
add: make --chmod and --renormalize honor sparse checkouts
pathspec: allow to ignore SKIP_WORKTREE entries on index matching
refresh_index(): add flag to ignore SKIP_WORKTREE entries
add: warn when asked to update SKIP_WORKTREE entries
rm: honor sparse checkout patterns
pkt-line: do not report packet write errors twice
unpack-trees: add basic support for parallel checkout
parallel-checkout: make it truly parallel
parallel-checkout: add configuration options
parallel-checkout: support progress displaying
parallel-checkout: add design documentation
make_transient_cache_entry(): optionally alloc from mem_pool
builtin/checkout.c: complete parallel checkout support
checkout-index: add parallel checkout support
parallel-checkout: add tests for basic operations
parallel-checkout: add tests related to path collisions
t0028: extract encoding helpers to lib-encoding.sh
parallel-checkout: add tests related to .gitattributes
ci: run test round with parallel-checkout enabled
clean: remove unnecessary variable
Nicholas Clark (1):
submodule update: silence underlying fetch with "--quiet"
Nipunn Koorapati (3):
fsmonitor: skip lstat deletion check during git diff-index
fsmonitor: add assertion that fsmonitor is valid to check_removed
fsmonitor: add perf test for git diff HEAD
Patrick Steinhardt (17):
githooks.txt: replace mentions of SHA-1 specific properties
githooks.txt: clarify documentation on reference-transaction hook
pack-bitmap: avoid traversal of objects referenced by uninteresting tag
uploadpack.txt: document implication of `uploadpackfilter.allow`
revision: mark commit parents as NOT_USER_GIVEN
list-objects: move tag processing into its own function
list-objects: support filtering by tag and commit
list-objects: implement object type filter
pack-bitmap: implement object type filter
pack-bitmap: implement combined filter
rev-list: allow filtering of provided items
config: rename `git_etc_config()`
config: unify code paths to get global config paths
config: allow overriding of global and system configuration
t1300: fix unset of GIT_CONFIG_NOSYSTEM leaking into subsequent tests
git.txt: fix synopsis of `--config-env` missing the equals sign
git: support separate arg for `--config-env`'s value
Peter Oliver (1):
doc: point to diff attribute in patch format docs
Phillip Wood (6):
rebase -i: only write fixup-message when it's needed
sequencer: factor out code to append squash message
rebase -i: comment out squash!/fixup! subjects from squash message
word diff: handle zero length matches
patience diff: remove unnecessary string comparisons
patience diff: remove unused variable
Rafael Silva (1):
repack: avoid loosening promisor objects in partial clones
Ramkumar Ramachandra (1):
Add entry for Ramkumar Ramachandra
Ramsay Jones (1):
bisect--helper: use BISECT_TERMS in 'bisect skip' command
René Scharfe (12):
pretty: add %(describe)
pretty: add merge and exclude options to %(describe)
t4205: assert %(describe) test coverage
pretty: document multiple %(describe) being inconsistent
fix xcalloc() argument order
archive: expand only a single %(describe) per archive
git-compat-util.h: drop trailing semicolon from macro definition
use CALLOC_ARRAY
vcs-svn: remove header files as well
block-sha1: drop trailing semicolon from macro definition
mem-pool: drop trailing semicolon from macro definition
daemon: sanitize all directory separators
Robert Foss (1):
git-send-email: Respect core.hooksPath setting
SZEDER Gábor (1):
Makefile: add missing dependencies of 'config-list.h'
Sardorbek Imomaliev (1):
work around zsh comment in __git_complete_worktree_paths
Sergey Organov (5):
diff-merges: introduce --diff-merges=on
diff-merges: refactor set_diff_merges()
diff-merges: adapt -m to enable default diff format
diff-merges: introduce log.diffMerges config variable
doc/diff-options: document new --diff-merges features
Shubham Verma (1):
t9801: replace test -f with test_path_is_file
Taylor Blau (28):
packfile: introduce 'find_kept_pack_entry()'
revision: learn '--no-kept-objects'
builtin/pack-objects.c: add '--stdin-packs' option
builtin/repack.c: add '--geometric' option
builtin/repack.c: do not repack single packs with --geometric
t7703: test --geometric repack with loose objects
builtin/repack.c: assign pack split later
builtin/repack.c: be more conservative with unsigned overflows
Documentation/git-push.txt: correct configuration typo
builtin/pack-objects.c: ignore missing links with --stdin-packs
builtin/multi-pack-index.c: inline 'flags' with options
builtin/multi-pack-index.c: don't handle 'progress' separately
builtin/multi-pack-index.c: define common usage with a macro
builtin/multi-pack-index.c: split sub-commands
builtin/multi-pack-index.c: don't enter bogus cmd_mode
builtin/multi-pack-index.c: display usage on unrecognized command
t/helper/test-read-midx.c: add '--show-objects'
pack-bitmap: add 'test_bitmap_commits()' helper
t/helper/test-bitmap.c: initial commit
builtin/pack-objects.c: respect 'pack.preferBitmapTips'
midx: allow marking a pack as preferred
midx: don't free midx_name early
midx: keep track of the checksum
midx: make some functions non-static
Documentation/technical: describe multi-pack reverse indexes
pack-revindex: read multi-pack reverse indexes
pack-write.c: extract 'write_rev_file_order'
pack-revindex: write multi-pack reverse indexes
Torsten Bögershausen (3):
git mv foo FOO ; git mv foo bar gave an assert
precompose_utf8: make precompose_string_if_needed() public
macOS: precompose startup_info->prefix
Ville Skyttä (2):
completion: audit and guard $GIT_* against unset use
completion: avoid aliased command lookup error in nounset mode
Will Chandler (1):
refs: cleanup directories when deleting packed ref
ZheNing Hu (7):
commit: add --trailer option
format-patch: allow a non-integral version numbers
ref-filter: get rid of show_ref_array_item
ref-filter: reuse output buffer
pretty: provide human date format
docs: correct descript of trailer.<token>.command
trailer: add new .cmd config option
brian m. carlson (14):
builtin/init-db: handle bare clones when core.bare set to false
hash: add an algo member to struct object_id
Always use oidread to read into struct object_id
http-push: set algorithm when reading object ID
hash: add a function to finalize object IDs
Use the final_oid_fn to finalize hashing of object IDs
builtin/pack-redundant: avoid casting buffers to struct object_id
hash: set, copy, and use algo field in struct object_id
hash: provide per-algorithm null OIDs
builtin/show-index: set the algorithm for object IDs
commit-graph: don't store file hashes as struct object_id
builtin/pack-objects: avoid using struct object_id for pack hash
hex: default to the_hash_algo on zero algorithm value
hex: print objects using the hash algorithm member
Ævar Arnfjörð Bjarmason (87):
grep/pcre2: drop needless assignment + assert() on opt->pcre2
grep/pcre2: drop needless assignment to NULL
grep/pcre2: correct reference to grep_init() in comment
grep/pcre2: prepare to add debugging to pcre2_malloc()
grep/pcre2: add GREP_PCRE2_DEBUG_MALLOC debug mode
grep/pcre2: use compile-time PCREv2 version test
grep/pcre2: use pcre2_maketables_free() function
grep/pcre2: actually make pcre2 use custom allocator
grep/pcre2: move back to thread-only PCREv2 structures
grep/pcre2: move definitions of pcre2_{malloc,free}
Makefile: guard against TEST_OBJS in the environment
Makefile: split up long OBJECTS line
Makefile: sort OBJECTS assignment for subsequent change
Makefile: split OBJECTS into OBJECTS and GIT_OBJS
Makefile: add {program,xdiff,test,git,fuzz}-objs & objects targets
remote: add camel-cased *.tagOpt key, like clone
remote: write camel-cased *.pushRemote on rename
fsck.c: refactor and rename common config callback
show tests: add test for "git show <tree>"
ls-files tests: add meaningful --with-tree tests
tree.c API: move read_tree() into builtin/ls-files.c
ls-files: don't needlessly pass around stage variable
ls-files: refactor away read_tree()
archive: stop passing "stage" through read_tree_recursive()
tree.h API: expose read_tree_1() as read_tree_at()
tree.h API: simplify read_tree_recursive() signature
diff --no-index tests: add test for --exit-code
diff --no-index tests: test mode normalization
rebase: remove transitory rebase.useBuiltin setting & env
mktag tests: fix broken "&&" chain
fsck.h: use designed initializers for FSCK_OPTIONS_{DEFAULT,STRICT}
fsck.h: use "enum object_type" instead of "int"
fsck.c: rename variables in fsck_set_msg_type() for less confusion
fsck.c: remove (mostly) redundant append_msg_id() function
fsck.c: rename remaining fsck_msg_id "id" to "msg_id"
fsck.c: refactor fsck_msg_type() to limit scope of "int msg_type"
fsck.h: move FSCK_{FATAL,INFO,ERROR,WARN,IGNORE} into an enum
fsck.h: re-order and re-assign "enum fsck_msg_type"
fsck.c: call parse_msg_type() early in fsck_set_msg_type()
fsck.c: undefine temporary STR macro after use
fsck.c: give "FOREACH_MSG_ID" a more specific name
fsck.[ch]: move FOREACH_FSCK_MSG_ID & fsck_msg_id from *.c to *.h
fsck.c: pass along the fsck_msg_id in the fsck_error callback
fsck.c: add an fsck_set_msg_type() API that takes enums
fsck.c: move gitmodules_{found,done} into fsck_options
fetch-pack: don't needlessly copy fsck_options
fetch-pack: use file-scope static struct for fsck_options
fetch-pack: use new fsck API to printing dangling submodules
Makefile: add QUIET_GEN to "tags" and "TAGS" targets
git-send-email: replace "map" in void context with "for"
git-send-email: test full --validate output
git-send-email: refactor duplicate $? checks into a function
git-send-email: improve --validate error output
bash completion: complete CHERRY_PICK_HEAD
config.c: remove last remnant of GIT_TEST_GETTEXT_POISON
userdiff style: re-order drivers in alphabetical order
userdiff style: declare patterns with consistent style
userdiff style: normalize pascal regex declaration
userdiff: add and use for_each_userdiff_driver()
userdiff tests: explicitly test "default" pattern
userdiff tests: list builtin drivers via test-tool
userdiff: remove support for "broken" tests
blame tests: don't rely on t/t4018/ directory
blame tests: simplify userdiff driver test
rebase tests: camel-case rebase.rescheduleFailedExec consistently
rebase: don't override --no-reschedule-failed-exec with config
Documentation/Makefile: make $(wildcard howto/*.txt) a var
Documentation/Makefile: make doc.dep dependencies a variable again
doc lint: Perl "strict" and "warnings" in lint-gitlink.perl
doc lint: fix bugs in, simplify and improve lint script
doc lint: lint and fix missing "GIT" end sections
doc lint: lint relative section order
docs: fix linting issues due to incorrect relative section order
svn tests: remove legacy re-setup from init-clone test
svn tests: refactor away a "set -e" in test body
tests: remove all uses of test_i18cmp
usage.c: don't copy/paste the same comment three times
api docs: document BUG() in api-error-handling.txt
api docs: document that BUG() emits a trace2 error event
pretty tests: simplify %aI/%cI date format test
pretty tests: give --date/format tests a better description
sparse-index.c: remove set_index_sparse_config()
streaming.c: avoid forward declarations
streaming.c: remove enum/function/vtbl indirection
streaming.c: remove {open,close,read}_method_decl() macros
streaming.c: stop passing around "object_info *" to open()
streaming.c: move {open,close,read} from vtable to "struct git_istream"
Øystein Walle (2):
transport: respect verbosity when setting upstream
add: die if both --dry-run and --interactive are given
Đoàn Trần Công Danh (6):
mailinfo: load default metainfo_charset lazily
mailinfo: stop parsing options manually
mailinfo: warn if CRLF found in decoded base64/QP email
mailinfo: allow squelching quoted CRLF warning
mailinfo: allow stripping quoted CR without warning
am: learn to process quoted lines that ends with CRLF
^ permalink raw reply [relevance 3%]
* What's cooking in git.git (May 2021, #02; Wed, 12)
@ 2021-05-12 7:46 3% Junio C Hamano
0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2021-05-12 7:46 UTC (permalink / raw)
To: git
Here are the topics that have been cooking. Commits prefixed with '-' are
only in 'seen' (formerly 'pu'---proposed updates) while commits prefixed
with '+' are in 'next'. The ones marked with '.' do not appear in any of
the integration branches, but I am still holding onto them.
Copies of the source code to Git live in many repositories, and the
following is a list of the ones I push into or their mirrors. Some
repositories have only a subset of branches.
With maint, master, next, seen, todo:
git://git.kernel.org/pub/scm/git/git.git/
git://repo.or.cz/alt-git.git/
https://kernel.googlesource.com/pub/scm/git/git/
https://github.com/git/git/
https://gitlab.com/git-vcs/git/
With all the integration branches and topics broken out:
https://github.com/gitster/git/
Even though the preformatted documentation in HTML and man format
are not sources, they are published in these repositories for
convenience (replace "htmldocs" with "manpages" for the manual
pages):
git://git.kernel.org/pub/scm/git/git-htmldocs.git/
https://github.com/gitster/git-htmldocs.git/
Release tarballs are available at:
https://www.kernel.org/pub/software/scm/git/
--------------------------------------------------
[Graduated to 'master']
* ab/doc-lint (2021-04-10) 7 commits
(merged to 'next' on 2021-04-30 at 285b9c4d64)
+ docs: fix linting issues due to incorrect relative section order
+ doc lint: lint relative section order
+ doc lint: lint and fix missing "GIT" end sections
+ doc lint: fix bugs in, simplify and improve lint script
+ doc lint: Perl "strict" and "warnings" in lint-gitlink.perl
+ Documentation/Makefile: make doc.dep dependencies a variable again
+ Documentation/Makefile: make $(wildcard howto/*.txt) a var
Dev support.
* ab/pretty-date-format-tests (2021-04-27) 2 commits
(merged to 'next' on 2021-04-30 at bd2d680c23)
+ pretty tests: give --date/format tests a better description
+ pretty tests: simplify %aI/%cI date format test
(this branch is used by zh/pretty-date-human.)
Tweak a few tests for "log --format=..." that show timestamps in
various formats.
* ab/rebase-no-reschedule-failed-exec (2021-04-10) 2 commits
(merged to 'next' on 2021-04-30 at 97d56cc674)
+ rebase: don't override --no-reschedule-failed-exec with config
+ rebase tests: camel-case rebase.rescheduleFailedExec consistently
"git rebase --[no-]reschedule-failed-exec" did not work well with
its configuration variable, which has been corrected.
* ab/svn-tests-set-e-fix (2021-04-12) 2 commits
(merged to 'next' on 2021-04-30 at 41f7907187)
+ svn tests: refactor away a "set -e" in test body
+ svn tests: remove legacy re-setup from init-clone test
Test clean-up.
* ad/cygwin-no-backslashes-in-paths (2021-04-30) 1 commit
(merged to 'next' on 2021-04-30 at e2cf03a8aa)
+ cygwin: disallow backslashes in file names
Cygwin pathname handling fix.
* ah/plugleaks (2021-04-28) 12 commits
(merged to 'next' on 2021-04-30 at ccb3984029)
+ builtin/rm: avoid leaking pathspec and seen
+ builtin/rebase: release git_format_patch_opt too
+ builtin/for-each-ref: free filter and UNLEAK sorting.
+ mailinfo: also free strbuf lists when clearing mailinfo
+ builtin/checkout: clear pending objects after diffing
+ builtin/check-ignore: clear_pathspec before returning
+ builtin/bugreport: don't leak prefixed filename
+ branch: FREE_AND_NULL instead of NULL'ing real_ref
+ bloom: clear each bloom_key after use
+ ls-files: free max_prefix when done
+ wt-status: fix multiple small leaks
+ revision: free remainder of old commit list in limit_list
Plug various leans reported by LSAN.
* bc/hash-transition-interop-part-1 (2021-04-27) 13 commits
(merged to 'next' on 2021-05-03 at 19dba33d17)
+ hex: print objects using the hash algorithm member
+ hex: default to the_hash_algo on zero algorithm value
+ builtin/pack-objects: avoid using struct object_id for pack hash
+ commit-graph: don't store file hashes as struct object_id
+ builtin/show-index: set the algorithm for object IDs
+ hash: provide per-algorithm null OIDs
+ hash: set, copy, and use algo field in struct object_id
+ builtin/pack-redundant: avoid casting buffers to struct object_id
+ Use the final_oid_fn to finalize hashing of object IDs
+ hash: add a function to finalize object IDs
+ http-push: set algorithm when reading object ID
+ Always use oidread to read into struct object_id
+ hash: add an algo member to struct object_id
SHA-256 transition.
* dl/complete-stash (2021-03-24) 3 commits
(merged to 'next' on 2021-03-24 at ce573a99cc)
+ git-completion.bash: use __gitcomp_builtin() in _git_stash()
+ git-completion.bash: extract from else in _git_stash()
+ git-completion.bash: pass $__git_subcommand_idx from __git_main()
(this branch is used by dl/complete-stash-updates.)
The command line completion (in contrib/) for "git stash" has been
updated.
* dl/complete-stash-updates (2021-04-27) 4 commits
(merged to 'next' on 2021-05-03 at 8901a9c431)
+ git-completion.bash: consolidate cases in _git_stash()
+ git-completion.bash: use $__git_cmd_idx in more places
+ git-completion.bash: rename to $__git_cmd_idx
+ git-completion.bash: separate some commands onto their own line
(this branch uses dl/complete-stash.)
Further update the command line completion (in contrib/) for "git
stash".
* hn/trace-reflog-expiry (2021-04-27) 1 commit
(merged to 'next' on 2021-04-30 at 6bc9a79b61)
+ refs/debug: trace into reflog expiry too
The reflog expiry machinery has been taught to emit trace events.
* jc/test-allows-local (2021-05-03) 1 commit
(merged to 'next' on 2021-05-04 at 768071c554)
+ CodingGuidelines: explicitly allow "local" for test scripts
Document that our test can use "local" keyword.
* jk/doc-format-patch-skips-merges (2021-05-03) 1 commit
(merged to 'next' on 2021-05-04 at cac68f7193)
+ docs/format-patch: mention handling of merges
Document that "format-patch" skips merges.
* jk/pack-objects-negative-options-fix (2021-05-03) 5 commits
(merged to 'next' on 2021-05-04 at 4a61f68cf0)
+ pack-objects: clamp negative depth to 0
+ t5316: check behavior of pack-objects --depth=0
+ pack-objects: clamp negative window size to 0
+ t5300: check that we produced expected number of deltas
+ t5300: modernize basic tests
Options to "git pack-objects" that take numeric values like
--window and --depth should not accept negative values; the input
validation has been tightened.
* jk/prune-with-bitmap-fix (2021-04-29) 2 commits
(merged to 'next' on 2021-04-30 at bede558f31)
+ prune: save reachable-from-recent objects with bitmaps
+ pack-bitmap: clean up include_check after use
When the reachability bitmap is in effect, the "do not lose
recently created objects and those that are reachable from them"
safety to protect us from races were disabled by mistake, which has
been corrected.
* jk/symlinked-dotgitx-cleanup (2021-05-04) 9 commits
(merged to 'next' on 2021-05-04 at deca6ca662)
+ docs: document symlink restrictions for dot-files
+ fsck: warn about symlinked dotfiles we'll open with O_NOFOLLOW
+ t0060: test ntfs/hfs-obscured dotfiles
+ t7450: test .gitmodules symlink matching against obscured names
+ t7450: test verify_path() handling of gitmodules
+ t7415: rename to expand scope
+ fsck_tree(): wrap some long lines
+ fsck_tree(): fix shadowed variable
+ t7415: remove out-dated comment about translation
Various test and documentation updates about .gitsomething paths
that are symlinks.
* js/merge-already-up-to-date-message-reword (2021-05-03) 2 commits
(merged to 'next' on 2021-05-04 at b2e696ecd7)
+ merge: fix swapped "up to date" message components
+ merge(s): apply consistent punctuation to "up to date" messages
A few variants of informational message "Already up-to-date" has
been rephrased.
* jz/apply-3way-first-message-fix (2021-04-29) 1 commit
(merged to 'next' on 2021-04-30 at 829167e135)
+ apply: adjust messages to account for --3way changes
When we swapped the order of --3way fallback, we forgot to adjust
the message we give when the first method fails and the second
method is attempted (which used to be "direct application failed
hence we try 3way", now it is the other way around).
* ll/clone-reject-shallow (2021-05-05) 1 commit
(merged to 'next' on 2021-05-06 at 4a165ffc96)
+ t5601: mark protocol v2-only test
Fix tests when forced to use v0 protocol.
* ls/subtree (2021-04-28) 30 commits
(merged to 'next' on 2021-05-03 at 12c5fe8677)
+ subtree: be stricter about validating flags
+ subtree: push: allow specifying a local rev other than HEAD
+ subtree: allow 'split' flags to be passed to 'push'
+ subtree: allow --squash to be used with --rejoin
+ subtree: give the docs a once-over
+ subtree: have $indent actually affect indentation
+ subtree: don't let debug and progress output clash
+ subtree: add comments and sanity checks
+ subtree: remove duplicate check
+ subtree: parse revs in individual cmd_ functions
+ subtree: use "^{commit}" instead of "^0"
+ subtree: don't fuss with PATH
+ subtree: use "$*" instead of "$@" as appropriate
+ subtree: use more explicit variable names for cmdline args
+ subtree: use git-sh-setup's `say`
+ subtree: use `git merge-base --is-ancestor`
+ subtree: drop support for git < 1.7
+ subtree: more consistent error propagation
+ subtree: don't have loose code outside of a function
+ subtree: t7900: add porcelain tests for 'pull' and 'push'
+ subtree: t7900: add a test for the -h flag
+ subtree: t7900: rename last_commit_message to last_commit_subject
+ subtree: t7900: fix 'verify one file change per commit'
+ subtree: t7900: delete some dead code
+ subtree: t7900: use 'test' for string equality
+ subtree: t7900: comment subtree_test_create_repo
+ subtree: t7900: use consistent formatting
+ subtree: t7900: use test-lib.sh's test_count
+ subtree: t7900: update for having the default branch name be 'main'
+ .gitignore: ignore 'git-subtree' as a build artifact
"git subtree" updates.
* mt/add-rm-in-sparse-checkout (2021-04-08) 7 commits
(merged to 'next' on 2021-04-30 at ddead90eaf)
+ rm: honor sparse checkout patterns
+ add: warn when asked to update SKIP_WORKTREE entries
+ refresh_index(): add flag to ignore SKIP_WORKTREE entries
+ pathspec: allow to ignore SKIP_WORKTREE entries on index matching
+ add: make --chmod and --renormalize honor sparse checkouts
+ t3705: add tests for `git add` in sparse checkouts
+ add: include magic part of pathspec on --refresh error
(this branch is used by ds/status-with-sparse-index.)
"git add" and "git rm" learned not to touch those paths that are
outside of sparse checkout.
* nc/submodule-update-quiet (2021-05-03) 1 commit
(merged to 'next' on 2021-05-04 at 09bed89b60)
+ submodule update: silence underlying fetch with "--quiet"
"git submodule update --quiet" did not propagate the quiet option
down to underlying "git fetch", which has been corrected.
* po/diff-patch-doc (2021-04-28) 1 commit
(merged to 'next' on 2021-04-30 at 58af0f4b5e)
+ doc: point to diff attribute in patch format docs
Doc update.
* ps/config-env-option-with-separate-value (2021-04-30) 2 commits
(merged to 'next' on 2021-04-30 at 46fbcd08c1)
+ git: support separate arg for `--config-env`'s value
+ git.txt: fix synopsis of `--config-env` missing the equals sign
"git --config-env var=val cmd" weren't accepted (only
--config-env=var=val was).
* ps/config-global-override (2021-04-27) 4 commits
(merged to 'next' on 2021-04-30 at 5ce435d98f)
+ t1300: fix unset of GIT_CONFIG_NOSYSTEM leaking into subsequent tests
(merged to 'next' on 2021-04-20 at 82578c696d)
+ config: allow overriding of global and system configuration
+ config: unify code paths to get global config paths
+ config: rename `git_etc_config()`
Replace GIT_CONFIG_NOSYSTEM mechanism to decline from reading the
system-wide configuration file with GIT_CONFIG_SYSTEM that lets
users specify from which file to read the system-wide configuration
(setting it to an empty file would essentially be the same as
setting NOSYSTEM), and introduce GIT_CONFIG_GLOBAL to override the
per-user configuration in $HOME/.gitconfig.
* ps/rev-list-object-type-filter (2021-04-19) 8 commits
(merged to 'next' on 2021-04-30 at fa0ceacde4)
+ rev-list: allow filtering of provided items
+ pack-bitmap: implement combined filter
+ pack-bitmap: implement object type filter
+ list-objects: implement object type filter
+ list-objects: support filtering by tag and commit
+ list-objects: move tag processing into its own function
+ revision: mark commit parents as NOT_USER_GIVEN
+ uploadpack.txt: document implication of `uploadpackfilter.allow`
"git rev-list" learns the "--filter=object:type=<type>" option,
which can be used to exclude objects of the given kind from the
packfile generated by pack-objects.
* rj/bisect-skip-honor-terms (2021-04-30) 1 commit
(merged to 'next' on 2021-05-04 at f7c11bba06)
+ bisect--helper: use BISECT_TERMS in 'bisect skip' command
"git bisect skip" when custom words are used for new/old did not
work, which has been corrected.
* rs/repack-without-loosening-promised-objects (2021-04-28) 1 commit
(merged to 'next' on 2021-05-03 at 6681b49209)
+ repack: avoid loosening promisor objects in partial clones
"git repack -A -d" in a partial clone unnecessarily loosened
objects in promisor pack.
* si/zsh-complete-comment-fix (2021-05-04) 1 commit
(merged to 'next' on 2021-05-04 at a15c1ea590)
+ work around zsh comment in __git_complete_worktree_paths
Portability fix for command line completion script (in contrib/).
* zh/format-ref-array-optim (2021-04-20) 2 commits
(merged to 'next' on 2021-04-30 at b6c835cc51)
+ ref-filter: reuse output buffer
+ ref-filter: get rid of show_ref_array_item
"git (branch|tag) --format=..." has been micro-optimized.
* zh/pretty-date-human (2021-04-27) 1 commit
(merged to 'next' on 2021-04-30 at 2320ad8fb0)
+ pretty: provide human date format
(this branch uses ab/pretty-date-format-tests.)
"git log --format=..." placeholders learned %ah/%ch placeholders to
request the --date=human output.
* zh/trailer-cmd (2021-05-04) 2 commits
(merged to 'next' on 2021-05-04 at fb677877f7)
+ trailer: add new .cmd config option
+ docs: correct descript of trailer.<token>.command
The way the command line specified by the trailer.<token>.command
configuration variable receives the end-user supplied value was
both error prone and misleading. An alternative to achieve the
same goal in a safer and more intuitive way has been added, as
the trailer.<token>.cmd configuration variable, to replace it.
--------------------------------------------------
[New Topics]
* mt/clean-clean (2021-05-07) 1 commit
(merged to 'next' on 2021-05-07 at 51e40b7ddd)
+ clean: remove unnecessary variable
Code clean-up.
Will merge to 'master'.
* ah/merge-ort-i18n (2021-05-11) 1 commit
(merged to 'next' on 2021-05-12 at bda497af01)
+ merge-ort: split "distinct types" message into two translatable messages
An i18n fix.
Will merge to 'master'.
* en/dir-traversal (2021-05-12) 8 commits
- dir: update stale description of treat_directory()
- dir: traverse into untracked directories if they may have ignored subfiles
- dir: avoid unnecessary traversal into ignored directory
- t3001, t7300: add testcase showcasing missed directory traversal
- t7300: add testcase showing unnecessary traversal into ignored directory
- ls-files: error out on -i unless -o or -c are specified
- dir: report number of visited directories and paths with trace2
- dir: convert trace calls to trace2 equivalents
"git clean" and "git ls-files -i" had confusion around working on
or showing ignored paths inside an ignored directory, which has
been corrected.
Will merge to 'next'?
* ma/typofixes (2021-05-10) 2 commits
(merged to 'next' on 2021-05-12 at 99cc0d265e)
+ pretty-formats.txt: add missing space
+ git-repack.txt: remove spurious ")"
A couple of trivial typofixes.
Will merge to 'master'.
* zh/ref-filter-push-remote-fix (2021-05-12) 1 commit
- ref-filter: fix read invalid union member bug
The handling of "%(push)" formatting element of "for-each-ref" and
friends was broken when the same codepath started handling
"%(push:<what>)", which has been corrected.
Will merge to 'next'?
* lh/maintenance-leakfix (2021-05-12) 1 commit
- maintenance: fix two memory leaks
Will merge to 'next'.
* so/log-m-implies-p (2021-05-11) 7 commits
- diff-merges: let -m imply -p
- diff-merges: rename "combined_imply_patch" to "merges_imply_patch"
- stash list: stop passing "-m" to "git list"
- git-svn: stop passing "-m" to "git rev-list"
- t4062: diff-index -S can take its string as a separate arg
- diff-merges: move specific diff-index "-m" handling to diff-index
- t4013: add test for "git diff-index -m"
The "-m" option in "git log -m" that does not specify which format,
if any, of diff is desired did not have any visible effect; it now
implies some form of diff (by default "--patch") is produced.
Expecting a reroll.
cf. <871radwfl7.fsf@osv.gnss.ru>
* wc/packed-ref-removal-cleanup (2021-05-11) 1 commit
- refs: cleanup directories when deleting packed ref
When "git update-ref -d" removes a ref that is packed, it left
empty directories under $GIT_DIR/refs/ for
Will merge to 'next'.
* ew/sha256-clone-remote-curl-fix (2021-05-12) 1 commit
- remote-curl: fix clone on sha256 repos
"git clone" from SHA256 repository by Git built with SHA-1 as the
default hash algorithm over the dumb HTTP protocol did not
correctly set up the resulting repository, which has been corrected.
Will merge to 'next'.
* bc/doc-asciidoctor-to-man-wo-xmlto (2021-05-12) 2 commits
- doc: remove GNU_ROFF option
- doc: add an option to have Asciidoctor build man pages directly
An option to render the manual pages via AsciiDoctor bypassing
xmlto has been introduced.
Will merge to 'next'?
--------------------------------------------------
[Stalled]
* ag/merge-strategies-in-c (2021-03-17) 15 commits
- sequencer: use the "octopus" merge strategy without forking
- sequencer: use the "resolve" strategy without forking
- merge: use the "octopus" strategy without forking
- merge: use the "resolve" strategy without forking
- merge-octopus: rewrite in C
- merge-recursive: move better_branch_name() to merge.c
- merge-resolve: rewrite in C
- merge-one-file: rewrite in C
- update-index: move add_cacheinfo() to read-cache.c
- merge-index: add a new way to invoke `git-merge-one-file'
- merge-index: drop the index
- merge-index: libify merge_one_path() and merge_all()
- t6060: add tests for removed files
- t6060: modify multiple files to expose a possible issue with merge-index
- t6407: modernise tests
The resolve and octopus merge strategy backends have been rewritten
in C.
Expecting a (hopefully final) reroll.
cf. <nycvar.QRO.7.76.6.2103241142220.50@tvgsbejvaqbjf.bet>
* tv/p4-fallback-encoding (2021-04-30) 1 commit
- git-p4: git-p4.fallbackEncoding to specify non UTF-8 charset
"git p4" learns the fallbackEncoding configuration variable to
safely accept changeset descriptions that aren't written in UTF-8.
* ds/status-with-sparse-index (2021-04-28) 10 commits
- fsmonitor: test with sparse index
- status: use sparse-index throughout
- status: skip sparse-checkout percentage with sparse-index
- dir.c: accept a directory as part of cone-mode patterns
- unpack-trees: stop recursing into sparse directories
- unpack-trees: compare sparse directories correctly
- unpack-trees: preserve cache_bottom
- t1092: add tests for status/add and sparse files
- Merge branch 'mt/add-rm-in-sparse-checkout' into ds/status-with-sparse-index
- Merge branch 'ds/sparse-index-protections' into ds/status-with-sparse-index
"git status" codepath learned to work with sparsely populated index
without hydrating it fully.
What's the status of this thing?
* jh/rfc-builtin-fsmonitor (2021-05-04) 24 commits
- fsmonitor: only enable it in non-bare repositories
- t7527: test status with untracked-cache and fsmonitor--daemon
- p7519: add fsmonitor--daemon
- t7527: create test for fsmonitor--daemon
- fsmonitor: force update index when fsmonitor token advances
- fsmonitor--daemon: use a cookie file to sync with file system
- fsmonitor--daemon:: introduce client delay for testing
- fsmonitor--daemon: periodically truncate list of modified files
- fsmonitor--daemon: implement handle_client callback
- fsmonitor-fs-listen-macos: implement FSEvent listener on MacOS
- fsmonitor-fs-listen-macos: add macos header files for FSEvent
- fsmonitor-fs-listen-win32: implement FSMonitor backend on Windows
- fsmonitor--daemon: create token-based changed path cache
- fsmonitor--daemon: define token-ids
- fsmonitor--daemon: add pathname classification
- fsmonitor--daemon: implement daemon command options
- fsmonitor-fs-listen-macos: stub in backend for MacOS
- fsmonitor-fs-listen-win32: stub in backend for Windows
- fsmonitor--daemon: implement client command options
- fsmonitor--daemon: add a built-in fsmonitor daemon
- fsmonitor: introduce `core.useBuiltinFSMonitor` to call the daemon via IPC
- config: FSMonitor is repository-specific
- fsmonitor-ipc: create client routines for git-fsmonitor--daemon
- Merge branch 'jh/simple-ipc' into jh/rfc-builtin-fsmonitor
An attempt to write and ship with a watchman equivalent tailored
for our use.
* ab/describe-tests-fix (2021-05-11) 5 commits
- describe tests: support -C in "check_describe"
- describe tests: fix nested "test_expect_success" call
- describe tests: don't rely on err.actual from "check_describe"
- describe tests: refactor away from glob matching
- describe tests: improve test for --work-tree & --dirty
(this branch uses ab/test-lib-updates.)
Various updates to tests around "git describe"
Waiting for the base topic to solidify.
* ab/pickaxe-pcre2 (2021-05-11) 22 commits
- xdiff-interface: replace discard_hunk_line() with a flag
- xdiff users: use designated initializers for out_line
- pickaxe -G: don't special-case create/delete
- pickaxe -G: terminate early on matching lines
- xdiff-interface: allow early return from xdiff_emit_line_fn
- xdiff-interface: prepare for allowing early return
- pickaxe -S: slightly optimize contains()
- pickaxe: rename variables in has_changes() for brevity
- pickaxe -S: support content with NULs under --pickaxe-regex
- pickaxe: assert that we must have a needle under -G or -S
- pickaxe: refactor function selection in diffcore-pickaxe()
- perf: add performance test for pickaxe
- pickaxe/style: consolidate declarations and assignments
- diff.h: move pickaxe fields together again
- pickaxe: die when --find-object and --pickaxe-all are combined
- pickaxe: die when -G and --pickaxe-regex are combined
- pickaxe tests: add missing test for --no-pickaxe-regex being an error
- pickaxe tests: test for -G, -S and --find-object incompatibility
- pickaxe tests: add test for "log -S" not being a regex
- pickaxe tests: add test for diffgrep_consume() internals
- pickaxe tests: refactor to use test_commit --append --printf
- grep/pcre2 tests: reword comments referring to kwset
(this branch uses ab/test-lib-updates.)
Rewrite the backend for "diff -G/-S" to use pcre2 engine when
available.
Waiting for the base topic to solidify.
* es/config-hooks (2021-03-10) 36 commits
. run-command: stop thinking about hooks
. git-send-email: use 'git hook run' for 'sendemail-validate'
. bugreport: use hook_exists instead of find_hook
. receive-pack: convert receive hooks to hook.h
. post-update: use hook.h library
. proc-receive: acquire hook list from hook.h
. receive-pack: convert 'update' hook to hook.h
. reference-transaction: look for hooks in config
. transport: convert pre-push hook to use config
. hook: convert 'post-rewrite' hook to config
. hooks: convert 'post-checkout' hook to hook library
. git-p4: use 'git hook' to run hooks
. receive-pack: convert push-to-checkout hook to hook.h
. read-cache: convert post-index-change hook to use config
. rebase: teach pre-rebase to use hook.h
. gc: use hook library for pre-auto-gc hook
. merge: use config-based hooks for post-merge hook
. am: convert applypatch hooks to use config
. commit: use config-based hooks
. hooks: allow callers to capture output
. run-command: allow capturing of collated output
. hook: provide stdin by string_list or callback
. run-command: add stdin callback for parallelization
. hook: allow specifying working directory for hooks
. hook: allow parallel hook execution
. run-command: allow stdin for run_processes_parallel
. hook: support passing stdin to hooks
. hook: introduce hook_exists()
. hook: add 'run' subcommand
. parse-options: parse into strvec
. hook: implement hookcmd.<name>.skip
. hook: teach hook.runHookDir
. hook: include hookdir hook in list
. hook: add list command
. hook: scaffolding for git-hook subcommand
. doc: propose hooks managed by the config
The "hooks defined in config" topic.
--------------------------------------------------
[Cooking]
* ab/trace2-squelch-gcc-warning (2021-05-11) 1 commit
- trace2: refactor to avoid gcc warning under -O3
Workaround compiler warnings.
cf. <YJrIMbr6VkYGQMfs@coredump.intra.peff.net>
* hn/refs-errno-cleanup (2021-04-30) 8 commits
- refs: explicitly propagate errno from refs_read_raw_ref
- refs: stop setting EINVAL and ELOOP in symref resolution
- refs: clear errno return in refs_resolve_ref_unsafe()
- refs: add failure_errno to refs_read_raw_ref() signature
- refs: make errno output explicit for refs_resolve_ref_unsafe
- refs: make errno output explicit for read_raw_ref_fn
- refs/files-backend: stop setting errno from lock_ref_oid_basic
- refs: remove EINVAL specification from the errno sideband in read_raw_ref_fn
Futz with the way 'errno' is relied on in the refs API to carry the
failure modes up the callchain.
Waiting for reviews.
* en/ort-perf-batch-11 (2021-05-04) 13 commits
- merge-ort, diffcore-rename: employ cached renames when possible
- merge-ort: handle interactions of caching and rename/rename(1to1) cases
- merge-ort: add helper functions for using cached renames
- merge-ort: preserve cached renames for the appropriate side
- merge-ort: avoid accidental API mis-use
- merge-ort: add code to check for whether cached renames can be reused
- merge-ort: populate caches of rename detection results
- merge-ort: add data structures for in-memory caching of rename detection
- t6429: testcases for remembering renames
- fast-rebase: write conflict state to working tree, index, and HEAD
- fast-rebase: change assert() to BUG()
- Documentation/technical: describe remembering renames optimization
- t6423: rename file within directory that other side renamed
Optimize out repeated rename detection in a sequence of mergy
operations.
Waiting for reviews.
* dd/mailinfo-quoted-cr (2021-05-10) 6 commits
(merged to 'next' on 2021-05-12 at a4bcfd18b9)
+ am: learn to process quoted lines that ends with CRLF
+ mailinfo: allow stripping quoted CR without warning
+ mailinfo: allow squelching quoted CRLF warning
+ mailinfo: warn if CRLF found in decoded base64/QP email
+ mailinfo: stop parsing options manually
+ mailinfo: load default metainfo_charset lazily
"git mailinfo" (hence "git am") learned the "--quoted-cr" option to
control how lines ending with CRLF wrapped in base64 or qp are
handled.
Will merge to 'master'.
* ab/perl-makefile-cleanup (2021-05-06) 4 commits
(merged to 'next' on 2021-05-10 at 23b48398e6)
+ perl: use mock i18n functions under NO_GETTEXT=Y
+ Makefile: regenerate *.pm on NO_PERL_CPAN_FALLBACKS change
+ Makefile: regenerate perl/build/* if GIT-PERL-DEFINES changes
+ Makefile: don't re-define PERL_DEFINES
Build procedure clean-up.
Will merge to 'master'.
* ab/sparse-index-cleanup (2021-05-06) 1 commit
(merged to 'next' on 2021-05-10 at bbb0239571)
+ sparse-index.c: remove set_index_sparse_config()
Code clean-up.
Will merge to 'master'.
* ab/streaming-simplify (2021-05-06) 5 commits
(merged to 'next' on 2021-05-07 at 0992a78c75)
+ streaming.c: move {open,close,read} from vtable to "struct git_istream"
+ streaming.c: stop passing around "object_info *" to open()
+ streaming.c: remove {open,close,read}_method_decl() macros
+ streaming.c: remove enum/function/vtbl indirection
+ streaming.c: avoid forward declarations
Code clean-up.
Will merge to 'master'.
* jk/p4-locate-branch-point-optim (2021-05-06) 2 commits
(merged to 'next' on 2021-05-07 at 0fa60c3af3)
+ git-p4: speed up search for branch parent
+ git-p4: ensure complex branches are cloned correctly
"git p4" learned to find branch points more efficiently.
Will merge to 'master'.
* ow/no-dryrun-in-add-i (2021-05-07) 1 commit
(merged to 'next' on 2021-05-07 at e822750e3a)
+ add: die if both --dry-run and --interactive are given
"git add -i --dry-run" does not dry-run, which was surprising. The
combination of options has taught to error out.
Will merge to 'master'.
* pw/patience-diff-clean-up (2021-05-05) 2 commits
(merged to 'next' on 2021-05-06 at 1ce651569c)
+ patience diff: remove unused variable
+ patience diff: remove unnecessary string comparisons
Code clean-up.
Will merge to 'master'.
* pw/word-diff-zero-width-matches (2021-05-05) 1 commit
(merged to 'next' on 2021-05-06 at e5653da568)
+ word diff: handle zero length matches
The word-diff mode has been taught to work better with a word
regexp that can match an empty string.
Will merge to 'master'.
* ls/fast-export-signed (2021-05-03) 5 commits
- fast-export, fast-import: add support for signed-commits
- fast-export: do not modify memory from get_commit_buffer
- git-fast-export.txt: clarify why 'verbatim' may not be a good idea
- fast-export: rename --signed-tags='warn' to 'warn-verbatim'
- git-fast-import.txt: add missing LF in the BNF
"git fast-export" offers a way to control how signed tags are
handled; the mechanism has been extended to allow specifying how
signed commits are handled as well.
Expecting a reroll.
cf. <xmqqa6pca0pv.fsf@gitster.g>, <xmqq1rao9zev.fsf@gitster.g>
* mt/parallel-checkout-part-3 (2021-05-05) 8 commits
(merged to 'next' on 2021-05-07 at 0393d61c0c)
+ ci: run test round with parallel-checkout enabled
+ parallel-checkout: add tests related to .gitattributes
+ t0028: extract encoding helpers to lib-encoding.sh
+ parallel-checkout: add tests related to path collisions
+ parallel-checkout: add tests for basic operations
+ checkout-index: add parallel checkout support
+ builtin/checkout.c: complete parallel checkout support
+ make_transient_cache_entry(): optionally alloc from mem_pool
The final part of "parallel checkout".
Will merge to 'master'.
* ba/object-info (2021-04-20) 1 commit
(merged to 'next' on 2021-05-07 at e2cb0e4ef1)
+ object-info: support for retrieving object info
Over-the-wire protocol learns a new request type to ask for object
sizes given a list of object names.
Will merge to 'master'.
* hn/prep-tests-for-reftable (2021-04-28) 21 commits
- t1415: set REFFILES for test specific to storage format
- t4202: mark bogus head hash test with REFFILES
- t7003: check reflog existence only for REFFILES
- t7900: mark pack-refs tests as REFFILES
- t1404: mark tests that muck with .git directly as REFFILES.
- t2017: mark --orphan/logAllRefUpdates=false test as REFFILES
- t1414: mark corruption test with REFFILES
- t1407: require REFFILES for for_each_reflog test
- test-lib: provide test prereq REFFILES
- t5304: use "reflog expire --all" to clear the reflog
- t5304: restyle: trim empty lines, drop ':' before >
- t7003: use rev-parse rather than FS inspection
- t5000: inspect HEAD using git-rev-parse
- t5000: reformat indentation to the latest fashion
- t1301: fix typo in error message
- t1413: use tar to save and restore entire .git directory
- t1401-symbolic-ref: avoid direct filesystem access
- t5601: read HEAD using rev-parse
- t9300: check ref existence using test-helper rather than a file system check
- t/helper/ref-store: initialize oid in resolve-ref
- t4202: split testcase for invalid HEAD symref and HEAD hash
Preliminary clean-up of tests before the main reftable changes
hits the codebase.
Waiting for reviews.
* jt/push-negotiation (2021-05-05) 6 commits
(merged to 'next' on 2021-05-06 at 644a1bc4ee)
+ send-pack: support push negotiation
+ fetch: teach independent negotiation (no packfile)
+ fetch-pack: refactor command and capability write
+ fetch-pack: refactor add_haves()
+ fetch-pack: refactor process_acks()
+ Merge branch 'jt/fetch-pack-request-fix' into jt/push-negotiation
"git push" learns to discover common ancestor with the receiving
end over protocol v2.
Will merge to 'master'.
* tb/multi-pack-bitmaps (2021-04-10) 23 commits
- p5326: perf tests for MIDX bitmaps
- p5310: extract full and partial bitmap tests
- midx: respect 'GIT_TEST_MULTI_PACK_INDEX_WRITE_BITMAP'
- t7700: update to work with MIDX bitmap test knob
- t5319: don't write MIDX bitmaps in t5319
- t5310: disable GIT_TEST_MULTI_PACK_INDEX_WRITE_BITMAP
- t5326: test multi-pack bitmap behavior
- t/helper/test-read-midx.c: add --checksum mode
- t5310: move some tests to lib-bitmap.sh
- pack-bitmap: write multi-pack bitmaps
- pack-bitmap: read multi-pack bitmaps
- pack-bitmap.c: introduce 'bitmap_is_preferred_refname()'
- pack-bitmap.c: introduce 'nth_bitmap_object_oid()'
- pack-bitmap.c: introduce 'bitmap_num_objects()'
- midx: respect 'core.multiPackIndex' when writing
- midx: clear auxiliary .rev after replacing the MIDX
- midx: make a number of functions non-static
- Documentation: describe MIDX-based bitmaps
- Documentation: build 'technical/bitmap-format' by default
- pack-bitmap-write.c: free existing bitmaps
- pack-bitmap-write.c: gracefully fail to write non-closed bitmaps
- pack-bitmap.c: harden 'test_bitmap_walk()' to check type bitmaps
- Merge branch 'tb/pack-preferred-tips-to-give-bitmap' into tb/multi-pack-bitmaps
The reachability bitmap file used to be generated only for a single
pack, but now we've learned to generate bitmaps for history that
span across multiple packfiles.
Waiting for reviews.
cf. <cover.1617991824.git.me@ttaylorr.com>
* ab/test-lib-updates (2021-05-11) 11 commits
- test-lib: split up and deprecate test_create_repo()
- test-lib: do not show advice about init.defaultBranch under --verbose
- test-lib: reformat argument list in test_create_repo()
- submodule tests: use symbolic-ref --short to discover branch name
- test-lib functions: add --printf option to test_commit
- describe tests: convert setup to use test_commit
- test-lib functions: add an --annotated option to "test_commit"
- test-lib-functions: document test_commit --no-tag
- test-lib-functions: reword "test_commit --append" docs
- test-lib tests: remove dead GIT_TEST_FRAMEWORK_SELFTEST variable
- test-lib: bring $remove_trash out of retirement
(this branch is used by ab/describe-tests-fix and ab/pickaxe-pcre2.)
Test clean-up.
* ao/p4-avoid-decoding (2021-04-12) 2 commits
- git-p4: do not decode data from perforce by default
- git-p4: avoid decoding more data from perforce
"git p4" in Python-2 days used to accept a lot more kinds of data
from Perforce server as uninterrupted byte sequence, but after
switching to Python-3, too many things are expected to be in UTF-8,
which broke traditional use cases.
Waiting for reviews.
* ma/t0091-bugreport-fix (2021-04-12) 1 commit
- t0091-bugreport.sh: actually verify some content of report
Test fix.
Expecting a reroll.
cf. <YHYZTLl90rkWWVOr@google.com>, <87a6q22dei.fsf@evledraar.gmail.com>
* mr/bisect-in-c-4 (2021-04-11) 4 commits
- bisect--helper: retire `--bisect-next-check` subcommand
- bisect--helper: reimplement `bisect_run` shell function in C
- bisect--helper: reimplement `bisect_visualize()`shell function in C
- run-command: make `exists_in_PATH()` non-static
The codepaths involved in running "git bisect visualize" and "git
bisect run" has been rewritten in C.
Expecting a reroll.
cf. <xmqq35vwh8qk.fsf@gitster.g>, <xmqqy2doftrj.fsf@gitster.g>,
<CAP8UFD3X24F3qgefHpi00PM-KUk+vcqxwy2Dbngbyj7ciavCVQ@mail.gmail.com>
May want to boost the test coverage.
* hn/reftable (2021-04-20) 28 commits
- t1404: annotate test cases with REFFILES
- t1401,t2011: parameterize HEAD.lock for REFTABLE
- t1301: document what needs to be done for REFTABLE
- Add "test-tool dump-reftable" command.
- git-prompt: prepare for reftable refs backend
- Reftable support for git-core
- reftable: add dump utility
- reftable: implement stack, a mutable database of reftable files.
- reftable: implement refname validation
- reftable: add merged table view
- reftable: add a heap-based priority queue for reftable records
- reftable: reftable file level tests
- reftable: read reftable files
- reftable: generic interface to tables
- reftable: write reftable files
- reftable: a generic binary tree implementation
- reftable: reading/writing blocks
- Provide zlib's uncompress2 from compat/zlib-compat.c
- reftable: (de)serialization for the polymorphic record type.
- reftable: add blocksource, an abstraction for random access reads
- reftable: utility functions
- reftable: add error related functionality
- reftable: add LICENSE
- init-db: set the_repository->hash_algo early on
- hash.h: provide constants for the hash IDs
- refs/debug: trace into reflog expiry too
- refs: document reflog_expire_fn's flag argument
- refs: ref_iterator_peel returns boolean, rather than peel_status
The "reftable" backend for the refs API.
Waiting for reviews.
--------------------------------------------------
[Discarded]
* ab/fsck-unexpected-type (2021-04-13) 6 commits
. fsck: report invalid object type-path combinations
. fsck: report invalid types recorded in objects
. object-store.h: move read_loose_object() below 'struct object_info'
. fsck: don't hard die on invalid object types
. fsck tests: refactor one test to use a sub-repo
. cache.h: move object functions to object-store.h
"git fsck" has been taught to report mismatch between expected and
actual types of an object better.
Retracted for now.
cf. <cover-0.5-00000000000-20210505T122816Z-avarab@gmail.com>
^ permalink raw reply [relevance 3%]
* What's cooking in git.git (May 2021, #01; Thu, 6)
@ 2021-05-06 5:37 3% Junio C Hamano
0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2021-05-06 5:37 UTC (permalink / raw)
To: git
Here are the topics that have been cooking. Commits prefixed with '-' are
only in 'seen' (formerly 'pu'---proposed updates) while commits prefixed
with '+' are in 'next'. The ones marked with '.' do not appear in any of
the integration branches, but I am still holding onto them.
Copies of the source code to Git live in many repositories, and the
following is a list of the ones I push into or their mirrors. Some
repositories have only a subset of branches.
With maint, master, next, seen, todo:
git://git.kernel.org/pub/scm/git/git.git/
git://repo.or.cz/alt-git.git/
https://kernel.googlesource.com/pub/scm/git/git/
https://github.com/git/git/
https://gitlab.com/git-vcs/git/
With all the integration branches and topics broken out:
https://github.com/gitster/git/
Even though the preformatted documentation in HTML and man format
are not sources, they are published in these repositories for
convenience (replace "htmldocs" with "manpages" for the manual
pages):
git://git.kernel.org/pub/scm/git/git-htmldocs.git/
https://github.com/gitster/git-htmldocs.git/
Release tarballs are available at:
https://www.kernel.org/pub/software/scm/git/
--------------------------------------------------
[Graduated to 'master']
* ab/pathname-encoding-doc (2021-04-20) 1 commit
(merged to 'next' on 2021-04-20 at a90562c59f)
+ doc: clarify the filename encoding in git diff
Clarify that pathnames recorded in Git trees are most often (but
not necessarily) encoded in UTF-8.
* ds/maintenance-prefetch-fix (2021-04-16) 4 commits
(merged to 'next' on 2021-04-16 at 0a1818e235)
+ maintenance: respect remote.*.skipFetchAll
+ maintenance: use 'git fetch --prefetch'
+ fetch: add --prefetch option
+ maintenance: simplify prefetch logic
The prefetch task in "git maintenance" assumed that "git fetch"
from any remote would fetch all its local branches, which would
fetch too much if the user is interested in only a subset of
branches there.
* ds/sparse-index (2021-03-30) 21 commits
(merged to 'next' on 2021-04-07 at f1290a7929)
+ p2000: add sparse-index repos
+ sparse-index: loose integration with cache_tree_verify()
+ cache-tree: integrate with sparse directory entries
+ sparse-checkout: disable sparse-index
+ sparse-checkout: toggle sparse index from builtin
+ sparse-index: add index.sparse config option
+ sparse-index: check index conversion happens
+ unpack-trees: allow sparse directories
+ submodule: sparse-index should not collapse links
+ sparse-index: convert from full to sparse
+ sparse-index: add 'sdir' index extension
+ sparse-checkout: hold pattern list in index
+ unpack-trees: ensure full index
+ test-tool: don't force full index
+ test-read-cache: print cache entries with --table
+ t1092: compare sparse-checkout to sparse-index
+ sparse-index: implement ensure_full_index()
+ sparse-index: add guard to ensure full index
+ t1092: clean up script quoting
+ t/perf: add performance test for sparse operations
+ sparse-index: design doc and format update
(this branch is used by ds/sparse-index-protections and ds/status-with-sparse-index.)
Both in-core and on-disk index has been updated to optionally omit
individual entries and replace them with the tree object that
corresponds to the directory that contains them when the "cone"
mode of sparse checkout is in use.
* ds/sparse-index-protections (2021-04-14) 26 commits
(merged to 'next' on 2021-04-17 at f1c40f89ba)
+ name-hash: use expand_to_path()
+ sparse-index: expand_to_path()
+ name-hash: don't add directories to name_hash
+ revision: ensure full index
+ resolve-undo: ensure full index
+ read-cache: ensure full index
+ pathspec: ensure full index
+ merge-recursive: ensure full index
+ entry: ensure full index
+ dir: ensure full index
+ update-index: ensure full index
+ stash: ensure full index
+ rm: ensure full index
+ merge-index: ensure full index
+ ls-files: ensure full index
+ grep: ensure full index
+ fsck: ensure full index
+ difftool: ensure full index
+ commit: ensure full index
+ checkout: ensure full index
+ checkout-index: ensure full index
+ add: ensure full index
+ cache: move ensure_full_index() to cache.h
+ read-cache: expand on query into sparse-directory entry
+ *: remove 'const' qualifier for struct index_state
+ sparse-index: API protection strategy
(this branch is used by ds/status-with-sparse-index; uses ds/sparse-index.)
Builds on top of the sparse-index infrastructure to mark operations
that are not ready to mark with the sparse index, causing them to
fall back on fully-populated index that they always have worked with.
* hn/refs-trace-errno (2021-04-12) 1 commit
(merged to 'next' on 2021-04-20 at 0816e49d22)
+ refs: print errno for read_raw_ref if GIT_TRACE_REFS is set
Show errno in the trace output in the error codepath that calls
read_raw_ref method.
* jk/promisor-optim (2021-04-13) 3 commits
(merged to 'next' on 2021-04-15 at 41f303ef9b)
+ revision: avoid parsing with --exclude-promisor-objects
+ lookup_unknown_object(): take a repository argument
+ is_promisor_object(): free tree buffer after parsing
(this branch is used by rs/repack-without-loosening-promised-objects.)
Handling of "promisor packs" that allows certain objects to be
missing and lazily retrievable has been optimized (a bit).
* mt/parallel-checkout-part-2 (2021-04-19) 5 commits
(merged to 'next' on 2021-04-20 at d4779b8864)
+ parallel-checkout: add design documentation
+ parallel-checkout: support progress displaying
+ parallel-checkout: add configuration options
+ parallel-checkout: make it truly parallel
+ unpack-trees: add basic support for parallel checkout
(this branch is used by mt/parallel-checkout-part-3.)
The checkout machinery has been taught to perform the actual
write-out of the files in parallel when able.
* mt/pkt-write-errors (2021-04-15) 1 commit
(merged to 'next' on 2021-04-16 at 4a82d89ff3)
+ pkt-line: do not report packet write errors twice
When packet_write() fails, we gave an extra error message
unnecessarily, which has been corrected.
* ow/push-quiet-set-upstream (2021-04-15) 1 commit
(merged to 'next' on 2021-04-16 at 9466d4ef38)
+ transport: respect verbosity when setting upstream
"git push --quiet --set-upstream" was not quiet when setting the
upstream branch configuration, which has been corrected.
* so/log-diff-merge (2021-04-16) 5 commits
(merged to 'next' on 2021-04-17 at 6c1eba8ee3)
+ doc/diff-options: document new --diff-merges features
+ diff-merges: introduce log.diffMerges config variable
+ diff-merges: adapt -m to enable default diff format
+ diff-merges: refactor set_diff_merges()
+ diff-merges: introduce --diff-merges=on
"git log" learned "--diff-merges=<style>" option, with an
associated configuration variable log.diffMerges.
* vs/completion-with-set-u (2021-04-16) 1 commit
(merged to 'next' on 2021-04-20 at 179933f961)
+ completion: avoid aliased command lookup error in nounset mode
Effort to make the command line completion (in contrib/) safe with
"set -u" continues.
--------------------------------------------------
[New Topics]
* ad/cygwin-no-backslashes-in-paths (2021-04-30) 1 commit
(merged to 'next' on 2021-04-30 at e2cf03a8aa)
+ cygwin: disallow backslashes in file names
Cygwin pathname handling fix.
Will merge to 'master'.
* hn/refs-errno-cleanup (2021-04-30) 8 commits
- refs: explicitly propagate errno from refs_read_raw_ref
- refs: stop setting EINVAL and ELOOP in symref resolution
- refs: clear errno return in refs_resolve_ref_unsafe()
- refs: add failure_errno to refs_read_raw_ref() signature
- refs: make errno output explicit for refs_resolve_ref_unsafe
- refs: make errno output explicit for read_raw_ref_fn
- refs/files-backend: stop setting errno from lock_ref_oid_basic
- refs: remove EINVAL specification from the errno sideband in read_raw_ref_fn
Futz with the way 'errno' is relied on in the refs API to carry the
failure modes up the callchain.
Waiting for reviews.
* jc/test-allows-local (2021-05-03) 1 commit
(merged to 'next' on 2021-05-04 at 768071c554)
+ CodingGuidelines: explicitly allow "local" for test scripts
Document that our test can use "local" keyword.
Will merge to 'master'.
* jk/doc-format-patch-skips-merges (2021-05-03) 1 commit
(merged to 'next' on 2021-05-04 at cac68f7193)
+ docs/format-patch: mention handling of merges
Document that "format-patch" skips merges.
Will merge to 'master'.
* jk/pack-objects-negative-options-fix (2021-05-03) 5 commits
(merged to 'next' on 2021-05-04 at 4a61f68cf0)
+ pack-objects: clamp negative depth to 0
+ t5316: check behavior of pack-objects --depth=0
+ pack-objects: clamp negative window size to 0
+ t5300: check that we produced expected number of deltas
+ t5300: modernize basic tests
Options to "git pack-objects" that take numeric values like
--window and --depth should not accept negative values; the input
validation has been tightened.
Will merge to 'master'.
* jk/symlinked-dotgitx-cleanup (2021-05-04) 9 commits
(merged to 'next' on 2021-05-04 at deca6ca662)
+ docs: document symlink restrictions for dot-files
+ fsck: warn about symlinked dotfiles we'll open with O_NOFOLLOW
+ t0060: test ntfs/hfs-obscured dotfiles
+ t7450: test .gitmodules symlink matching against obscured names
+ t7450: test verify_path() handling of gitmodules
+ t7415: rename to expand scope
+ fsck_tree(): wrap some long lines
+ fsck_tree(): fix shadowed variable
+ t7415: remove out-dated comment about translation
Various test and documentation updates about .gitsomething paths
that are symlinks.
Will merge to 'master'.
* nc/submodule-update-quiet (2021-05-03) 1 commit
(merged to 'next' on 2021-05-04 at 09bed89b60)
+ submodule update: silence underlying fetch with "--quiet"
"git submodule update --quiet" did not propagate the quiet option
down to underlying "git fetch", which has been corrected.
Will merge to 'master'.
* en/ort-perf-batch-11 (2021-05-04) 13 commits
- merge-ort, diffcore-rename: employ cached renames when possible
- merge-ort: handle interactions of caching and rename/rename(1to1) cases
- merge-ort: add helper functions for using cached renames
- merge-ort: preserve cached renames for the appropriate side
- merge-ort: avoid accidental API mis-use
- merge-ort: add code to check for whether cached renames can be reused
- merge-ort: populate caches of rename detection results
- merge-ort: add data structures for in-memory caching of rename detection
- t6429: testcases for remembering renames
- fast-rebase: write conflict state to working tree, index, and HEAD
- fast-rebase: change assert() to BUG()
- Documentation/technical: describe remembering renames optimization
- t6423: rename file within directory that other side renamed
Optimize out repeated rename detection in a sequence of mergy
operations.
Waiting for reviews.
* si/zsh-complete-comment-fix (2021-05-04) 1 commit
(merged to 'next' on 2021-05-04 at a15c1ea590)
+ work around zsh comment in __git_complete_worktree_paths
Portability fix for command line completion script (in contrib/).
Will merge to 'master'.
* dd/mailinfo-quoted-cr (2021-05-05) 5 commits
- am: learn to process quoted lines that ends with CRLF
- mailinfo: strip quoted CR on users' wish
- mailinfo: skip quoted CR on user's wish
- mailinfo: warn if CR found in base64/quoted-printable email
- mailinfo: avoid magic number in option parsing
"git mailinfo" (hence "git am") learned the "--quoted-cr" option to
control how lines ending with CRLF wrapped in base64 or qp are
handled.
Expecting a reroll.
cf. <YJK/ieA7fzB+h01t@danh.dev>
* ll/clone-reject-shallow (2021-05-05) 1 commit
(merged to 'next' on 2021-05-06 at 4a165ffc96)
+ t5601: mark protocol v2-only test
Fix tests when forced to use v0 protocol.
Will merge to 'master'.
* ab/perl-makefile-cleanup (2021-05-06) 4 commits
- perl: use mock i18n functions under NO_GETTEXT=Y
- Makefile: regenerate *.pm on NO_PERL_CPAN_FALLBACKS change
- Makefile: regenerate perl/build/* if GIT-PERL-DEFINES changes
- Makefile: don't re-define PERL_DEFINES
Build procedure clean-up.
Will merge to 'next'.
* ab/sparse-index-cleanup (2021-05-06) 1 commit
- sparse-index.c: remove set_index_sparse_config()
Code clean-up.
Will merge to 'next'.
* ab/streaming-simplify (2021-05-06) 5 commits
- streaming.c: move {open,close,read} from vtable to "struct git_istream"
- streaming.c: stop passing around "object_info *" to open()
- streaming.c: remove {open,close,read}_method_decl() macros
- streaming.c: remove enum/function/vtbl indirection
- streaming.c: avoid forward declarations
Code clean-up.
Will merge to 'next'.
* ab/trace2-squelch-bcc-warning (2021-05-05) 1 commit
- trace2: refactor to avoid gcc warning under -O3
Workaround compiler warnings.
* jk/p4-locate-branch-point-optim (2021-05-06) 2 commits
- git-p4: speed up search for branch parent
- git-p4: ensure complex branches are cloned correctly
"git p4" learned to find branch points more efficiently.
Will merge to 'next'.
* ow/no-dryrun-in-add-i (2021-05-06) 1 commit
- add: die if both --dry-run and --interactive are given
"git add -i --dry-run" does not dry-run, which was surprising. The
combination of options has taught to error out.
Will merge to 'next'.
* pw/patience-diff-clean-up (2021-05-05) 2 commits
(merged to 'next' on 2021-05-06 at 1ce651569c)
+ patience diff: remove unused variable
+ patience diff: remove unnecessary string comparisons
Code clean-up.
Will merge to 'master'.
* pw/word-diff-zero-width-matches (2021-05-05) 1 commit
(merged to 'next' on 2021-05-06 at e5653da568)
+ word diff: handle zero length matches
The word-diff mode has been taught to work better with a word
regexp that can match an empty string.
Will merge to 'master'.
--------------------------------------------------
[Stalled]
* jh/rfc-builtin-fsmonitor (2021-05-04) 24 commits
- fsmonitor: only enable it in non-bare repositories
- t7527: test status with untracked-cache and fsmonitor--daemon
- p7519: add fsmonitor--daemon
- t7527: create test for fsmonitor--daemon
- fsmonitor: force update index when fsmonitor token advances
- fsmonitor--daemon: use a cookie file to sync with file system
- fsmonitor--daemon:: introduce client delay for testing
- fsmonitor--daemon: periodically truncate list of modified files
- fsmonitor--daemon: implement handle_client callback
- fsmonitor-fs-listen-macos: implement FSEvent listener on MacOS
- fsmonitor-fs-listen-macos: add macos header files for FSEvent
- fsmonitor-fs-listen-win32: implement FSMonitor backend on Windows
- fsmonitor--daemon: create token-based changed path cache
- fsmonitor--daemon: define token-ids
- fsmonitor--daemon: add pathname classification
- fsmonitor--daemon: implement daemon command options
- fsmonitor-fs-listen-macos: stub in backend for MacOS
- fsmonitor-fs-listen-win32: stub in backend for Windows
- fsmonitor--daemon: implement client command options
- fsmonitor--daemon: add a built-in fsmonitor daemon
- fsmonitor: introduce `core.useBuiltinFSMonitor` to call the daemon via IPC
- config: FSMonitor is repository-specific
- fsmonitor-ipc: create client routines for git-fsmonitor--daemon
- Merge branch 'jh/simple-ipc' into jh/rfc-builtin-fsmonitor
An attempt to write and ship with a watchman equivalent tailored
for our use.
* ag/merge-strategies-in-c (2021-03-17) 15 commits
- sequencer: use the "octopus" merge strategy without forking
- sequencer: use the "resolve" strategy without forking
- merge: use the "octopus" strategy without forking
- merge: use the "resolve" strategy without forking
- merge-octopus: rewrite in C
- merge-recursive: move better_branch_name() to merge.c
- merge-resolve: rewrite in C
- merge-one-file: rewrite in C
- update-index: move add_cacheinfo() to read-cache.c
- merge-index: add a new way to invoke `git-merge-one-file'
- merge-index: drop the index
- merge-index: libify merge_one_path() and merge_all()
- t6060: add tests for removed files
- t6060: modify multiple files to expose a possible issue with merge-index
- t6407: modernise tests
The resolve and octopus merge strategy backends have been rewritten
in C.
Expecting a (hopefully final) reroll.
cf. <nycvar.QRO.7.76.6.2103241142220.50@tvgsbejvaqbjf.bet>
* ab/describe-tests-fix (2021-04-29) 5 commits
- describe tests: support -C in "check_describe"
- describe tests: fix nested "test_expect_success" call
- describe tests: don't rely on err.actual from "check_describe"
- describe tests: refactor away from glob matching
- describe tests: improve test for --work-tree & --dirty
(this branch uses ab/test-lib-updates.)
Various updates to tests around "git describe"
Waiting for the base topic to solidify.
* ab/pickaxe-pcre2 (2021-04-29) 22 commits
- xdiff-interface: replace discard_hunk_line() with a flag
- xdiff users: use designated initializers for out_line
- pickaxe -G: don't special-case create/delete
- pickaxe -G: terminate early on matching lines
- xdiff-interface: allow early return from xdiff_emit_line_fn
- xdiff-interface: prepare for allowing early return
- pickaxe -S: slightly optimize contains()
- pickaxe: rename variables in has_changes() for brevity
- pickaxe -S: support content with NULs under --pickaxe-regex
- pickaxe: assert that we must have a needle under -G or -S
- pickaxe: refactor function selection in diffcore-pickaxe()
- perf: add performance test for pickaxe
- pickaxe/style: consolidate declarations and assignments
- diff.h: move pickaxe fields together again
- pickaxe: die when --find-object and --pickaxe-all are combined
- pickaxe: die when -G and --pickaxe-regex are combined
- pickaxe tests: add missing test for --no-pickaxe-regex being an error
- pickaxe tests: test for -G, -S and --find-object incompatibility
- pickaxe tests: add test for "log -S" not being a regex
- pickaxe tests: add test for diffgrep_consume() internals
- pickaxe tests: refactor to use test_commit --append --printf
- grep/pcre2 tests: reword comments referring to kwset
(this branch uses ab/test-lib-updates.)
Rewrite the backend for "diff -G/-S" to use pcre2 engine when
available.
Waiting for the base topic to solidify.
* es/config-hooks (2021-03-10) 36 commits
. run-command: stop thinking about hooks
. git-send-email: use 'git hook run' for 'sendemail-validate'
. bugreport: use hook_exists instead of find_hook
. receive-pack: convert receive hooks to hook.h
. post-update: use hook.h library
. proc-receive: acquire hook list from hook.h
. receive-pack: convert 'update' hook to hook.h
. reference-transaction: look for hooks in config
. transport: convert pre-push hook to use config
. hook: convert 'post-rewrite' hook to config
. hooks: convert 'post-checkout' hook to hook library
. git-p4: use 'git hook' to run hooks
. receive-pack: convert push-to-checkout hook to hook.h
. read-cache: convert post-index-change hook to use config
. rebase: teach pre-rebase to use hook.h
. gc: use hook library for pre-auto-gc hook
. merge: use config-based hooks for post-merge hook
. am: convert applypatch hooks to use config
. commit: use config-based hooks
. hooks: allow callers to capture output
. run-command: allow capturing of collated output
. hook: provide stdin by string_list or callback
. run-command: add stdin callback for parallelization
. hook: allow specifying working directory for hooks
. hook: allow parallel hook execution
. run-command: allow stdin for run_processes_parallel
. hook: support passing stdin to hooks
. hook: introduce hook_exists()
. hook: add 'run' subcommand
. parse-options: parse into strvec
. hook: implement hookcmd.<name>.skip
. hook: teach hook.runHookDir
. hook: include hookdir hook in list
. hook: add list command
. hook: scaffolding for git-hook subcommand
. doc: propose hooks managed by the config
The "hooks defined in config" topic.
--------------------------------------------------
[Cooking]
* dl/complete-stash-updates (2021-04-27) 4 commits
(merged to 'next' on 2021-05-03 at 8901a9c431)
+ git-completion.bash: consolidate cases in _git_stash()
+ git-completion.bash: use $__git_cmd_idx in more places
+ git-completion.bash: rename to $__git_cmd_idx
+ git-completion.bash: separate some commands onto their own line
(this branch uses dl/complete-stash.)
Further update the command line completion (in contrib/) for "git
stash".
Will merge to 'master'.
* ab/pretty-date-format-tests (2021-04-27) 2 commits
(merged to 'next' on 2021-04-30 at bd2d680c23)
+ pretty tests: give --date/format tests a better description
+ pretty tests: simplify %aI/%cI date format test
(this branch is used by zh/pretty-date-human.)
Tweak a few tests for "log --format=..." that show timestamps in
various formats.
Will merge to 'master'.
* ds/status-with-sparse-index (2021-04-28) 10 commits
- fsmonitor: test with sparse index
- status: use sparse-index throughout
- status: skip sparse-checkout percentage with sparse-index
- dir.c: accept a directory as part of cone-mode patterns
- unpack-trees: stop recursing into sparse directories
- unpack-trees: compare sparse directories correctly
- unpack-trees: preserve cache_bottom
- t1092: add tests for status/add and sparse files
- Merge branch 'mt/add-rm-in-sparse-checkout' into ds/status-with-sparse-index
- Merge branch 'ds/sparse-index-protections' into ds/status-with-sparse-index
(this branch uses mt/add-rm-in-sparse-checkout.)
"git status" codepath learned to work with sparsely populated index
without hydrating it fully.
* hn/trace-reflog-expiry (2021-04-27) 1 commit
(merged to 'next' on 2021-04-30 at 6bc9a79b61)
+ refs/debug: trace into reflog expiry too
The reflog expiry machinery has been taught to emit trace events.
Will merge to 'master'.
* jk/prune-with-bitmap-fix (2021-04-29) 2 commits
(merged to 'next' on 2021-04-30 at bede558f31)
+ prune: save reachable-from-recent objects with bitmaps
+ pack-bitmap: clean up include_check after use
When the reachability bitmap is in effect, the "do not lose
recently created objects and those that are reachable from them"
safety to protect us from races were disabled by mistake, which has
been corrected.
Will merge to 'master'.
* js/merge-already-up-to-date-message-reword (2021-05-03) 2 commits
(merged to 'next' on 2021-05-04 at b2e696ecd7)
+ merge: fix swapped "up to date" message components
+ merge(s): apply consistent punctuation to "up to date" messages
A few variants of informational message "Already up-to-date" has
been rephrased.
Will merge to 'master'.
* jz/apply-3way-first-message-fix (2021-04-29) 1 commit
(merged to 'next' on 2021-04-30 at 829167e135)
+ apply: adjust messages to account for --3way changes
When we swapped the order of --3way fallback, we forgot to adjust
the message we give when the first method fails and the second
method is attempted (which used to be "direct application failed
hence we try 3way", now it is the other way around).
Will merge to 'master'.
* ls/fast-export-signed (2021-05-03) 5 commits
- fast-export, fast-import: add support for signed-commits
- fast-export: do not modify memory from get_commit_buffer
- git-fast-export.txt: clarify why 'verbatim' may not be a good idea
- fast-export: rename --signed-tags='warn' to 'warn-verbatim'
- git-fast-import.txt: add missing LF in the BNF
"git fast-export" offers a way to control how signed tags are
handled; the mechanism has been extended to allow specifying how
signed commits are handled as well.
Expecting a reroll.
cf. <xmqqa6pca0pv.fsf@gitster.g>, <xmqq1rao9zev.fsf@gitster.g>
* ls/subtree (2021-04-28) 30 commits
(merged to 'next' on 2021-05-03 at 12c5fe8677)
+ subtree: be stricter about validating flags
+ subtree: push: allow specifying a local rev other than HEAD
+ subtree: allow 'split' flags to be passed to 'push'
+ subtree: allow --squash to be used with --rejoin
+ subtree: give the docs a once-over
+ subtree: have $indent actually affect indentation
+ subtree: don't let debug and progress output clash
+ subtree: add comments and sanity checks
+ subtree: remove duplicate check
+ subtree: parse revs in individual cmd_ functions
+ subtree: use "^{commit}" instead of "^0"
+ subtree: don't fuss with PATH
+ subtree: use "$*" instead of "$@" as appropriate
+ subtree: use more explicit variable names for cmdline args
+ subtree: use git-sh-setup's `say`
+ subtree: use `git merge-base --is-ancestor`
+ subtree: drop support for git < 1.7
+ subtree: more consistent error propagation
+ subtree: don't have loose code outside of a function
+ subtree: t7900: add porcelain tests for 'pull' and 'push'
+ subtree: t7900: add a test for the -h flag
+ subtree: t7900: rename last_commit_message to last_commit_subject
+ subtree: t7900: fix 'verify one file change per commit'
+ subtree: t7900: delete some dead code
+ subtree: t7900: use 'test' for string equality
+ subtree: t7900: comment subtree_test_create_repo
+ subtree: t7900: use consistent formatting
+ subtree: t7900: use test-lib.sh's test_count
+ subtree: t7900: update for having the default branch name be 'main'
+ .gitignore: ignore 'git-subtree' as a build artifact
"git subtree" updates.
Will merge to 'master'.
* mt/parallel-checkout-part-3 (2021-05-05) 8 commits
- ci: run test round with parallel-checkout enabled
- parallel-checkout: add tests related to .gitattributes
- t0028: extract encoding helpers to lib-encoding.sh
- parallel-checkout: add tests related to path collisions
- parallel-checkout: add tests for basic operations
- checkout-index: add parallel checkout support
- builtin/checkout.c: complete parallel checkout support
- make_transient_cache_entry(): optionally alloc from mem_pool
The final part of "parallel checkout".
Will merge to 'next'.
* po/diff-patch-doc (2021-04-28) 1 commit
(merged to 'next' on 2021-04-30 at 58af0f4b5e)
+ doc: point to diff attribute in patch format docs
Doc update.
Will merge to 'master'.
* rj/bisect-skip-honor-terms (2021-04-30) 1 commit
(merged to 'next' on 2021-05-04 at f7c11bba06)
+ bisect--helper: use BISECT_TERMS in 'bisect skip' command
"git bisect skip" when custom words are used for new/old did not
work, which has been corrected.
Will merge to 'master'.
* tv/p4-fallback-encoding (2021-04-30) 1 commit
- git-p4: git-p4.fallbackEncoding to specify non UTF-8 charset
"git p4" learns the fallbackEncoding configuration variable to
safely accept changeset descriptions that aren't written in UTF-8.
* zh/pretty-date-human (2021-04-27) 1 commit
(merged to 'next' on 2021-04-30 at 2320ad8fb0)
+ pretty: provide human date format
(this branch uses ab/pretty-date-format-tests.)
"git log --format=..." placeholders learned %ah/%ch placeholders to
request the --date=human output.
Will merge to 'master'.
* dl/complete-stash (2021-03-24) 3 commits
(merged to 'next' on 2021-03-24 at ce573a99cc)
+ git-completion.bash: use __gitcomp_builtin() in _git_stash()
+ git-completion.bash: extract from else in _git_stash()
+ git-completion.bash: pass $__git_subcommand_idx from __git_main()
(this branch is used by dl/complete-stash-updates.)
The command line completion (in contrib/) for "git stash" has been
updated.
Will merge to 'master'.
* ba/object-info (2021-04-20) 1 commit
- object-info: support for retrieving object info
Over-the-wire protocol learns a new request type to ask for object
sizes given a list of object names.
Will merge to 'next'.
* zh/format-ref-array-optim (2021-04-20) 2 commits
(merged to 'next' on 2021-04-30 at b6c835cc51)
+ ref-filter: reuse output buffer
+ ref-filter: get rid of show_ref_array_item
"git (branch|tag) --format=..." has been micro-optimized.
Will merge to 'master'.
* hn/prep-tests-for-reftable (2021-04-28) 21 commits
- t1415: set REFFILES for test specific to storage format
- t4202: mark bogus head hash test with REFFILES
- t7003: check reflog existence only for REFFILES
- t7900: mark pack-refs tests as REFFILES
- t1404: mark tests that muck with .git directly as REFFILES.
- t2017: mark --orphan/logAllRefUpdates=false test as REFFILES
- t1414: mark corruption test with REFFILES
- t1407: require REFFILES for for_each_reflog test
- test-lib: provide test prereq REFFILES
- t5304: use "reflog expire --all" to clear the reflog
- t5304: restyle: trim empty lines, drop ':' before >
- t7003: use rev-parse rather than FS inspection
- t5000: inspect HEAD using git-rev-parse
- t5000: reformat indentation to the latest fashion
- t1301: fix typo in error message
- t1413: use tar to save and restore entire .git directory
- t1401-symbolic-ref: avoid direct filesystem access
- t5601: read HEAD using rev-parse
- t9300: check ref existence using test-helper rather than a file system check
- t/helper/ref-store: initialize oid in resolve-ref
- t4202: split testcase for invalid HEAD symref and HEAD hash
Preliminary clean-up of tests before the main reftable changes
hits the codebase.
Waiting for reviews.
* ps/config-env-option-with-separate-value (2021-04-30) 2 commits
(merged to 'next' on 2021-04-30 at 46fbcd08c1)
+ git: support separate arg for `--config-env`'s value
+ git.txt: fix synopsis of `--config-env` missing the equals sign
"git --config-env var=val cmd" weren't accepted (only
--config-env=var=val was).
Will merge to 'master'.
* rs/repack-without-loosening-promised-objects (2021-04-28) 1 commit
(merged to 'next' on 2021-05-03 at 6681b49209)
+ repack: avoid loosening promisor objects in partial clones
"git repack -A -d" in a partial clone unnecessarily loosened
objects in promisor pack.
Will merge to 'master'.
* jt/push-negotiation (2021-05-05) 6 commits
(merged to 'next' on 2021-05-06 at 644a1bc4ee)
+ send-pack: support push negotiation
+ fetch: teach independent negotiation (no packfile)
+ fetch-pack: refactor command and capability write
+ fetch-pack: refactor add_haves()
+ fetch-pack: refactor process_acks()
+ Merge branch 'jt/fetch-pack-request-fix' into jt/push-negotiation
"git push" learns to discover common ancestor with the receiving
end over protocol v2.
Will merge to 'master'.
* ab/doc-lint (2021-04-10) 7 commits
(merged to 'next' on 2021-04-30 at 285b9c4d64)
+ docs: fix linting issues due to incorrect relative section order
+ doc lint: lint relative section order
+ doc lint: lint and fix missing "GIT" end sections
+ doc lint: fix bugs in, simplify and improve lint script
+ doc lint: Perl "strict" and "warnings" in lint-gitlink.perl
+ Documentation/Makefile: make doc.dep dependencies a variable again
+ Documentation/Makefile: make $(wildcard howto/*.txt) a var
Dev support.
Will merge to 'master'.
* ab/rebase-no-reschedule-failed-exec (2021-04-10) 2 commits
(merged to 'next' on 2021-04-30 at 97d56cc674)
+ rebase: don't override --no-reschedule-failed-exec with config
+ rebase tests: camel-case rebase.rescheduleFailedExec consistently
"git rebase --[no-]reschedule-failed-exec" did not work well with
its configuration variable, which has been corrected.
Will merge to 'master'.
* ah/plugleaks (2021-04-28) 12 commits
(merged to 'next' on 2021-04-30 at ccb3984029)
+ builtin/rm: avoid leaking pathspec and seen
+ builtin/rebase: release git_format_patch_opt too
+ builtin/for-each-ref: free filter and UNLEAK sorting.
+ mailinfo: also free strbuf lists when clearing mailinfo
+ builtin/checkout: clear pending objects after diffing
+ builtin/check-ignore: clear_pathspec before returning
+ builtin/bugreport: don't leak prefixed filename
+ branch: FREE_AND_NULL instead of NULL'ing real_ref
+ bloom: clear each bloom_key after use
+ ls-files: free max_prefix when done
+ wt-status: fix multiple small leaks
+ revision: free remainder of old commit list in limit_list
Plug various leans reported by LSAN.
Will merge to 'master'.
* bc/hash-transition-interop-part-1 (2021-04-27) 13 commits
(merged to 'next' on 2021-05-03 at 19dba33d17)
+ hex: print objects using the hash algorithm member
+ hex: default to the_hash_algo on zero algorithm value
+ builtin/pack-objects: avoid using struct object_id for pack hash
+ commit-graph: don't store file hashes as struct object_id
+ builtin/show-index: set the algorithm for object IDs
+ hash: provide per-algorithm null OIDs
+ hash: set, copy, and use algo field in struct object_id
+ builtin/pack-redundant: avoid casting buffers to struct object_id
+ Use the final_oid_fn to finalize hashing of object IDs
+ hash: add a function to finalize object IDs
+ http-push: set algorithm when reading object ID
+ Always use oidread to read into struct object_id
+ hash: add an algo member to struct object_id
SHA-256 transition.
Will merge to 'master'.
* ps/rev-list-object-type-filter (2021-04-19) 8 commits
(merged to 'next' on 2021-04-30 at fa0ceacde4)
+ rev-list: allow filtering of provided items
+ pack-bitmap: implement combined filter
+ pack-bitmap: implement object type filter
+ list-objects: implement object type filter
+ list-objects: support filtering by tag and commit
+ list-objects: move tag processing into its own function
+ revision: mark commit parents as NOT_USER_GIVEN
+ uploadpack.txt: document implication of `uploadpackfilter.allow`
"git rev-list" learns the "--filter=object:type=<type>" option,
which can be used to exclude objects of the given kind from the
packfile generated by pack-objects.
Will merge to 'master'.
* tb/multi-pack-bitmaps (2021-04-10) 23 commits
- p5326: perf tests for MIDX bitmaps
- p5310: extract full and partial bitmap tests
- midx: respect 'GIT_TEST_MULTI_PACK_INDEX_WRITE_BITMAP'
- t7700: update to work with MIDX bitmap test knob
- t5319: don't write MIDX bitmaps in t5319
- t5310: disable GIT_TEST_MULTI_PACK_INDEX_WRITE_BITMAP
- t5326: test multi-pack bitmap behavior
- t/helper/test-read-midx.c: add --checksum mode
- t5310: move some tests to lib-bitmap.sh
- pack-bitmap: write multi-pack bitmaps
- pack-bitmap: read multi-pack bitmaps
- pack-bitmap.c: introduce 'bitmap_is_preferred_refname()'
- pack-bitmap.c: introduce 'nth_bitmap_object_oid()'
- pack-bitmap.c: introduce 'bitmap_num_objects()'
- midx: respect 'core.multiPackIndex' when writing
- midx: clear auxiliary .rev after replacing the MIDX
- midx: make a number of functions non-static
- Documentation: describe MIDX-based bitmaps
- Documentation: build 'technical/bitmap-format' by default
- pack-bitmap-write.c: free existing bitmaps
- pack-bitmap-write.c: gracefully fail to write non-closed bitmaps
- pack-bitmap.c: harden 'test_bitmap_walk()' to check type bitmaps
- Merge branch 'tb/pack-preferred-tips-to-give-bitmap' into tb/multi-pack-bitmaps
The reachability bitmap file used to be generated only for a single
pack, but now we've learned to generate bitmaps for history that
span across multiple packfiles.
Waiting for reviews.
cf. <cover.1617991824.git.me@ttaylorr.com>
* ab/svn-tests-set-e-fix (2021-04-12) 2 commits
(merged to 'next' on 2021-04-30 at 41f7907187)
+ svn tests: refactor away a "set -e" in test body
+ svn tests: remove legacy re-setup from init-clone test
Test clean-up.
Will merge to 'master'.
* ab/test-lib-updates (2021-04-29) 11 commits
- test-lib: split up and deprecate test_create_repo()
- test-lib: do not show advice about init.defaultBranch under --verbose
- test-lib: reformat argument list in test_create_repo()
- submodule tests: use symbolic-ref --short to discover branch name
- test-lib functions: add --printf option to test_commit
- describe tests: convert setup to use test_commit
- test-lib functions: add an --annotated option to "test_commit"
- test-lib-functions: document test_commit --no-tag
- test-lib-functions: reword "test_commit --append" docs
- test-lib tests: remove dead GIT_TEST_FRAMEWORK_SELFTEST variable
- test-lib: bring $remove_trash out of retirement
(this branch is used by ab/describe-tests-fix and ab/pickaxe-pcre2.)
Test clean-up.
* ao/p4-avoid-decoding (2021-04-12) 2 commits
- git-p4: do not decode data from perforce by default
- git-p4: avoid decoding more data from perforce
"git p4" in Python-2 days used to accept a lot more kinds of data
from Perforce server as uninterrupted byte sequence, but after
switching to Python-3, too many things are expected to be in UTF-8,
which broke traditional use cases.
Waiting for reviews.
* ma/t0091-bugreport-fix (2021-04-12) 1 commit
- t0091-bugreport.sh: actually verify some content of report
Test fix.
Expecting a reroll.
cf. <YHYZTLl90rkWWVOr@google.com>, <87a6q22dei.fsf@evledraar.gmail.com>
* ps/config-global-override (2021-04-27) 4 commits
(merged to 'next' on 2021-04-30 at 5ce435d98f)
+ t1300: fix unset of GIT_CONFIG_NOSYSTEM leaking into subsequent tests
(merged to 'next' on 2021-04-20 at 82578c696d)
+ config: allow overriding of global and system configuration
+ config: unify code paths to get global config paths
+ config: rename `git_etc_config()`
Replace GIT_CONFIG_NOSYSTEM mechanism to decline from reading the
system-wide configuration file with GIT_CONFIG_SYSTEM that lets
users specify from which file to read the system-wide configuration
(setting it to an empty file would essentially be the same as
setting NOSYSTEM), and introduce GIT_CONFIG_GLOBAL to override the
per-user configuration in $HOME/.gitconfig.
Will merge to 'master'.
* mr/bisect-in-c-4 (2021-04-11) 4 commits
- bisect--helper: retire `--bisect-next-check` subcommand
- bisect--helper: reimplement `bisect_run` shell function in C
- bisect--helper: reimplement `bisect_visualize()`shell function in C
- run-command: make `exists_in_PATH()` non-static
The codepaths involved in running "git bisect visualize" and "git
bisect run" has been rewritten in C.
Expecting a reroll.
cf. <xmqq35vwh8qk.fsf@gitster.g>, <xmqqy2doftrj.fsf@gitster.g>,
<CAP8UFD3X24F3qgefHpi00PM-KUk+vcqxwy2Dbngbyj7ciavCVQ@mail.gmail.com>
May want to boost the test coverage.
* mt/add-rm-in-sparse-checkout (2021-04-08) 7 commits
(merged to 'next' on 2021-04-30 at ddead90eaf)
+ rm: honor sparse checkout patterns
+ add: warn when asked to update SKIP_WORKTREE entries
+ refresh_index(): add flag to ignore SKIP_WORKTREE entries
+ pathspec: allow to ignore SKIP_WORKTREE entries on index matching
+ add: make --chmod and --renormalize honor sparse checkouts
+ t3705: add tests for `git add` in sparse checkouts
+ add: include magic part of pathspec on --refresh error
(this branch is used by ds/status-with-sparse-index.)
"git add" and "git rm" learned not to touch those paths that are
outside of sparse checkout.
Will merge to 'master'.
* zh/trailer-cmd (2021-05-04) 2 commits
(merged to 'next' on 2021-05-04 at fb677877f7)
+ trailer: add new .cmd config option
+ docs: correct descript of trailer.<token>.command
The way the command line specified by the trailer.<token>.command
configuration variable receives the end-user supplied value was
both error prone and misleading. An alternative to achieve the
same goal in a safer and more intuitive way has been added, as
the trailer.<token>.cmd configuration variable, to replace it.
Will merge to 'master'.
* hn/reftable (2021-04-20) 28 commits
- t1404: annotate test cases with REFFILES
- t1401,t2011: parameterize HEAD.lock for REFTABLE
- t1301: document what needs to be done for REFTABLE
- Add "test-tool dump-reftable" command.
- git-prompt: prepare for reftable refs backend
- Reftable support for git-core
- reftable: add dump utility
- reftable: implement stack, a mutable database of reftable files.
- reftable: implement refname validation
- reftable: add merged table view
- reftable: add a heap-based priority queue for reftable records
- reftable: reftable file level tests
- reftable: read reftable files
- reftable: generic interface to tables
- reftable: write reftable files
- reftable: a generic binary tree implementation
- reftable: reading/writing blocks
- Provide zlib's uncompress2 from compat/zlib-compat.c
- reftable: (de)serialization for the polymorphic record type.
- reftable: add blocksource, an abstraction for random access reads
- reftable: utility functions
- reftable: add error related functionality
- reftable: add LICENSE
- init-db: set the_repository->hash_algo early on
- hash.h: provide constants for the hash IDs
- refs/debug: trace into reflog expiry too
- refs: document reflog_expire_fn's flag argument
- refs: ref_iterator_peel returns boolean, rather than peel_status
The "reftable" backend for the refs API.
Waiting for reviews.
--------------------------------------------------
[Discarded]
* ab/fsck-unexpected-type (2021-04-13) 6 commits
. fsck: report invalid object type-path combinations
. fsck: report invalid types recorded in objects
. object-store.h: move read_loose_object() below 'struct object_info'
. fsck: don't hard die on invalid object types
. fsck tests: refactor one test to use a sub-repo
. cache.h: move object functions to object-store.h
"git fsck" has been taught to report mismatch between expected and
actual types of an object better.
Retracted for now.
cf. <cover-0.5-00000000000-20210505T122816Z-avarab@gmail.com>
^ permalink raw reply [relevance 3%]
* Re: [PATCH v4 2/2] merge: fix swapped "up to date" message components
2021-05-03 5:50 2% ` Eric Sunshine
@ 2021-05-03 6:28 2% ` Junio C Hamano
0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2021-05-03 6:28 UTC (permalink / raw)
To: Eric Sunshine; +Cc: Git List, Josh Soref, Elijah Newren
Eric Sunshine <sunshine@sunshineco.com> writes:
> On Mon, May 3, 2021 at 1:21 AM Junio C Hamano <gitster@pobox.com> wrote:
>> Eric Sunshine <sunshine@sunshineco.com> writes:
>> > + if (verbosity >= 0) {
>> > + if (squash)
>> > + puts(_("Already up to date. (nothing to squash)"));
>>
>> The original scripted Porcelain may have said so, but the placement
>> of full-stop in the above feels a bit strange. Should we rephrase
>> it to
>>
>> Already up to date (nothing to squash).
>>
>> as we are fixing the phrasing now?
>
> I don't have a strong opinion about it, and can go either way with it.
> Josh's patch did place the full-stop after the closing parenthesis. I
> can re-roll if people think that would be preferable (unless you want
> to change it locally while queuing).
I am fine to leave this outisde the topic.
^ permalink raw reply [relevance 2%]
* Re: [PATCH v4 2/2] merge: fix swapped "up to date" message components
2021-05-03 5:21 2% ` Junio C Hamano
@ 2021-05-03 5:50 2% ` Eric Sunshine
2021-05-03 6:28 2% ` Junio C Hamano
0 siblings, 1 reply; 200+ results
From: Eric Sunshine @ 2021-05-03 5:50 UTC (permalink / raw)
To: Junio C Hamano; +Cc: Git List, Josh Soref, Elijah Newren
On Mon, May 3, 2021 at 1:21 AM Junio C Hamano <gitster@pobox.com> wrote:
> Eric Sunshine <sunshine@sunshineco.com> writes:
> > + if (verbosity >= 0) {
> > + if (squash)
> > + puts(_("Already up to date. (nothing to squash)"));
>
> The original scripted Porcelain may have said so, but the placement
> of full-stop in the above feels a bit strange. Should we rephrase
> it to
>
> Already up to date (nothing to squash).
>
> as we are fixing the phrasing now?
I don't have a strong opinion about it, and can go either way with it.
Josh's patch did place the full-stop after the closing parenthesis. I
can re-roll if people think that would be preferable (unless you want
to change it locally while queuing).
^ permalink raw reply [relevance 2%]
* Re: [PATCH v4 2/2] merge: fix swapped "up to date" message components
2021-05-02 5:14 2% ` [PATCH v4 2/2] merge: fix swapped "up to date" message components Eric Sunshine
@ 2021-05-03 5:21 2% ` Junio C Hamano
2021-05-03 5:50 2% ` Eric Sunshine
0 siblings, 1 reply; 200+ results
From: Junio C Hamano @ 2021-05-03 5:21 UTC (permalink / raw)
To: Eric Sunshine; +Cc: git, Josh Soref, Elijah Newren
Eric Sunshine <sunshine@sunshineco.com> writes:
> + if (verbosity >= 0) {
> + if (squash)
> + puts(_("Already up to date. (nothing to squash)"));
The original scripted Porcelain may have said so, but the placement
of full-stop in the above feels a bit strange. Should we rephrase
it to
Already up to date (nothing to squash).
as we are fixing the phrasing now?
^ permalink raw reply [relevance 2%]
* [PATCH v4 0/2] normalize & fix merge "up to date" messages
@ 2021-05-02 5:14 3% ` Eric Sunshine
2021-05-02 5:14 2% ` [PATCH v4 2/2] merge: fix swapped "up to date" message components Eric Sunshine
0 siblings, 1 reply; 200+ results
From: Eric Sunshine @ 2021-05-02 5:14 UTC (permalink / raw)
To: git; +Cc: Josh Soref, Junio C Hamano, Elijah Newren, Eric Sunshine
This is a re-roll of Josh Soref's v3[1] which fixes swapped components
of an "Already up to date" message emitted by builtin/merge. This
re-roll additionally normalizes punctuation of "Already up to date"
messages throughout the project.
I kept Josh as author of patch [2/2] but completely rewrote the commit
message to refocus it is a simple fix for a nearly 13 year old bug.
[1]: https://lore.kernel.org/git/pull.934.v3.git.1619052906768.gitgitgadget@gmail.com/
Eric Sunshine (1):
merge(s): apply consistent punctuation to "up to date" messages
Josh Soref (1):
merge: fix swapped "up to date" message components
builtin/merge.c | 14 +++++++++-----
merge-ort-wrappers.c | 2 +-
merge-recursive.c | 2 +-
notes-merge.c | 2 +-
4 files changed, 12 insertions(+), 8 deletions(-)
Range-diff against v3:
-: ---------- > 1: 3f96947e3a merge(s): apply consistent punctuation to "up to date" messages
1: 8cd2b8c335 ! 2: 5885b18b7f git-merge: rewrite already up to date message
@@ Metadata
Author: Josh Soref <jsoref@gmail.com>
## Commit message ##
- git-merge: rewrite already up to date message
+ merge: fix swapped "up to date" message components
- Usually, it is easier to read a message if it makes its primary
- point first, before giving a parenthetical note.
+ The rewrite of git-merge from shell to C in 1c7b76be7d (Build in merge,
+ 2008-07-07) accidentally transformed the message:
- Possible messages before include:
- ` (nothing to squash)Already up to date.
- `
- and
- `Already up to date. Yeeah!
- `
+ Already up-to-date. (nothing to squash)
- After:
- `Already up to date (nothing to squash).
- `
- and
- `Already up to date.
- `
+ to:
- Localizations now have two easy to understand translatable strings.
- (All localizations of the previous strings are broken.)
+ (nothing to squash)Already up-to-date.
+
+ due to reversed printf() arguments. This problem has gone unnoticed
+ despite being touched over the years by 7f87aff22c (Teach/Fix pull/fetch
+ -q/-v options, 2008-11-15) and bacec47845 (i18n: git-merge basic
+ messages, 2011-02-22), and tangentially by bef4830e88 (i18n: merge: mark
+ messages for translation, 2016-06-17) and 7560f547e6 (treewide: correct
+ several "up-to-date" to "up to date", 2017-08-23).
+
+ Fix it by restoring the message to its intended order. While at it, help
+ translators out by avoiding "sentence Lego".
+
+ [es: rewrote commit message]
Co-authored-by: Eric Sunshine <sunshine@sunshineco.com>
Signed-off-by: Josh Soref <jsoref@gmail.com>
+ Signed-off-by: Eric Sunshine <sunshine@sunshineco.com>
## builtin/merge.c ##
@@ builtin/merge.c: static void restore_state(const struct object_id *head,
@@ builtin/merge.c: static void restore_state(const struct object_id *head,
- printf("%s%s\n", squash ? _(" (nothing to squash)") : "", msg);
+ if (verbosity >= 0) {
+ if (squash)
-+ puts(_("Already up to date (nothing to squash)."));
++ puts(_("Already up to date. (nothing to squash)"));
+ else
+ puts(_("Already up to date."));
+ }
@@ builtin/merge.c: int cmd_merge(int argc, const char **argv, const char *prefix)
}
}
if (up_to_date) {
-- finish_up_to_date(_("Already up to date. Yeeah!"));
+- finish_up_to_date(_("Already up to date."));
+ finish_up_to_date();
goto done;
}
--
2.31.1.607.g51e8a6a459
^ permalink raw reply [relevance 3%]
* [PATCH v4 2/2] merge: fix swapped "up to date" message components
2021-05-02 5:14 3% ` [PATCH v4 0/2] normalize & fix merge "up to date" messages Eric Sunshine
@ 2021-05-02 5:14 2% ` Eric Sunshine
2021-05-03 5:21 2% ` Junio C Hamano
0 siblings, 1 reply; 200+ results
From: Eric Sunshine @ 2021-05-02 5:14 UTC (permalink / raw)
To: git; +Cc: Josh Soref, Junio C Hamano, Elijah Newren, Eric Sunshine
From: Josh Soref <jsoref@gmail.com>
The rewrite of git-merge from shell to C in 1c7b76be7d (Build in merge,
2008-07-07) accidentally transformed the message:
Already up-to-date. (nothing to squash)
to:
(nothing to squash)Already up-to-date.
due to reversed printf() arguments. This problem has gone unnoticed
despite being touched over the years by 7f87aff22c (Teach/Fix pull/fetch
-q/-v options, 2008-11-15) and bacec47845 (i18n: git-merge basic
messages, 2011-02-22), and tangentially by bef4830e88 (i18n: merge: mark
messages for translation, 2016-06-17) and 7560f547e6 (treewide: correct
several "up-to-date" to "up to date", 2017-08-23).
Fix it by restoring the message to its intended order. While at it, help
translators out by avoiding "sentence Lego".
[es: rewrote commit message]
Co-authored-by: Eric Sunshine <sunshine@sunshineco.com>
Signed-off-by: Josh Soref <jsoref@gmail.com>
Signed-off-by: Eric Sunshine <sunshine@sunshineco.com>
---
builtin/merge.c | 14 +++++++++-----
1 file changed, 9 insertions(+), 5 deletions(-)
diff --git a/builtin/merge.c b/builtin/merge.c
index 3472a0ce3b..eddb8ae70d 100644
--- a/builtin/merge.c
+++ b/builtin/merge.c
@@ -393,10 +393,14 @@ static void restore_state(const struct object_id *head,
}
/* This is called when no merge was necessary. */
-static void finish_up_to_date(const char *msg)
+static void finish_up_to_date(void)
{
- if (verbosity >= 0)
- printf("%s%s\n", squash ? _(" (nothing to squash)") : "", msg);
+ if (verbosity >= 0) {
+ if (squash)
+ puts(_("Already up to date. (nothing to squash)"));
+ else
+ puts(_("Already up to date."));
+ }
remove_merge_branch_state(the_repository);
}
@@ -1522,7 +1526,7 @@ int cmd_merge(int argc, const char **argv, const char *prefix)
* If head can reach all the merge then we are up to date.
* but first the most common case of merging one remote.
*/
- finish_up_to_date(_("Already up to date."));
+ finish_up_to_date();
goto done;
} else if (fast_forward != FF_NO && !remoteheads->next &&
!common->next &&
@@ -1610,7 +1614,7 @@ int cmd_merge(int argc, const char **argv, const char *prefix)
}
}
if (up_to_date) {
- finish_up_to_date(_("Already up to date."));
+ finish_up_to_date();
goto done;
}
}
--
2.31.1.607.g51e8a6a459
^ permalink raw reply related [relevance 2%]
* [RFC PATCH v1 02/13] doc: typeset branches and remotes in monospace
@ 2021-04-09 4:02 2% ` Firmin Martin
0 siblings, 0 replies; 200+ results
From: Firmin Martin @ 2021-04-09 4:02 UTC (permalink / raw)
To: git; +Cc: Firmin Martin
Wrap branch and remote names with backticks as indicated in the
CodingGuidelines.
Signed-off-by: Firmin Martin <firminmartin24@gmail.com>
---
Documentation/diff-options.txt | 2 +-
Documentation/git-add.txt | 10 +--
Documentation/git-am.txt | 4 +-
Documentation/git-archimport.txt | 2 +-
Documentation/git-bisect-lk2009.txt | 10 +--
Documentation/git-bisect.txt | 6 +-
Documentation/git-branch.txt | 22 +++---
Documentation/git-bundle.txt | 6 +-
Documentation/git-check-ref-format.txt | 2 +-
Documentation/git-checkout.txt | 2 +-
Documentation/git-cherry-pick.txt | 22 +++---
Documentation/git-cherry.txt | 4 +-
Documentation/git-clone.txt | 16 ++---
Documentation/git-commit-tree.txt | 2 +-
Documentation/git-commit.txt | 6 +-
Documentation/git-config.txt | 2 +-
Documentation/git-cvsimport.txt | 8 +--
Documentation/git-cvsserver.txt | 2 +-
Documentation/git-describe.txt | 6 +-
Documentation/git-diff-index.txt | 6 +-
Documentation/git-diff.txt | 20 +++---
Documentation/git-fast-export.txt | 16 ++---
Documentation/git-fetch-pack.txt | 2 +-
Documentation/git-fetch.txt | 4 +-
Documentation/git-filter-branch.txt | 2 +-
Documentation/git-fmt-merge-msg.txt | 4 +-
Documentation/git-for-each-ref.txt | 12 ++--
Documentation/git-format-patch.txt | 4 +-
Documentation/git-http-push.txt | 6 +-
Documentation/git-log.txt | 8 +--
Documentation/git-ls-remote.txt | 2 +-
Documentation/git-merge.txt | 2 +-
Documentation/git-notes.txt | 12 ++--
Documentation/git-p4.txt | 4 +-
Documentation/git-pull.txt | 4 +-
Documentation/git-push.txt | 8 +--
Documentation/git-read-tree.txt | 4 +-
Documentation/git-rebase.txt | 92 +++++++++++++-------------
Documentation/git-reflog.txt | 4 +-
Documentation/git-request-pull.txt | 2 +-
Documentation/git-rerere.txt | 34 +++++-----
Documentation/git-reset.txt | 6 +-
Documentation/git-rev-parse.txt | 4 +-
Documentation/git-revert.txt | 8 +--
Documentation/git-rm.txt | 2 +-
Documentation/git-show-ref.txt | 2 +-
Documentation/git-show.txt | 2 +-
Documentation/git-stash.txt | 8 +--
Documentation/git-status.txt | 12 ++--
Documentation/git-submodule.txt | 28 ++++----
Documentation/git-svn.txt | 20 +++---
Documentation/git-switch.txt | 10 +--
Documentation/git-symbolic-ref.txt | 2 +-
Documentation/git-tag.txt | 2 +-
Documentation/git-update-ref.txt | 4 +-
Documentation/git-worktree.txt | 2 +-
Documentation/git.txt | 4 +-
Documentation/gitcli.txt | 2 +-
Documentation/gitcore-tutorial.txt | 36 +++++-----
Documentation/giteveryday.txt | 16 ++---
Documentation/githooks.txt | 8 +--
Documentation/gitk.txt | 2 +-
Documentation/gitnamespaces.txt | 2 +-
Documentation/gitremote-helpers.txt | 6 +-
Documentation/gitrepository-layout.txt | 4 +-
Documentation/gittutorial-2.txt | 2 +-
Documentation/gittutorial.txt | 44 ++++++------
Documentation/gitweb.txt | 4 +-
Documentation/gitworkflows.txt | 70 ++++++++++----------
Documentation/glossary-content.txt | 12 ++--
Documentation/rev-list-options.txt | 2 +-
Documentation/revisions.txt | 52 +++++++--------
Documentation/user-manual.txt | 78 +++++++++++-----------
73 files changed, 421 insertions(+), 421 deletions(-)
diff --git a/Documentation/diff-options.txt b/Documentation/diff-options.txt
index 13e0753862..e4ac746428 100644
--- a/Documentation/diff-options.txt
+++ b/Documentation/diff-options.txt
@@ -803,7 +803,7 @@ endif::git-format-patch[]
Ignore changes to submodules in the diff generation. <when> can be
either "none", "untracked", "dirty" or "all", which is the default.
Using "none" will consider the submodule modified when it either contains
- untracked or modified files or its HEAD differs from the commit recorded
+ untracked or modified files or its `HEAD` differs from the commit recorded
in the superproject and can be used to override any settings of the
'ignore' option in linkgit:git-config[1] or linkgit:gitmodules[5]. When
"untracked" is used submodules are not considered dirty when they only
diff --git a/Documentation/git-add.txt b/Documentation/git-add.txt
index 6a7cb07a8a..8ec99c5c12 100644
--- a/Documentation/git-add.txt
+++ b/Documentation/git-add.txt
@@ -256,7 +256,7 @@ The main command loop has 6 subcommands (plus help and quit).
status::
- This shows the change between HEAD and index (i.e. what will be
+ This shows the change between `HEAD` and index (i.e. what will be
committed if you say `git commit`), and between index and
working tree files (i.e. what you could stage further before
`git commit` using `git add`) for each path. A sample output
@@ -268,7 +268,7 @@ status::
2: +403/-35 +1/-1 git-add--interactive.perl
------------
+
-It shows that foo.png has differences from HEAD (but that is
+It shows that foo.png has differences from `HEAD` (but that is
binary so line count cannot be shown) and there is no
difference between indexed copy and the working tree
version (if the working tree version were also different,
@@ -311,7 +311,7 @@ revert::
This has a very similar UI to 'update', and the staged
information for selected paths are reverted to that of the
- HEAD version. Reverting new paths makes them untracked.
+ `HEAD` version. Reverting new paths makes them untracked.
add untracked::
@@ -350,7 +350,7 @@ variable `interactive.singleKey` to `true`.
diff::
This lets you review what will be committed (i.e. between
- HEAD and index).
+ `HEAD` and index).
EDITING PATCHES
@@ -389,7 +389,7 @@ There are also more complex operations that can be performed. But beware
that because the patch is applied only to the index and not the working
tree, the working tree will appear to "undo" the change in the index.
For example, introducing a new line into the index that is in neither
-the HEAD nor the working tree will stage the new line for commit, but
+the `HEAD` nor the working tree will stage the new line for commit, but
the line will appear to be reverted in the working tree.
Avoid using these constructs, or do so with extreme caution.
diff --git a/Documentation/git-am.txt b/Documentation/git-am.txt
index decd8ae122..cd56054be0 100644
--- a/Documentation/git-am.txt
+++ b/Documentation/git-am.txt
@@ -176,7 +176,7 @@ default. You can use `--no-utf8` to override this.
Restore the original branch and abort the patching operation.
--quit::
- Abort the patching operation but keep HEAD and the index
+ Abort the patching operation but keep `HEAD` and the index
untouched.
--show-current-patch[=(diff|raw)]::
@@ -229,7 +229,7 @@ operation is finished, so if you decide to start over from scratch,
run `git am --abort` before running the command with mailbox
names.
-Before any patches are applied, ORIG_HEAD is set to the tip of the
+Before any patches are applied, `ORIG_HEAD` is set to the tip of the
current branch. This is useful if you have problems with multiple
commits, like running 'git am' on the wrong branch or an error in the
commits that is more easily fixed by changing the mailbox (e.g.
diff --git a/Documentation/git-archimport.txt b/Documentation/git-archimport.txt
index b477e3c495..6e2dec5ef1 100644
--- a/Documentation/git-archimport.txt
+++ b/Documentation/git-archimport.txt
@@ -45,7 +45,7 @@ archives that it imports, it is also possible to specify Git branch names
manually. To do so, write a Git branch name after each <archive/branch>
parameter, separated by a colon. This way, you can shorten the Arch
branch names and convert Arch jargon to Git jargon, for example mapping a
-"PROJECT{litdd}devo{litdd}VERSION" branch to "master".
+"PROJECT{litdd}devo{litdd}VERSION" branch to `master`.
Associating multiple Arch branches to one Git branch is possible; the
result will make the most sense only if no commits are made to the first
diff --git a/Documentation/git-bisect-lk2009.txt b/Documentation/git-bisect-lk2009.txt
index f3d9566c89..1276424d65 100644
--- a/Documentation/git-bisect-lk2009.txt
+++ b/Documentation/git-bisect-lk2009.txt
@@ -767,8 +767,8 @@ They cannot be on a branch that has no link with the branch of the
bad commit and yet not be neither one of its ancestor nor one of its
descendants.
-For example, there can be a "main" branch, and a "dev" branch that was
-forked of the main branch at a commit named "D" like this:
+For example, there can be a `main` branch, and a `dev` branch that was
+forked of the `main` branch at a commit named "D" like this:
-------------
A-B-C-D-E-F-G <--main
@@ -776,7 +776,7 @@ A-B-C-D-E-F-G <--main
H-I-J <--dev
-------------
-The commit "D" is called a "merge base" for branch "main" and "dev"
+The commit "D" is called a "merge base" for branch `main` and `dev`
because it's the best common ancestor for these branches for a merge.
Now let's suppose that commit J is bad and commit G is good and that
@@ -794,7 +794,7 @@ H-I-J
-------------
But what happens if the first bad commit is "B" and if it has been
-fixed in the "main" branch by commit "F"?
+fixed in the `main` branch by commit "F"?
The result of such a bisection would be that we would find that H is
the first bad commit, when in fact it's B. So that would be wrong!
@@ -1229,7 +1229,7 @@ message or the author. And it can also be used instead of git "grafts"
to link a repository with another old repository.
In fact it's this last feature that "sold" it to the Git community, so
-it is now in the "master" branch of Git's Git repository and it should
+it is now in the `master` branch of Git's Git repository and it should
be released in Git 1.6.5 in October or November 2009.
One problem with "git replace" is that currently it stores all the
diff --git a/Documentation/git-bisect.txt b/Documentation/git-bisect.txt
index fbb39fbdf5..ff50c66e29 100644
--- a/Documentation/git-bisect.txt
+++ b/Documentation/git-bisect.txt
@@ -98,7 +98,7 @@ Bisect reset
~~~~~~~~~~~~
After a bisect session, to clean up the bisection state and return to
-the original HEAD, issue the following command:
+the original `HEAD`, issue the following command:
------------------------------------------------
$ git bisect reset
@@ -379,7 +379,7 @@ branch contained broken or non-buildable commits, but the merge itself was OK.
EXAMPLES
--------
-* Automatically bisect a broken build between v1.2 and HEAD:
+* Automatically bisect a broken build between v1.2 and `HEAD`:
+
------------
$ git bisect start HEAD v1.2 -- # HEAD is bad, v1.2 is good
@@ -387,7 +387,7 @@ $ git bisect run make # "make" builds the app
$ git bisect reset # quit the bisect session
------------
-* Automatically bisect a test failure between origin and HEAD:
+* Automatically bisect a test failure between `origin` and `HEAD`:
+
------------
$ git bisect start HEAD origin -- # HEAD is bad, origin is good
diff --git a/Documentation/git-branch.txt b/Documentation/git-branch.txt
index 271b4ee34e..fa38fa4dc1 100644
--- a/Documentation/git-branch.txt
+++ b/Documentation/git-branch.txt
@@ -175,7 +175,7 @@ This option is only applicable in non-verbose mode.
the pattern(s).
--show-current::
- Print the name of the current branch. In detached HEAD state,
+ Print the name of the current branch. In detached `HEAD` state,
nothing is printed.
-v::
@@ -186,7 +186,7 @@ This option is only applicable in non-verbose mode.
relationship to upstream branch (if any). If given twice, print
the path of the linked worktree (if any) and the name of the upstream
branch, as well (see also `git remote show <remote>`). Note that the
- current worktree's HEAD will not have its path printed (it will always
+ current worktree's `HEAD` will not have its path printed (it will always
be your current directory).
-q::
@@ -250,15 +250,15 @@ start-point is either a local or remote-tracking branch.
--no-contains [<commit>]::
Only list branches which don't contain the specified commit
- (HEAD if not specified). Implies `--list`.
+ (`HEAD` if not specified). Implies `--list`.
--merged [<commit>]::
Only list branches whose tips are reachable from the
- specified commit (HEAD if not specified). Implies `--list`.
+ specified commit (`HEAD` if not specified). Implies `--list`.
--no-merged [<commit>]::
Only list branches whose tips are not reachable from the
- specified commit (HEAD if not specified). Implies `--list`.
+ specified commit (`HEAD` if not specified). Implies `--list`.
<branchname>::
The name of the branch to create or delete.
@@ -269,7 +269,7 @@ start-point is either a local or remote-tracking branch.
<start-point>::
The new branch head will point to this commit. It may be
given as a branch name, a commit-id, or a tag. If this
- option is omitted, the current HEAD will be used instead.
+ option is omitted, the current `HEAD` will be used instead.
<oldbranch>::
The name of an existing branch to rename.
@@ -286,7 +286,7 @@ start-point is either a local or remote-tracking branch.
for-each-ref`. Sort order defaults to the value configured for the
`branch.sort` variable if exists, or to sorting based on the
full refname (including `refs/...` prefix). This lists
- detached HEAD (if present) first, then local branches and
+ detached `HEAD` (if present) first, then local branches and
finally remote-tracking branches. See linkgit:git-config[1].
@@ -328,10 +328,10 @@ $ git branch -d -r origin/todo origin/html origin/man <1>
$ git branch -D test <2>
------------
+
-<1> Delete the remote-tracking branches "todo", "html" and "man". The next
+<1> Delete the remote-tracking branches `todo`, `html` and `man`. The next
'fetch' or 'pull' will create them again unless you configure them not to.
See linkgit:git-fetch[1].
-<2> Delete the "test" branch even if the "master" branch (or whichever branch
+<2> Delete the `test` branch even if the `master` branch (or whichever branch
is currently checked out) does not have all commits from the test branch.
Listing branches from a specific remote::
@@ -365,10 +365,10 @@ serve four related but different purposes:
contain the specified <commit>.
- `--merged` is used to find all branches which can be safely deleted,
- since those branches are fully contained by HEAD.
+ since those branches are fully contained by `HEAD`.
- `--no-merged` is used to find branches which are candidates for merging
- into HEAD, since those branches are not fully contained by HEAD.
+ into `HEAD`, since those branches are not fully contained by `HEAD`.
include::ref-reachability-filters.txt[]
diff --git a/Documentation/git-bundle.txt b/Documentation/git-bundle.txt
index 4f1e59a3b2..20da47cbd6 100644
--- a/Documentation/git-bundle.txt
+++ b/Documentation/git-bundle.txt
@@ -68,7 +68,7 @@ unbundle <file>::
'git rev-list' (and containing a named ref, see SPECIFYING REFERENCES
below), that specifies the specific objects and references
to transport. For example, `master~10..master` causes the
- current master reference to be packaged along with all objects
+ current `master` reference to be packaged along with all objects
added since its 10th ancestor commit. There is no explicit
limit to the number of references and objects that may be
packaged.
@@ -146,7 +146,7 @@ Assume you want to transfer the history from a repository R1 on machine A
to another repository R2 on machine B.
For whatever reason, direct connection between A and B is not allowed,
but we can move data from A to B via some mechanism (CD, email, etc.).
-We want to update R2 with development made on the branch master in R1.
+We want to update R2 with development made on the branch `master` in R1.
To bootstrap the process, you can first create a bundle that does not have
any basis. You can use a tag to remember up to what commit you last
@@ -167,7 +167,7 @@ create a new repository on machine B by cloning from it:
machineB$ git clone -b master /home/me/tmp/file.bundle R2
----------------
-This will define a remote called "origin" in the resulting repository that
+This will define a remote called `origin` in the resulting repository that
lets you fetch and pull from the bundle. The $GIT_DIR/config file in R2 will
have an entry like this:
diff --git a/Documentation/git-check-ref-format.txt b/Documentation/git-check-ref-format.txt
index ee6a4144fb..f39622c0da 100644
--- a/Documentation/git-check-ref-format.txt
+++ b/Documentation/git-check-ref-format.txt
@@ -80,7 +80,7 @@ reference name expressions (see linkgit:gitrevisions[7]):
With the `--branch` option, the command takes a name and checks if
it can be used as a valid branch name (e.g. when creating a new
branch). But be cautious when using the
-previous checkout syntax that may refer to a detached HEAD state.
+previous checkout syntax that may refer to a detached `HEAD` state.
The rule `git check-ref-format --branch $name` implements
may be stricter than what `git check-ref-format refs/heads/$name`
says (e.g. a dash may appear at the beginning of a ref component,
diff --git a/Documentation/git-checkout.txt b/Documentation/git-checkout.txt
index 3336b8dace..192dbfe9b0 100644
--- a/Documentation/git-checkout.txt
+++ b/Documentation/git-checkout.txt
@@ -189,7 +189,7 @@ one for the purposes of disambiguation, even if the `<branch>` isn't
unique across all remotes. Set it to
e.g. `checkout.defaultRemote=origin` to always checkout remote
branches from there if `<branch>` is ambiguous but exists on the
-'origin' remote. See also `checkout.defaultRemote` in
+`origin` remote. See also `checkout.defaultRemote` in
linkgit:git-config[1].
+
`--guess` is the default behavior. Use `--no-guess` to disable it.
diff --git a/Documentation/git-cherry-pick.txt b/Documentation/git-cherry-pick.txt
index 0127f56204..6069cc77a0 100644
--- a/Documentation/git-cherry-pick.txt
+++ b/Documentation/git-cherry-pick.txt
@@ -17,7 +17,7 @@ DESCRIPTION
Given one or more existing commits, apply the change each one
introduces, recording a new commit for each. This requires your
-working tree to be clean (no modifications from the HEAD commit).
+working tree to be clean (no modifications from the `HEAD` commit).
When it is not obvious how to apply a change, the following
happens:
@@ -96,7 +96,7 @@ OPTIONS
each named commit to your working tree and the index,
without making any commit. In addition, when this
option is used, your index does not have to match the
- HEAD commit. The cherry-pick is done against the
+ `HEAD` commit. The cherry-pick is done against the
beginning state of your index.
+
This is useful when cherry-picking more than one commits'
@@ -117,7 +117,7 @@ effect to your index in a row.
earlier `--gpg-sign`.
--ff::
- If the current HEAD is the same as the parent of the
+ If the current `HEAD` is the same as the parent of the
cherry-pick'ed commit, then a fast forward to this commit will
be performed.
@@ -176,13 +176,13 @@ EXAMPLES
`git cherry-pick ^HEAD master`::
Apply the changes introduced by all commits that are ancestors
- of master but not of HEAD to produce new commits.
+ of `master` but not of `HEAD` to produce new commits.
`git cherry-pick maint next ^master`::
`git cherry-pick maint master..next`::
Apply the changes introduced by all commits that are
- ancestors of maint or next, but not master or any of its
+ ancestors of `maint` or `next`, but not `master` or any of its
ancestors. Note that the latter does not mean `maint` and
everything between `master` and `next`; specifically,
`maint` will not be used if it is included in `master`.
@@ -190,27 +190,27 @@ EXAMPLES
`git cherry-pick master~4 master~2`::
Apply the changes introduced by the fifth and third last
- commits pointed to by master and create 2 new commits with
+ commits pointed to by `master` and create 2 new commits with
these changes.
`git cherry-pick -n master~1 next`::
Apply to the working tree and the index the changes introduced
- by the second last commit pointed to by master and by the last
+ by the second last commit pointed to by `master` and by the last
commit pointed to by next, but do not create any commit with
these changes.
`git cherry-pick --ff ..next`::
- If history is linear and HEAD is an ancestor of next, update
- the working tree and advance the HEAD pointer to match next.
+ If history is linear and `HEAD` is an ancestor of next, update
+ the working tree and advance the `HEAD` pointer to match next.
Otherwise, apply the changes introduced by those commits that
- are in next but not HEAD to the current branch, creating a new
+ are in next but not `HEAD` to the current branch, creating a new
commit for each new change.
`git rev-list --reverse master -- README | git cherry-pick -n --stdin`::
- Apply the changes introduced by all commits on the master
+ Apply the changes introduced by all commits on the `master`
branch that touched README to the working tree and index,
so the result can be inspected and made into a single new
commit if suitable.
diff --git a/Documentation/git-cherry.txt b/Documentation/git-cherry.txt
index 0ea921a593..4374f398fa 100644
--- a/Documentation/git-cherry.txt
+++ b/Documentation/git-cherry.txt
@@ -31,10 +31,10 @@ OPTIONS
<upstream>::
Upstream branch to search for equivalent commits.
- Defaults to the upstream branch of HEAD.
+ Defaults to the upstream branch of `HEAD`.
<head>::
- Working branch; defaults to HEAD.
+ Working branch; defaults to `HEAD`.
<limit>::
Do not report commits up to (and including) limit.
diff --git a/Documentation/git-clone.txt b/Documentation/git-clone.txt
index 22334771d1..8cd602a852 100644
--- a/Documentation/git-clone.txt
+++ b/Documentation/git-clone.txt
@@ -30,8 +30,8 @@ currently active branch.
After the clone, a plain `git fetch` without arguments will update
all the remote-tracking branches, and a `git pull` without
-arguments will in addition merge the remote master branch into the
-current master branch, if any (this is untrue when `--single-branch`
+arguments will in addition merge the remote `master` branch into the
+current `master` branch, if any (this is untrue when `--single-branch`
is given; see below).
This default configuration is achieved by creating references to
@@ -147,7 +147,7 @@ objects from the source repository into a pack in the cloned repository.
-n::
--no-checkout::
- No checkout of HEAD is performed after the clone is complete.
+ No checkout of `HEAD` is performed after the clone is complete.
--[no-]reject-shallow::
Fail if the source repository is a shallow repository.
@@ -198,11 +198,11 @@ objects from the source repository into a pack in the cloned repository.
-b <name>::
--branch <name>::
- Instead of pointing the newly created HEAD to the branch pointed
- to by the cloned repository's HEAD, point to `<name>` branch
+ Instead of pointing the newly created `HEAD` to the branch pointed
+ to by the cloned repository's `HEAD`, point to `<name>` branch
instead. In a non-bare repository, this is the branch that will
be checked out.
- `--branch` can also take tags and detaches the HEAD at that commit
+ `--branch` can also take tags and detaches the `HEAD` at that commit
in the resulting repository.
-u <upload-pack>::
@@ -224,7 +224,7 @@ objects from the source repository into a pack in the cloned repository.
linkgit:git-config[1] (e.g., `core.eol=true`). If multiple
values are given for the same key, each value will be written to
the config file. This makes it safe, for example, to add
- additional fetch refspecs to the origin remote.
+ additional fetch refspecs to the `origin` remote.
+
Due to limitations of the current implementation, some configuration
variables do not take effect until after the initial fetch and checkout.
@@ -253,7 +253,7 @@ corresponding `--mirror` and `--no-tags` options instead.
branch remote's `HEAD` points at.
Further fetches into the resulting repository will only update the
remote-tracking branch for the branch this option was used for the
- initial cloning. If the HEAD at the remote did not point at any
+ initial cloning. If the `HEAD` at the remote did not point at any
branch when `--single-branch` clone was made, no remote-tracking
branch is created.
diff --git a/Documentation/git-commit-tree.txt b/Documentation/git-commit-tree.txt
index 2e2c581098..b76a825c94 100644
--- a/Documentation/git-commit-tree.txt
+++ b/Documentation/git-commit-tree.txt
@@ -36,7 +36,7 @@ While a tree represents a particular directory state of a working
directory, a commit represents that state in "time", and explains how
to get there.
-Normally a commit would identify a new "HEAD" state, and while Git
+Normally a commit would identify a new `HEAD` state, and while Git
doesn't care where you save the note about that state, in practice we
tend to just write the result to the file that is pointed at by
`.git/HEAD`, so that we can always see what the last committed
diff --git a/Documentation/git-commit.txt b/Documentation/git-commit.txt
index 6d0d663b50..f507ae00a1 100644
--- a/Documentation/git-commit.txt
+++ b/Documentation/git-commit.txt
@@ -21,9 +21,9 @@ DESCRIPTION
-----------
Create a new commit containing the current contents of the index and
the given log message describing the changes. The new commit is a
-direct child of HEAD, usually the tip of the current branch, and the
+direct child of `HEAD`, usually the tip of the current branch, and the
branch is updated to point to it (unless no branch is associated with
-the working tree, in which case HEAD is "detached" as described in
+the working tree, in which case `HEAD` is "detached" as described in
linkgit:git-checkout[1]).
The content to be committed can be specified in several ways:
@@ -352,7 +352,7 @@ configuration variable documented in linkgit:git-config[1].
-v::
--verbose::
- Show unified diff between the HEAD commit and what
+ Show unified diff between the `HEAD` commit and what
would be committed at the bottom of the commit message
template to help the user describe the commit by reminding
what changes the commit has.
diff --git a/Documentation/git-config.txt b/Documentation/git-config.txt
index b93394ea45..e6d70ffda1 100644
--- a/Documentation/git-config.txt
+++ b/Documentation/git-config.txt
@@ -148,7 +148,7 @@ See also <<FILES>>.
--blob blob::
Similar to `--file` but use the given blob instead of a file. E.g.
you can use 'master:.gitmodules' to read values from the file
- '.gitmodules' in the master branch. See "SPECIFYING REVISIONS"
+ '.gitmodules' in the `master` branch. See "SPECIFYING REVISIONS"
section in linkgit:gitrevisions[7] for a more complete list of
ways to spell blob names.
diff --git a/Documentation/git-cvsimport.txt b/Documentation/git-cvsimport.txt
index 143c726511..95fa94de74 100644
--- a/Documentation/git-cvsimport.txt
+++ b/Documentation/git-cvsimport.txt
@@ -35,7 +35,7 @@ Please see the section <<issues,ISSUES>> for further reference.
You should *never* do any work of your own on the branches that are
created by 'git cvsimport'. By default initial import will create and populate a
-"master" branch from the CVS repository's main branch which you're free
+`master` branch from the CVS repository's main branch which you're free
to work with; after that, you need to 'git merge' incremental imports, or
any CVS branches, yourself. It is advisable to specify a named remote via
`-r` to separate and protect the incoming branches.
@@ -71,11 +71,11 @@ OPTIONS
-r <remote>::
The Git remote to import this CVS repository into.
Moves all CVS branches into remotes/<remote>/<branch>
- akin to the way 'git clone' uses 'origin' by default.
+ akin to the way 'git clone' uses `origin` by default.
-o <branch-for-HEAD>::
When no remote is specified (via `-r`) the `HEAD` branch
- from CVS is imported to the 'origin' branch within the Git
+ from CVS is imported to the `origin` branch within the Git
repository, as `HEAD` already has a special meaning for Git.
When a remote is specified the `HEAD` branch is named
remotes/<remote>/master mirroring 'git clone' behaviour.
@@ -200,7 +200,7 @@ Problems related to timestamps:
to be used for ordering commits changes may show up in the wrong
order.
* If any files were ever "cvs import"ed more than once (e.g., import of
- more than one vendor release) the HEAD contains the wrong content.
+ more than one vendor release) the `HEAD` contains the wrong content.
* If the timestamp order of different files cross the revision order
within the commit matching time window the order of commits may be
wrong.
diff --git a/Documentation/git-cvsserver.txt b/Documentation/git-cvsserver.txt
index 955bae46c9..c6a926d8d2 100644
--- a/Documentation/git-cvsserver.txt
+++ b/Documentation/git-cvsserver.txt
@@ -199,7 +199,7 @@ allowing access over SSH.
5. Clients should now be able to check out the project. Use the CVS 'module'
name to indicate what Git 'head' you want to check out. This also sets the
name of your newly checked-out directory, unless you tell it otherwise with
- `-d <dir_name>`. For example, this checks out 'master' branch to the
+ `-d <dir_name>`. For example, this checks out `master` branch to the
`project-master` directory:
+
------
diff --git a/Documentation/git-describe.txt b/Documentation/git-describe.txt
index a3f015743b..7d2649c477 100644
--- a/Documentation/git-describe.txt
+++ b/Documentation/git-describe.txt
@@ -30,17 +30,17 @@ If the given object refers to a blob, it will be described
as `<commit-ish>:<path>`, such that the blob can be found
at `<path>` in the `<commit-ish>`, which itself describes the
first commit in which this blob occurs in a reverse revision walk
-from HEAD.
+from `HEAD`.
OPTIONS
-------
<commit-ish>...::
- Commit-ish object names to describe. Defaults to HEAD if omitted.
+ Commit-ish object names to describe. Defaults to `HEAD` if omitted.
--dirty[=<mark>]::
--broken[=<mark>]::
Describe the state of the working tree. When the working
- tree matches HEAD, the output is the same as "git describe
+ tree matches `HEAD`, the output is the same as "git describe
HEAD". If the working tree has local modification "-dirty"
is appended to it. If a repository is corrupt and Git
cannot determine if there is local modification, Git will
diff --git a/Documentation/git-diff-index.txt b/Documentation/git-diff-index.txt
index 27acb31cbf..10e79a29aa 100644
--- a/Documentation/git-diff-index.txt
+++ b/Documentation/git-diff-index.txt
@@ -31,7 +31,7 @@ include::diff-options.txt[]
--merge-base::
Instead of comparing <tree-ish> directly, use the merge base
- between <tree-ish> and HEAD instead. <tree-ish> must be a
+ between <tree-ish> and `HEAD` instead. <tree-ish> must be a
commit.
-m::
@@ -53,7 +53,7 @@ CACHED MODE
-----------
If `--cached` is specified, it allows you to ask:
- show me the differences between HEAD and the current index
+ show me the differences between `HEAD` and the current index
contents (the ones I'd write using 'git write-tree')
For example, let's say that you have worked on your working directory, updated
@@ -89,7 +89,7 @@ the more useful of the two in that what it does can't be emulated with
a 'git write-tree' + 'git diff-tree'. Thus that's the default mode.
The non-cached version asks the question:
- show me the differences between HEAD and the currently checked out
+ show me the differences between `HEAD` and the currently checked out
tree - index contents _and_ files that aren't up to date
which is obviously a very useful question too, since that tells you what
diff --git a/Documentation/git-diff.txt b/Documentation/git-diff.txt
index 9f4b46c910..33a47958bc 100644
--- a/Documentation/git-diff.txt
+++ b/Documentation/git-diff.txt
@@ -45,20 +45,20 @@ files on disk.
This form is to view the changes you staged for the next
commit relative to the named <commit>. Typically you
would want comparison with the latest commit, so if you
- do not give <commit>, it defaults to HEAD.
- If HEAD does not exist (e.g. unborn branches) and
+ do not give <commit>, it defaults to `HEAD`.
+ If `HEAD` does not exist (e.g. unborn branches) and
<commit> is not given, it shows all staged changes.
`--staged` is a synonym of `--cached`.
+
If `--merge-base` is given, instead of using <commit>, use the merge base
-of <commit> and HEAD. `git diff --merge-base A` is equivalent to
+of <commit> and `HEAD`. `git diff --merge-base A` is equivalent to
`git diff $(git merge-base A HEAD)`.
'git diff' [<options>] <commit> [--] [<path>...]::
This form is to view the changes you have in your
working tree relative to the named <commit>. You can
- use HEAD to compare it with the latest commit, or a
+ use `HEAD` to compare it with the latest commit, or a
branch name to compare with the tip of a different
branch.
@@ -85,7 +85,7 @@ If `--merge-base` is given, use the merge base of the two commits for the
This is synonymous to the earlier form (without the `..`) for
viewing the changes between two arbitrary <commit>. If <commit> on
one side is omitted, it will have the same effect as
- using HEAD instead.
+ using `HEAD` instead.
'git diff' [<options>] <commit>\...<commit> [--] [<path>...]::
@@ -93,7 +93,7 @@ If `--merge-base` is given, use the merge base of the two commits for the
and up to the second <commit>, starting at a common ancestor
of both <commit>. `git diff A...B` is equivalent to
`git diff $(git merge-base A B) B`. You can omit any one
- of <commit>, which has the same effect as using HEAD instead.
+ of <commit>, which has the same effect as using `HEAD` instead.
Just in case you are doing something exotic, it should be
noted that all of the <commit> in the above description, except
@@ -165,8 +165,8 @@ $ git diff HEAD^ HEAD <3>
------------
+
<1> Instead of using the tip of the current branch, compare with the
- tip of "test" branch.
-<2> Instead of comparing with the tip of "test" branch, compare with
+ tip of `test` branch.
+<2> Instead of comparing with the tip of `test` branch, compare with
the tip of the current branch, but limit the comparison to the
file "test".
<3> Compare the version before the last commit and the last commit.
@@ -179,9 +179,9 @@ $ git diff topic..master <2>
$ git diff topic...master <3>
------------
+
-<1> Changes between the tips of the topic and the master branches.
+<1> Changes between the tips of the `topic` and the `master` branches.
<2> Same as above.
-<3> Changes that occurred on the master branch since when the topic
+<3> Changes that occurred on the `master` branch since when the `topic`
branch was started off it.
Limiting the diff output::
diff --git a/Documentation/git-fast-export.txt b/Documentation/git-fast-export.txt
index a1c02918f9..3a6a77abac 100644
--- a/Documentation/git-fast-export.txt
+++ b/Documentation/git-fast-export.txt
@@ -126,10 +126,10 @@ by keeping the marks the same across runs.
--reference-excluded-parents::
By default, running a command such as `git fast-export
- master~5..master` will not include the commit master{tilde}5
- and will make master{tilde}4 no longer have master{tilde}5 as
- a parent (though both the old master{tilde}4 and new
- master{tilde}4 will have all the same files). Use
+ master~5..master` will not include the commit `master~5`
+ and will make `master~4` no longer have `master~5` as
+ a parent (though both the old `master~4` and new
+ `master~4` will have all the same files). Use
`--reference-excluded-parents` to instead have the stream
refer to commits in the excluded range of history by their
sha1sum. Note that the resulting stream can only be used by a
@@ -158,10 +158,10 @@ by keeping the marks the same across runs.
A list of arguments, acceptable to 'git rev-parse' and
'git rev-list', that specifies the specific objects and references
to export. For example, `master~10..master` causes the
- current master reference to be exported along with all objects
+ current `master` reference to be exported along with all objects
added since its 10th ancestor commit and (unless the
`--reference-excluded-parents` option is specified) all files
- common to master{tilde}9 and master{tilde}10.
+ common to `master~9` and `master~10`.
EXAMPLES
--------
@@ -180,8 +180,8 @@ $ git fast-export master~5..master |
git fast-import
-----------------------------------------------------
-This makes a new branch called 'other' from 'master~5..master'
-(i.e. if 'master' has linear history, it will take the last 5 commits).
+This makes a new branch called `other` from `master~5`..`master`
+(i.e. if `master` has linear history, it will take the last 5 commits).
Note that this assumes that none of the blobs and commit messages
referenced by that revision range contains the string
diff --git a/Documentation/git-fetch-pack.txt b/Documentation/git-fetch-pack.txt
index 88c2b9d426..1f48f89e3e 100644
--- a/Documentation/git-fetch-pack.txt
+++ b/Documentation/git-fetch-pack.txt
@@ -116,7 +116,7 @@ be in a separate packet, and the list must end with a flush packet.
<refs>...::
The remote heads to update from. This is relative to
- $GIT_DIR (e.g. "HEAD", "refs/heads/master"). When
+ $GIT_DIR (e.g. `HEAD`, "refs/heads/master"). When
unspecified, update from all heads the remote side has.
+
If the remote has enabled the options `uploadpack.allowTipSHA1InWant`,
diff --git a/Documentation/git-fetch.txt b/Documentation/git-fetch.txt
index 85b073a61a..a5ecf00db3 100644
--- a/Documentation/git-fetch.txt
+++ b/Documentation/git-fetch.txt
@@ -87,10 +87,10 @@ This configuration is used in two ways:
<refspec>s given on the command line determine what are to be
fetched (e.g. `master` in the example,
which is a short-hand for `master:`, which in turn means
- "fetch the 'master' branch but I do not explicitly say what
+ "fetch the `master` branch but I do not explicitly say what
remote-tracking branch to update with it from the command line"),
and the example command will
- fetch _only_ the 'master' branch. The `remote.<repository>.fetch`
+ fetch _only_ the `master` branch. The `remote.<repository>.fetch`
values determine which
remote-tracking branch, if any, is updated. When used in this
way, the `remote.<repository>.fetch` values do not have any
diff --git a/Documentation/git-filter-branch.txt b/Documentation/git-filter-branch.txt
index 2de3511459..e2955bc648 100644
--- a/Documentation/git-filter-branch.txt
+++ b/Documentation/git-filter-branch.txt
@@ -267,7 +267,7 @@ history, so we also add `--ignore-unmatch`:
git filter-branch --index-filter 'git rm --cached --ignore-unmatch filename' HEAD
--------------------------------------------------------------------------
-Now, you will get the rewritten history saved in HEAD.
+Now, you will get the rewritten history saved in `HEAD`.
To rewrite the repository to look as if `foodir/` had been its project
root, and discard all other history:
diff --git a/Documentation/git-fmt-merge-msg.txt b/Documentation/git-fmt-merge-msg.txt
index 9004861eae..86fb26dcea 100644
--- a/Documentation/git-fmt-merge-msg.txt
+++ b/Documentation/git-fmt-merge-msg.txt
@@ -65,8 +65,8 @@ $ git fetch origin master
$ git fmt-merge-msg --log <$GIT_DIR/FETCH_HEAD
---------
-Print a log message describing a merge of the "master" branch from
-the "origin" remote.
+Print a log message describing a merge of the `master` branch from
+the `origin` remote.
SEE ALSO
diff --git a/Documentation/git-for-each-ref.txt b/Documentation/git-for-each-ref.txt
index e035edf11d..4bde4f9d05 100644
--- a/Documentation/git-for-each-ref.txt
+++ b/Documentation/git-for-each-ref.txt
@@ -76,18 +76,18 @@ OPTIONS
--merged[=<object>]::
Only list refs whose tips are reachable from the
- specified commit (HEAD if not specified).
+ specified commit (`HEAD` if not specified).
--no-merged[=<object>]::
Only list refs whose tips are not reachable from the
- specified commit (HEAD if not specified).
+ specified commit (`HEAD` if not specified).
--contains[=<object>]::
- Only list refs which contain the specified commit (HEAD if not
+ Only list refs which contain the specified commit (`HEAD` if not
specified).
--no-contains[=<object>]::
- Only list refs which don't contain the specified commit (HEAD
+ Only list refs which don't contain the specified commit (`HEAD`
if not specified).
--ignore-case::
@@ -169,7 +169,7 @@ push::
ref is configured.
HEAD::
- '*' if HEAD matches current ref (the checked out branch), ' '
+ '*' if `HEAD` matches current ref (the checked out branch), ' '
otherwise.
color::
@@ -201,7 +201,7 @@ if::
everything after %(else) is printed. We ignore space when
evaluating the string before %(then), this is useful when we
use the %(HEAD) atom which prints either "*" or " " and we
- want to apply the 'if' condition only on the 'HEAD' ref.
+ want to apply the 'if' condition only on the `HEAD` ref.
Append ":equals=<string>" or ":notequals=<string>" to compare
the value between the %(if:...) and %(then) atoms with the
given string.
diff --git a/Documentation/git-format-patch.txt b/Documentation/git-format-patch.txt
index ca500ba72c..fd7c6c705b 100644
--- a/Documentation/git-format-patch.txt
+++ b/Documentation/git-format-patch.txt
@@ -706,7 +706,7 @@ $ git format-patch -k --stdout R1..R2 | git am -3 -k
------------
* Extract all commits which are in the current branch but not in the
- origin branch:
+ `origin` branch:
+
------------
$ git format-patch origin
@@ -714,7 +714,7 @@ $ git format-patch origin
+
For each commit a separate file is created in the current directory.
-* Extract all commits that lead to 'origin' since the inception of the
+* Extract all commits that lead to `origin` since the inception of the
project:
+
------------
diff --git a/Documentation/git-http-push.txt b/Documentation/git-http-push.txt
index 5dd4d2b63a..7ba8ea2383 100644
--- a/Documentation/git-http-push.txt
+++ b/Documentation/git-http-push.txt
@@ -44,12 +44,12 @@ OPTIONS
-d::
-D::
Remove <ref> from remote repository. The specified branch
- cannot be the remote HEAD. If `-d` is specified the following
+ cannot be the remote `HEAD`. If `-d` is specified the following
other conditions must also be met:
- - Remote HEAD must resolve to an object that exists locally
+ - Remote `HEAD` must resolve to an object that exists locally
- Specified branch resolves to an object that exists locally
- - Specified branch is an ancestor of the remote HEAD
+ - Specified branch is an ancestor of the remote `HEAD`
<ref>...::
The remote refs to update.
diff --git a/Documentation/git-log.txt b/Documentation/git-log.txt
index 1bbf865a1b..b306dced1c 100644
--- a/Documentation/git-log.txt
+++ b/Documentation/git-log.txt
@@ -152,13 +152,13 @@ EXAMPLES
`git log --branches --not --remotes=origin`::
Shows all commits that are in any of local branches but not in
- any of remote-tracking branches for 'origin' (what you have that
- origin doesn't).
+ any of remote-tracking branches for `origin` (what you have that
+ `origin` doesn't).
`git log master --not --remotes=*/master`::
- Shows all commits that are in local master but not in any remote
- repository master branches.
+ Shows all commits that are in local `master` but not in any remote
+ repository `master` branches.
`git log -p -m --first-parent`::
diff --git a/Documentation/git-ls-remote.txt b/Documentation/git-ls-remote.txt
index 4cb4e2fd5d..af005ece9a 100644
--- a/Documentation/git-ls-remote.txt
+++ b/Documentation/git-ls-remote.txt
@@ -59,7 +59,7 @@ OPTIONS
--symref::
In addition to the object pointed by it, show the underlying
ref pointed by it when showing a symbolic ref. Currently,
- upload-pack only shows the symref HEAD, so it will be the only
+ upload-pack only shows the symref `HEAD`, so it will be the only
one shown by ls-remote.
--sort=<key>::
diff --git a/Documentation/git-merge.txt b/Documentation/git-merge.txt
index 3819fadac1..58fd091d73 100644
--- a/Documentation/git-merge.txt
+++ b/Documentation/git-merge.txt
@@ -146,7 +146,7 @@ To avoid recording unrelated changes in the merge commit,
'git pull' and 'git merge' will also abort if there are any changes
registered in the index relative to the `HEAD` commit. (Special
narrow exceptions to this rule may exist depending on which merge
-strategy is in use, but generally, the index must match HEAD.)
+strategy is in use, but generally, the index must match `HEAD`.)
If all named commits are already ancestors of `HEAD`, 'git merge'
will exit early with the message "Already up to date."
diff --git a/Documentation/git-notes.txt b/Documentation/git-notes.txt
index b0a5ab9a72..ef04e3a8ff 100644
--- a/Documentation/git-notes.txt
+++ b/Documentation/git-notes.txt
@@ -60,7 +60,7 @@ list::
This is the default subcommand if no subcommand is given.
add::
- Add notes for a given object (defaults to HEAD). Abort if the
+ Add notes for a given object (defaults to `HEAD`). Abort if the
object already has notes (use `-f` to overwrite existing notes).
However, if you're using `add` interactively (using an editor
to supply the notes contents), then - instead of aborting -
@@ -69,7 +69,7 @@ add::
copy::
Copy the notes for the first object onto the second object (defaults to
- HEAD). Abort if the second object already has notes, or if the first
+ `HEAD`). Abort if the second object already has notes, or if the first
object has none (use -f to overwrite existing notes to the
second object). This subcommand is equivalent to:
`git notes add [-f] -C $(git notes list <from-object>) <to-object>`
@@ -85,14 +85,14 @@ corresponding <to-object>. (The optional `<rest>` is ignored so that
the command can read the input given to the `post-rewrite` hook.)
append::
- Append to the notes of an existing object (defaults to HEAD).
+ Append to the notes of an existing object (defaults to `HEAD`).
Creates a new notes object if needed.
edit::
- Edit the notes for a given object (defaults to HEAD).
+ Edit the notes for a given object (defaults to `HEAD`).
show::
- Show the notes for a given object (defaults to HEAD).
+ Show the notes for a given object (defaults to `HEAD`).
merge::
Merge the given notes ref into the current notes ref.
@@ -110,7 +110,7 @@ When done, the user can either finalize the merge with
'git notes merge --abort'.
remove::
- Remove the notes for given objects (defaults to HEAD). When
+ Remove the notes for given objects (defaults to `HEAD`). When
giving zero or one object from the command line, this is
equivalent to specifying an empty note message to
the `edit` subcommand.
diff --git a/Documentation/git-p4.txt b/Documentation/git-p4.txt
index d9d29a5efa..ec23ab7d96 100644
--- a/Documentation/git-p4.txt
+++ b/Documentation/git-p4.txt
@@ -76,7 +76,7 @@ This:
2. Imports the full contents of the head revision from the given p4
depot path into a single commit in the Git branch 'refs/remotes/p4/master'.
+
-3. Creates a local branch, 'master' from this remote and checks it out.
+3. Creates a local branch, `master` from this remote and checks it out.
To reproduce the entire p4 history in Git, use the '@all' modifier on
the depot path:
@@ -176,7 +176,7 @@ Unshelve
Unshelving will take a shelved P4 changelist, and produce the equivalent git commit
in the branch refs/remotes/p4-unshelved/<changelist>.
-The git commit is created relative to the current origin revision (HEAD by default).
+The git commit is created relative to the current origin revision (`HEAD` by default).
A parent commit is created based on the origin, and then the unshelve commit is
created based on that.
diff --git a/Documentation/git-pull.txt b/Documentation/git-pull.txt
index edecf393d3..d9a5507195 100644
--- a/Documentation/git-pull.txt
+++ b/Documentation/git-pull.txt
@@ -211,7 +211,7 @@ $ git pull
$ git pull origin
------------------------------------------------
+
-Normally the branch merged in is the HEAD of the remote repository,
+Normally the branch merged in is the `HEAD` of the remote repository,
but the choice is determined by the branch.<name>.remote and
branch.<name>.merge options; see linkgit:git-config[1] for details.
@@ -221,7 +221,7 @@ branch.<name>.merge options; see linkgit:git-config[1] for details.
$ git pull origin next
------------------------------------------------
+
-This leaves a copy of `next` temporarily in FETCH_HEAD, and
+This leaves a copy of `next` temporarily in `FETCH_HEAD`, and
updates the remote-tracking branch `origin/next`.
The same can be done by invoking fetch and merge:
+
diff --git a/Documentation/git-push.txt b/Documentation/git-push.txt
index fc91d41ce0..91dcaa108c 100644
--- a/Documentation/git-push.txt
+++ b/Documentation/git-push.txt
@@ -667,9 +667,9 @@ made on `satellite`.
(e.g. `refs/heads/experimental`), and delete it.
`git push origin +dev:master`::
- Update the origin repository's master branch with the dev branch,
+ Update the `origin` repository's `master` branch with the `dev` branch,
allowing non-fast-forward updates. *This can leave unreferenced
- commits dangling in the origin repository.* Consider the
+ commits dangling in the `origin` repository.* Consider the
following situation, where a fast-forward is not possible:
+
----
@@ -678,7 +678,7 @@ made on `satellite`.
X---Y---Z dev
----
+
-The above command would change the origin repository to
+The above command would change the `origin` repository to
+
----
A---B (unnamed branch)
@@ -688,7 +688,7 @@ The above command would change the origin repository to
+
Commits A and B would no longer belong to a branch with a symbolic name,
and so would be unreachable. As such, these commits would be removed by
-a `git gc` command on the origin repository.
+a `git gc` command on the `origin` repository.
include::transfer-data-leaks.txt[]
diff --git a/Documentation/git-read-tree.txt b/Documentation/git-read-tree.txt
index 3f53688170..d22d3855d1 100644
--- a/Documentation/git-read-tree.txt
+++ b/Documentation/git-read-tree.txt
@@ -118,7 +118,7 @@ OPTIONS
--[no-]recurse-submodules::
Using `--recurse-submodules` will update the content of all active
submodules according to the commit recorded in the superproject by
- calling read-tree recursively, also setting the submodules' HEAD to be
+ calling read-tree recursively, also setting the submodules' `HEAD` to be
detached at that commit.
--no-sparse-checkout::
@@ -356,7 +356,7 @@ $ git fetch git://.... linus
$ LT=`git rev-parse FETCH_HEAD`
----------------
-Your work tree is still based on your HEAD ($JC), but you have
+Your work tree is still based on your `HEAD` ($JC), but you have
some edits since. Three-way merge makes sure that you have not
added or modified index entries since $JC, and if you haven't,
then does the right thing. So with the following sequence:
diff --git a/Documentation/git-rebase.txt b/Documentation/git-rebase.txt
index f063d54623..bd9f15ea26 100644
--- a/Documentation/git-rebase.txt
+++ b/Documentation/git-rebase.txt
@@ -35,13 +35,13 @@ description on `--fork-point` below); or by `git log HEAD`, if the
The current branch is reset to <upstream>, or <newbase> if the
`--onto` option was supplied. This has the exact same effect as
-`git reset --hard <upstream>` (or <newbase>). ORIG_HEAD is set
+`git reset --hard <upstream>` (or <newbase>). `ORIG_HEAD` is set
to point at the tip of the branch before the reset.
The commits that were previously saved into the temporary area are
then reapplied to the current branch, one by one, in order. Note that
-any commits in HEAD which introduce the same textual changes as a commit
-in HEAD..<upstream> are omitted (i.e., a patch already accepted upstream
+any commits in `HEAD` which introduce the same textual changes as a commit
+in `HEAD`..<upstream> are omitted (i.e., a patch already accepted upstream
with a different commit message or timestamp will be skipped).
It is possible that a merge failure will prevent this process from being
@@ -51,7 +51,7 @@ that caused the merge failure with `git rebase --skip`. To check out the
original <branch> and remove the .git/rebase-apply working files, use the
command `git rebase --abort` instead.
-Assume the following history exists and the current branch is "topic":
+Assume the following history exists and the current branch is `topic`:
------------
A---B---C topic
@@ -101,9 +101,9 @@ Here is how you would transplant a topic branch based on one
branch to another, to pretend that you forked the topic branch
from the latter branch, using `rebase --onto`.
-First let's assume your 'topic' is based on branch 'next'.
-For example, a feature developed in 'topic' depends on some
-functionality which is found in 'next'.
+First let's assume your `topic` is based on branch `next`.
+For example, a feature developed in `topic` depends on some
+functionality which is found in `next'.
------------
o---o---o---o---o master
@@ -113,9 +113,9 @@ functionality which is found in 'next'.
o---o---o topic
------------
-We want to make 'topic' forked from branch 'master'; for example,
-because the functionality on which 'topic' depends was merged into the
-more stable 'master' branch. We want our tree to look like this:
+We want to make `topic` forked from branch `master`; for example,
+because the functionality on which `topic` depends was merged into the
+more stable `master` branch. We want our tree to look like this:
------------
o---o---o---o---o master
@@ -216,7 +216,7 @@ OPTIONS
+
As a special case, you may use "A\...B" as a shortcut for the
merge base of A and B if there is exactly one merge base. You can
-leave out at most one of A and B, in which case it defaults to HEAD.
+leave out at most one of A and B, in which case it defaults to `HEAD`.
--keep-base::
Set the starting point at which to create the new commits to the
@@ -242,20 +242,20 @@ See also INCOMPATIBLE OPTIONS below.
upstream for the current branch.
<branch>::
- Working branch; defaults to HEAD.
+ Working branch; defaults to `HEAD`.
--continue::
Restart the rebasing process after having resolved a merge conflict.
--abort::
- Abort the rebase operation and reset HEAD to the original
+ Abort the rebase operation and reset `HEAD` to the original
branch. If <branch> was provided when the rebase operation was
- started, then HEAD will be reset to <branch>. Otherwise HEAD
+ started, then `HEAD` will be reset to <branch>. Otherwise `HEAD`
will be reset to where it was when the rebase operation was
started.
--quit::
- Abort the rebase operation but HEAD is not reset back to the
+ Abort the rebase operation but `HEAD` is not reset back to the
original branch. The index and working tree are also left
unchanged as a result. If a temporary stash entry was created
using `--autostash`, it will be saved to the stash list.
@@ -905,7 +905,7 @@ when a command fails due to merge errors. When you are done editing
and/or resolving conflicts you can continue with `git rebase --continue`.
For example, if you want to reorder the last 5 commits, such that what
-was HEAD~4 becomes the new HEAD. To achieve that, you would call
+was `HEAD~4` becomes the new `HEAD`. To achieve that, you would call
'git rebase' like this:
----------------------
@@ -925,8 +925,8 @@ like this:
---o---O---P---Q
------------------
-Suppose you want to rebase the side branch starting at "A" to "Q". Make
-sure that the current HEAD is "B", and call
+Suppose you want to rebase the side branch starting at `A` to `Q`. Make
+sure that the current `HEAD` is `B`, and call
-----------------------------
$ git rebase -i -r --onto Q O
@@ -990,7 +990,7 @@ add other commits. This can be used to split a commit into two:
- Mark the commit you want to split with the action "edit".
- When it comes to editing that commit, execute `git reset HEAD^`. The
- effect is that the HEAD is rewound by one, and the index follows suit.
+ effect is that the `HEAD` is rewound by one, and the index follows suit.
However, the working tree stays the same.
- Now add the changes to the index that you want to have in the first
@@ -1020,8 +1020,8 @@ from the downstream's point of view. The real fix, however, would be
to avoid rebasing the upstream in the first place.
To illustrate, suppose you are in a situation where someone develops a
-'subsystem' branch, and you are working on a 'topic' that is dependent
-on this 'subsystem'. You might end up with a history like the
+`subsystem` branch, and you are working on a `topic` that is dependent
+on this `subsystem`. You might end up with a history like the
following:
------------
@@ -1032,7 +1032,7 @@ following:
*---*---* topic
------------
-If 'subsystem' is rebased against 'master', the following happens:
+If `subsystem` is rebased against `master`, the following happens:
------------
o---o---o---o---o---o---o---o master
@@ -1042,8 +1042,8 @@ If 'subsystem' is rebased against 'master', the following happens:
*---*---* topic
------------
-If you now continue development as usual, and eventually merge 'topic'
-to 'subsystem', the commits from 'subsystem' will remain duplicated forever:
+If you now continue development as usual, and eventually merge `topic`
+to `subsystem`, the commits from `subsystem` will remain duplicated forever:
------------
o---o---o---o---o---o---o---o master
@@ -1055,20 +1055,20 @@ to 'subsystem', the commits from 'subsystem' will remain duplicated forever:
Such duplicates are generally frowned upon because they clutter up
history, making it harder to follow. To clean things up, you need to
-transplant the commits on 'topic' to the new 'subsystem' tip, i.e.,
-rebase 'topic'. This becomes a ripple effect: anyone downstream from
-'topic' is forced to rebase too, and so on!
+transplant the commits on `topic` to the new `subsystem` tip, i.e.,
+rebase `topic`. This becomes a ripple effect: anyone downstream from
+`topic` is forced to rebase too, and so on!
There are two kinds of fixes, discussed in the following subsections:
Easy case: The changes are literally the same.::
- This happens if the 'subsystem' rebase was a simple rebase and
+ This happens if the `subsystem` rebase was a simple rebase and
had no conflicts.
Hard case: The changes are not the same.::
- This happens if the 'subsystem' rebase had conflicts, or used
+ This happens if the `subsystem` rebase had conflicts, or used
`--interactive` to omit, edit, squash, or fixup commits; or
if the upstream used one of `commit --amend`, `reset`, or
a full history rewriting command like
@@ -1079,13 +1079,13 @@ The easy case
~~~~~~~~~~~~~
Only works if the changes (patch IDs based on the diff contents) on
-'subsystem' are literally the same before and after the rebase
-'subsystem' did.
+`subsystem` are literally the same before and after the rebase
+`subsystem` did.
In that case, the fix is easy because 'git rebase' knows to skip
changes that are already present in the new upstream (unless
`--reapply-cherry-picks` is given). So if you say
-(assuming you're on 'topic')
+(assuming you're on `topic`)
------------
$ git rebase subsystem
------------
@@ -1102,7 +1102,7 @@ you will end up with the fixed history
The hard case
~~~~~~~~~~~~~
-Things get more complicated if the 'subsystem' changes do not exactly
+Things get more complicated if the `subsystem` changes do not exactly
correspond to the ones before the rebase.
NOTE: While an "easy case recovery" sometimes appears to be successful
@@ -1110,26 +1110,26 @@ NOTE: While an "easy case recovery" sometimes appears to be successful
example, a commit that was removed via `git rebase
--interactive` will be **resurrected**!
-The idea is to manually tell 'git rebase' "where the old 'subsystem'
-ended and your 'topic' began", that is, what the old merge base
+The idea is to manually tell 'git rebase' "where the old `subsystem`
+ended and your `topic` began", that is, what the old merge base
between them was. You will have to find a way to name the last commit
-of the old 'subsystem', for example:
+of the old `subsystem`, for example:
-* With the 'subsystem' reflog: after 'git fetch', the old tip of
- 'subsystem' is at `subsystem@{1}`. Subsequent fetches will
+* With the `subsystem` reflog: after 'git fetch', the old tip of
+ `subsystem` is at `subsystem@{1}`. Subsequent fetches will
increase the number. (See linkgit:git-reflog[1].)
-* Relative to the tip of 'topic': knowing that your 'topic' has three
- commits, the old tip of 'subsystem' must be `topic~3`.
+* Relative to the tip of `topic`: knowing that your `topic` has three
+ commits, the old tip of `subsystem` must be `topic~3`.
-You can then transplant the old `subsystem..topic` to the new tip by
-saying (for the reflog case, and assuming you are on 'topic' already):
+You can then transplant the old `subsystem`..`topic` to the new tip by
+saying (for the reflog case, and assuming you are on `topic` already):
------------
$ git rebase --onto subsystem subsystem@{1}
------------
The ripple effect of a "hard case" recovery is especially bad:
-'everyone' downstream from 'topic' will now have to perform a "hard
+'everyone' downstream from `topic` will now have to perform a "hard
case" recovery too!
REBASING MERGES
@@ -1193,7 +1193,7 @@ merge -C 6f5e4d report-a-bug # Merge 'report-a-bug'
In contrast to a regular interactive rebase, there are `label`, `reset`
and `merge` commands in addition to `pick` ones.
-The `label` command associates a label with the current HEAD when that
+The `label` command associates a label with the current `HEAD` when that
command is executed. These labels are created as worktree-local refs
(`refs/rewritten/<label>`) that will be deleted when the rebase
finishes. That way, rebase operations in multiple worktrees linked to
@@ -1201,7 +1201,7 @@ the same repository do not interfere with one another. If the `label`
command fails, it is rescheduled immediately, with a helpful message how
to proceed.
-The `reset` command resets the HEAD, index and worktree to the specified
+The `reset` command resets the `HEAD`, index and worktree to the specified
revision. It is similar to an `exec git reset --hard <label>`, but
refuses to overwrite untracked files. If the `reset` command fails, it is
rescheduled immediately, with a helpful message how to edit the todo list
@@ -1209,7 +1209,7 @@ rescheduled immediately, with a helpful message how to edit the todo list
list manually and contains a typo).
The `merge` command will merge the specified revision(s) into whatever
-is HEAD at that time. With `-C <original-commit>`, the commit message of
+is `HEAD` at that time. With `-C <original-commit>`, the commit message of
the specified merge commit will be used. When the `-C` is changed to
a lower-case `-c`, the message will be opened in an editor after a
successful merge so that the user can edit the message.
diff --git a/Documentation/git-reflog.txt b/Documentation/git-reflog.txt
index ff487ff77d..cf1d7e0810 100644
--- a/Documentation/git-reflog.txt
+++ b/Documentation/git-reflog.txt
@@ -28,8 +28,8 @@ depending on the subcommand:
Reference logs, or "reflogs", record when the tips of branches and
other references were updated in the local repository. Reflogs are
useful in various Git commands, to specify the old value of a
-reference. For example, `HEAD@{2}` means "where HEAD used to be two
-moves ago", `master@{one.week.ago}` means "where master used to point
+reference. For example, `HEAD@{2}` means "where `HEAD` used to be two
+moves ago", `master@{one.week.ago}` means "where `master` used to point
to one week ago in this local repository", and so on. See
linkgit:gitrevisions[7] for more details.
diff --git a/Documentation/git-request-pull.txt b/Documentation/git-request-pull.txt
index 4d4392d0f8..f58164aee1 100644
--- a/Documentation/git-request-pull.txt
+++ b/Documentation/git-request-pull.txt
@@ -37,7 +37,7 @@ OPTIONS
The repository URL to be pulled from.
<end>::
- Commit to end at (defaults to HEAD). This names the commit
+ Commit to end at (defaults to `HEAD`). This names the commit
at the tip of the history you are asking to be pulled.
+
When the repository named by `<url>` has the commit at a tip of a
diff --git a/Documentation/git-rerere.txt b/Documentation/git-rerere.txt
index 4cfc883378..c5c6be5202 100644
--- a/Documentation/git-rerere.txt
+++ b/Documentation/git-rerere.txt
@@ -76,10 +76,10 @@ variables respectively.
DISCUSSION
----------
-When your topic branch modifies an overlapping area that your
-master branch (or upstream) touched since your topic branch
-forked from it, you may want to test it with the latest master,
-even before your topic branch is ready to be pushed upstream:
+When your `topic` branch modifies an overlapping area that your
+`master` branch (or upstream) touched since your `topic` branch
+forked from it, you may want to test it with the latest `master`,
+even before your `topic` branch is ready to be pushed upstream:
------------
o---*---o topic
@@ -87,8 +87,8 @@ even before your topic branch is ready to be pushed upstream:
o---o---o---*---o---o master
------------
-For such a test, you need to merge master and topic somehow.
-One way to do it is to pull master into the topic branch:
+For such a test, you need to merge `master` and `topic` somehow.
+One way to do it is to pull `master` into the `topic` branch:
------------
$ git switch topic
@@ -106,9 +106,9 @@ work-in-progress still works with what is in the latest master.
After this test merge, there are two ways to continue your work
on the topic. The easiest is to build on top of the test merge
-commit `+`, and when your work in the topic branch is finally
-ready, pull the topic branch into master, and/or ask the
-upstream to pull from you. By that time, however, the master or
+commit `+`, and when your work in the `topic` branch is finally
+ready, pull the `topic` branch into `master`, and/or ask the
+upstream to pull from you. By that time, however, the `master` or
the upstream might have been advanced since the test merge `+`,
in which case the final commit graph would look like this:
@@ -124,14 +124,14 @@ in which case the final commit graph would look like this:
o---o---o---*---o---o---o---o---+ master
------------
-When your topic branch is long-lived, however, your topic branch
-would end up having many such "Merge from master" commits on it,
+When your `topic` branch is long-lived, however, your `topic` branch
+would end up having many such "Merge from `master`" commits on it,
which would unnecessarily clutter the development history.
Readers of the Linux kernel mailing list may remember that Linus
complained about such too frequent test merges when a subsystem
maintainer asked to pull from a branch full of "useless merges".
-As an alternative, to keep the topic branch clean of test
+As an alternative, to keep the `topic` branch clean of test
merges, you could blow away the test merge, and keep building on
top of the tip before the test merge:
@@ -148,8 +148,8 @@ top of the tip before the test merge:
o---o---o---*---o---o---o---o---+ master
------------
-This would leave only one merge commit when your topic branch is
-finally ready and merged into the master branch. This merge
+This would leave only one merge commit when your `topic` branch is
+finally ready and merged into the `master` branch. This merge
would require you to resolve the conflict, introduced by the
commits marked with `*`. However, this conflict is often the
same conflict you resolved when you created the test merge you
@@ -163,7 +163,7 @@ usual conflict markers `<<<<<<<`, `=======`, and `>>>>>>>` in
them. Later, after you are done resolving the conflicts,
running 'git rerere' again will record the resolved state of these
files. Suppose you did this when you created the test merge of
-master into the topic branch.
+`master` into the `topic` branch.
Next time, after seeing the same conflicted automerge,
running 'git rerere' will perform a three-way merge between the
@@ -185,12 +185,12 @@ the rerere.enabled config variable).
In our example, when you do the test merge, the manual
resolution is recorded, and it will be reused when you do the
-actual merge later with the updated master and topic branch, as long
+actual merge later with the updated `master` and `topic` branch, as long
as the recorded resolution is still applicable.
The information 'git rerere' records is also used when running
'git rebase'. After blowing away the test merge and continuing
-development on the topic branch:
+development on the `topic` branch:
------------
o---*---o-------o---o topic
diff --git a/Documentation/git-reset.txt b/Documentation/git-reset.txt
index e9e816a986..4a55d1f1ac 100644
--- a/Documentation/git-reset.txt
+++ b/Documentation/git-reset.txt
@@ -3,7 +3,7 @@ git-reset(1)
NAME
----
-git-reset - Reset current HEAD to the specified state
+git-reset - Reset current `HEAD` to the specified state
SYNOPSIS
--------
@@ -92,7 +92,7 @@ but carries forward unmerged index entries.
When the working tree is updated, using `--recurse-submodules` will
also recursively reset the working tree of all active submodules
according to the commit recorded in the superproject, also setting
- the submodules' HEAD to be detached at that commit.
+ the submodules' `HEAD` to be detached at that commit.
--
See "Reset, restore and revert" in linkgit:git[1] for the differences
@@ -187,7 +187,7 @@ $ git switch topic/wip <3>
to be in the `master` branch. You want to continue polishing
them in a topic branch, so create `topic/wip` branch off of the
current `HEAD`.
-<2> Rewind the master branch to get rid of those three commits.
+<2> Rewind the `master` branch to get rid of those three commits.
<3> Switch to `topic/wip` branch and keep working.
Undo commits permanently::
diff --git a/Documentation/git-rev-parse.txt b/Documentation/git-rev-parse.txt
index 4b1af8c5a6..7c3c0e0007 100644
--- a/Documentation/git-rev-parse.txt
+++ b/Documentation/git-rev-parse.txt
@@ -155,7 +155,7 @@ for another option.
This is similar to `--symbolic`, but it omits input that
are not refs (i.e. branch or tag names; or more
explicitly disambiguating "heads/master" form, when you
- want to name the "master" branch when there is an
+ want to name the `master` branch when there is an
unfortunately named tag "master"), and show them as full
refnames (e.g. "refs/heads/master").
@@ -475,7 +475,7 @@ This will error out if $REV is empty or not a valid revision.
$ git rev-parse --default master --verify --end-of-options $REV
------------
+
-but if $REV is empty, the commit object name from master will be printed.
+but if $REV is empty, the commit object name from `master` will be printed.
GIT
---
diff --git a/Documentation/git-revert.txt b/Documentation/git-revert.txt
index bb92a4a451..a232db1d98 100644
--- a/Documentation/git-revert.txt
+++ b/Documentation/git-revert.txt
@@ -17,7 +17,7 @@ DESCRIPTION
Given one or more existing commits, revert the changes that the
related patches introduce, and record some new commits that record
them. This requires your working tree to be clean (no modifications
-from the HEAD commit).
+from the `HEAD` commit).
Note: 'git revert' is used to record some new commits to reverse the
effect of some earlier commits (often only a faulty one). If you want to
@@ -82,7 +82,7 @@ more details.
to revert the named commits to your working tree
and the index, but does not make the commits. In addition,
when this option is used, your index does not have to match
- the HEAD commit. The revert is done against the
+ the `HEAD` commit. The revert is done against the
beginning state of your index.
+
This is useful when reverting more than one commits'
@@ -125,13 +125,13 @@ EXAMPLES
--------
`git revert HEAD~3`::
- Revert the changes specified by the fourth last commit in HEAD
+ Revert the changes specified by the fourth last commit in `HEAD`
and create a new commit with the reverted changes.
`git revert -n master~5..master~2`::
Revert the changes done by commits from the fifth last commit
- in master (included) to the third last commit in master
+ in `master` (included) to the third last commit in `master`
(included), but do not create any commit with the reverted
changes. The revert only modifies the working tree and the
index.
diff --git a/Documentation/git-rm.txt b/Documentation/git-rm.txt
index e7ff1b5fbd..ea1f349a87 100644
--- a/Documentation/git-rm.txt
+++ b/Documentation/git-rm.txt
@@ -153,7 +153,7 @@ the submodule's history. If it exists the submodule.<name> section
in the linkgit:gitmodules[5] file will also be removed and that file
will be staged (unless `--cached` or `-n` are used).
-A submodule is considered up to date when the HEAD is the same as
+A submodule is considered up to date when the `HEAD` is the same as
recorded in the index, no tracked files are modified and no untracked
files that aren't ignored are present in the submodules work tree.
Ignored files are deemed expendable and won't stop a submodule's work
diff --git a/Documentation/git-show-ref.txt b/Documentation/git-show-ref.txt
index 8c739adc70..9d7ba22603 100644
--- a/Documentation/git-show-ref.txt
+++ b/Documentation/git-show-ref.txt
@@ -35,7 +35,7 @@ OPTIONS
--head::
- Show the HEAD reference, even if it would normally be filtered out.
+ Show the `HEAD` reference, even if it would normally be filtered out.
--heads::
--tags::
diff --git a/Documentation/git-show.txt b/Documentation/git-show.txt
index 2b1bc7288d..b7a6f9b544 100644
--- a/Documentation/git-show.txt
+++ b/Documentation/git-show.txt
@@ -35,7 +35,7 @@ This manual page describes only the most frequently used options.
OPTIONS
-------
<object>...::
- The names of objects to show (defaults to 'HEAD').
+ The names of objects to show (defaults to `HEAD`).
For a more complete list of ways to spell object names, see
"SPECIFYING REVISIONS" section in linkgit:gitrevisions[7].
diff --git a/Documentation/git-stash.txt b/Documentation/git-stash.txt
index a8c8c32f1e..a2b69ae00f 100644
--- a/Documentation/git-stash.txt
+++ b/Documentation/git-stash.txt
@@ -50,7 +50,7 @@ COMMANDS
push [-p|--patch] [-k|--[no-]keep-index] [-u|--include-untracked] [-a|--all] [-q|--quiet] [-m|--message <message>] [--pathspec-from-file=<file> [--pathspec-file-nul]] [--] [<pathspec>...]::
Save your local modifications to a new 'stash entry' and roll them
- back to HEAD (in the working tree and in the index).
+ back to `HEAD` (in the working tree and in the index).
The <message> part is optional and gives
the description along with the stashed state.
+
@@ -121,7 +121,7 @@ branch <branchname> [<stash>]::
+
This is useful if the branch on which you ran `git stash push` has
changed enough that `git stash apply` fails due to conflicts. Since
-the stash entry is applied on top of the commit that was HEAD at the
+the stash entry is applied on top of the commit that was `HEAD` at the
time `git stash` was run, it restores the originally stashed state
with no conflicts.
@@ -192,7 +192,7 @@ All changes already added to the index are left intact.
--patch::
This option is only valid for `push` and `save` commands.
+
-Interactively select hunks from the diff between HEAD and the
+Interactively select hunks from the diff between `HEAD` and the
working tree to be stashed. The stash entry is constructed such
that its index state is the same as the index state of your
repository, and its worktree contains only the changes you selected
@@ -237,7 +237,7 @@ Separates pathspec from options for disambiguation purposes.
+
The new stash entry records the modified states only for the files
that match the pathspec. The index entries and working tree files
-are then rolled back to the state in HEAD only for these files,
+are then rolled back to the state in `HEAD` only for these files,
too, leaving files that do not match the pathspec intact.
+
For more details, see the 'pathspec' entry in linkgit:gitglossary[7].
diff --git a/Documentation/git-status.txt b/Documentation/git-status.txt
index 2fa3bc58f7..4b1951c5ce 100644
--- a/Documentation/git-status.txt
+++ b/Documentation/git-status.txt
@@ -14,7 +14,7 @@ SYNOPSIS
DESCRIPTION
-----------
Displays paths that have differences between the index file and the
-current HEAD commit, paths that have differences between the working
+current `HEAD` commit, paths that have differences between the working
tree and the index file, and paths in the working tree that are not
tracked by Git (and are not ignored by linkgit:gitignore[5]). The first
are what you _would_ commit by running `git commit`; the second and
@@ -88,7 +88,7 @@ configuration variable documented in linkgit:git-config[1].
Ignore changes to submodules when looking for changes. <when> can be
either "none", "untracked", "dirty" or "all", which is the default.
Using "none" will consider the submodule modified when it either contains
- untracked or modified files or its HEAD differs from the commit recorded
+ untracked or modified files or its `HEAD` differs from the commit recorded
in the superproject and can be used to override any settings of the
'ignore' option in linkgit:git-config[1] or linkgit:gitmodules[5]. When
"untracked" is used submodules are not considered dirty when they only
@@ -242,7 +242,7 @@ U U unmerged, both modified
....
Submodules have more state and instead report
- M the submodule has a different HEAD than
+ M the submodule has a different `HEAD` than
recorded in the index
m the submodule has modified content
? the submodule has untracked files
@@ -341,10 +341,10 @@ Field Meaning
<c> is "C" if the commit changed; otherwise ".".
<m> is "M" if it has tracked changes; otherwise ".".
<u> is "U" if there are untracked changes; otherwise ".".
-<mH> The octal file mode in HEAD.
+<mH> The octal file mode in `HEAD`.
<mI> The octal file mode in the index.
<mW> The octal file mode in the worktree.
-<hH> The object name in HEAD.
+<hH> The object name in `HEAD`.
<hI> The object name in the index.
<X><score> The rename or copy score (denoting the percentage
of similarity between the source and target of the
@@ -354,7 +354,7 @@ Field Meaning
<sep> When the `-z` option is used, the 2 pathnames are separated
with a NUL (ASCII 0x00) byte; otherwise, a tab (ASCII 0x09)
byte separates them.
-<origPath> The pathname in the commit at HEAD or in the index.
+<origPath> The pathname in the commit at `HEAD` or in the index.
This is only present in a renamed/copied entry, and
tells where the renamed/copied contents came from.
--------------------------------------------------------
diff --git a/Documentation/git-submodule.txt b/Documentation/git-submodule.txt
index 1bcde161ca..891c9e48e5 100644
--- a/Documentation/git-submodule.txt
+++ b/Documentation/git-submodule.txt
@@ -39,7 +39,7 @@ add [-b <branch>] [-f|--force] [--name <name>] [--reference <repository>] [--dep
to the changeset to be committed next to the current
project: the current project is termed the "superproject".
+
-<repository> is the URL of the new submodule's origin repository.
+<repository> is the URL of the new submodule's `origin` repository.
This may be either an absolute URL, or (if it begins with ./
or ../), the location relative to the superproject's default remote
repository (Please note that to specify a repository 'foo.git'
@@ -50,7 +50,7 @@ of relative URLs in Git is identical to that of relative directories).
+
The default remote is the remote of the remote-tracking branch
of the current branch. If no such remote-tracking branch exists or
-the HEAD is detached, "origin" is assumed to be the default remote.
+the `HEAD` is detached, `origin` is assumed to be the default remote.
If the superproject doesn't have a default remote configured
the superproject is its own authoritative upstream and the current
working directory is used instead.
@@ -88,7 +88,7 @@ If `--recursive` is specified, this command will recurse into nested
submodules, and show their status as well.
+
If you are only interested in changes of the currently initialized
-submodules with respect to the commit recorded in the index or the HEAD,
+submodules with respect to the commit recorded in the index or the `HEAD`,
linkgit:git-status[1] and linkgit:git-diff[1] will provide that information
too (and can also report changes to a submodule's work tree).
@@ -147,7 +147,7 @@ The 'update' procedures supported both from the command line as well as
through the `submodule.<name>.update` configuration are:
checkout;; the commit recorded in the superproject will be
- checked out in the submodule on a detached HEAD.
+ checked out in the submodule on a detached `HEAD`.
+
If `--force` is specified, the submodule will be checked out (using
`git checkout --force`), even if the commit specified
@@ -183,7 +183,7 @@ set-branch (-d|--default) [--] <path>::
Sets the default remote tracking branch for the submodule. The
`--branch` option allows the remote branch to be specified. The
`--default` option removes the submodule.<name>.branch configuration
- key, which causes the tracking branch to default to the remote 'HEAD'.
+ key, which causes the tracking branch to default to the remote `HEAD`.
set-url [--] <path> <newurl>::
Sets the URL of the specified submodule to <newurl>. Then, it will
@@ -191,7 +191,7 @@ set-url [--] <path> <newurl>::
configuration.
summary [--cached|--files] [(-n|--summary-limit) <n>] [commit] [--] [<path>...]::
- Show commit summary between the given commit (defaults to HEAD) and
+ Show commit summary between the given commit (defaults to `HEAD`) and
working tree/index. For a submodule in question, a series of commits
in the submodule between the given super project commit and the
index or working tree (switched by `--cached`) are shown. If the option
@@ -284,7 +284,7 @@ OPTIONS
`.gitmodules` for `update --remote`. A special value of `.` is used to
indicate that the name of the branch in the submodule should be the
same name as the current branch in the current repository. If the
- option is not specified, it defaults to the remote 'HEAD'.
+ option is not specified, it defaults to the remote `HEAD`.
-f::
--force::
@@ -301,12 +301,12 @@ OPTIONS
--cached::
This option is only valid for status and summary commands. These
- commands typically use the commit found in the submodule HEAD, but
+ commands typically use the commit found in the submodule `HEAD`, but
with this option, the commit stored in the index is used instead.
--files::
This option is only valid for the summary command. This command
- compares the commit in the index with that in the submodule HEAD
+ compares the commit in the index with that in the submodule `HEAD`
when this option is used.
-n::
@@ -339,7 +339,7 @@ SHA-1. If you don't want to fetch, you should use `submodule update
--remote --no-fetch`.
+
Use this option to integrate changes from the upstream subproject with
-your submodule's current HEAD. Alternatively, you can run `git pull`
+your submodule's current `HEAD`. Alternatively, you can run `git pull`
from the submodule, which is equivalent except for the remote branch
name: `update --remote` uses the default upstream repository and
`submodule.<name>.branch`, while `git pull` uses the submodule's
@@ -355,7 +355,7 @@ the submodule itself.
--checkout::
This option is only valid for the update command.
- Checkout the commit recorded in the superproject on a detached HEAD
+ Checkout the commit recorded in the superproject on a detached `HEAD`
in the submodule. This is the default behavior, the main use of
this option is to override `submodule.$name.update` when set to
a value other than `checkout`.
@@ -365,7 +365,7 @@ the submodule itself.
--merge::
This option is only valid for the update command.
Merge the commit recorded in the superproject into the current branch
- of the submodule. If this option is given, the submodule's HEAD will
+ of the submodule. If this option is given, the submodule's `HEAD` will
not be detached. If a merge failure prevents this process, you will
have to resolve the resulting conflicts within the submodule with the
usual conflict resolution tools.
@@ -375,7 +375,7 @@ the submodule itself.
--rebase::
This option is only valid for the update command.
Rebase the current branch onto the commit recorded in the
- superproject. If this option is given, the submodule's HEAD will not
+ superproject. If this option is given, the submodule's `HEAD` will not
be detached. If a merge failure prevents this process, you will have
to resolve these failures with linkgit:git-rebase[1].
If the key `submodule.$name.update` is set to `rebase`, this option is
@@ -432,7 +432,7 @@ options carefully.
--[no-]single-branch::
This option is only valid for the update command.
- Clone only one branch during update: HEAD or one specified by `--branch`.
+ Clone only one branch during update: `HEAD` or one specified by `--branch`.
<path>...::
Paths to submodule(s). When specified this will restrict the command
diff --git a/Documentation/git-svn.txt b/Documentation/git-svn.txt
index 3f55e9c419..f316b7dfc4 100644
--- a/Documentation/git-svn.txt
+++ b/Documentation/git-svn.txt
@@ -140,7 +140,7 @@ repository, either don't use this option or you should both use it in
the same local time zone.
--parent;;
- Fetch only from the SVN parent of the current HEAD.
+ Fetch only from the SVN parent of the current `HEAD`.
--ignore-refs=<regex>;;
Ignore refs for branches or tags matching the Perl regular
@@ -224,7 +224,7 @@ config key: svn-remote.<name>.include-paths
Default: ".gitignore"
'rebase'::
- This fetches revisions from the SVN parent of the current HEAD
+ This fetches revisions from the SVN parent of the current `HEAD`
and rebases the current (uncommitted to SVN) work against it.
+
This works similarly to `svn update` or 'git pull' except that
@@ -394,7 +394,7 @@ Any other arguments are passed directly to 'git log'
output of this mode is format-compatible with the output of
`svn blame' by default. Like the SVN blame command,
local uncommitted changes in the working tree are ignored;
- the version of the file in the HEAD revision is annotated. Unknown
+ the version of the file in the `HEAD` revision is annotated. Unknown
arguments are passed directly to 'git blame'.
+
--git-format;;
@@ -558,7 +558,7 @@ git svn fetch
r2---r3---A---B master
------------
+
-Then fixup "master" with 'git rebase'.
+Then fixup `master` with 'git rebase'.
Do NOT use 'git merge' or your history will not be compatible with a
future 'dcommit'!
+
@@ -954,7 +954,7 @@ HANDLING OF SVN BRANCHES
If 'git svn' is configured to fetch branches (and `--follow-branches`
is in effect), it sometimes creates multiple Git branches for one
SVN branch, where the additional branches have names of the form
-'branchname@nnn' (with nnn an SVN revision number). These additional
+`branchname@nnn` (with nnn an SVN revision number). These additional
branches are created if 'git svn' cannot find a parent commit for the
first commit in an SVN branch, to connect the branch to the history of
the other branches.
@@ -976,7 +976,7 @@ branch was copied from and create appropriate Git commits. This is
indicated by the message "Initializing parent: <branchname>".
Additionally, it will create a special branch named
-'<branchname>@<SVN-Revision>', where <SVN-Revision> is the SVN revision
+`<branchname>@<SVN-Revision>`, where <SVN-Revision> is the SVN revision
number the branch was copied from. This branch will point to the newly
created parent commit of the branch. If in SVN the branch was deleted
and later recreated from a different version, there will be multiple
@@ -988,12 +988,12 @@ single SVN revision.
An example: in an SVN repository with a standard
trunk/tags/branches layout, a directory trunk/sub is created in r.100.
In r.200, trunk/sub is branched by copying it to branches/. 'git svn
-clone -s' will then create a branch 'sub'. It will also create new Git
+clone -s' will then create a branch `sub`. It will also create new Git
commits for r.100 through r.199 and use these as the history of branch
-'sub'. Thus there will be two Git commits for each revision from r.100
+`sub`. Thus there will be two Git commits for each revision from r.100
to r.199 (one containing trunk/, one containing trunk/sub/). Finally,
-it will create a branch 'sub@200' pointing to the new parent commit of
-branch 'sub' (i.e. the commit for r.200 and trunk/sub/).
+it will create a branch `sub@200` pointing to the new parent commit of
+branch `sub` (i.e. the commit for r.200 and trunk/sub/).
CAVEATS
-------
diff --git a/Documentation/git-switch.txt b/Documentation/git-switch.txt
index 5c438cd505..5737f25cf6 100644
--- a/Documentation/git-switch.txt
+++ b/Documentation/git-switch.txt
@@ -42,7 +42,7 @@ OPTIONS
<start-point>::
The starting point for the new branch. Specifying a
`<start-point>` allows you to create a branch based on some
- other point in history than where HEAD currently points. (Or,
+ other point in history than where `HEAD` currently points. (Or,
in the case of `--detach`, allows you to inspect and detach
from some other point.)
+
@@ -99,7 +99,7 @@ the `checkout.defaultRemote` configuration variable, we'll use that
one for the purposes of disambiguation, even if the `<branch>` isn't
unique across all remotes. Set it to e.g. `checkout.defaultRemote=origin`
to always checkout remote branches from there if `<branch>` is
-ambiguous but exists on the 'origin' remote. See also
+ambiguous but exists on the `origin` remote. See also
`checkout.defaultRemote` in linkgit:git-config[1].
+
`--guess` is the default behavior. Use `--no-guess` to disable it.
@@ -193,7 +193,7 @@ name, the guessing is aborted. You can explicitly give a name with
EXAMPLES
--------
-The following command switches to the "master" branch:
+The following command switches to the `master` branch:
------------
$ git switch master
@@ -228,14 +228,14 @@ registered in your index file, so `git diff` would show you what
changes you made since the tip of the new branch.
To switch back to the previous branch before we switched to mytopic
-(i.e. "master" branch):
+(i.e. `master` branch):
------------
$ git switch -
------------
You can grow a new branch from any commit. For example, switch to
-"HEAD~3" and create branch "fixup":
+`HEAD~3` and create branch `fixup`:
------------
$ git switch -c fixup HEAD~3
diff --git a/Documentation/git-symbolic-ref.txt b/Documentation/git-symbolic-ref.txt
index ef68ad2b71..2cbec2d033 100644
--- a/Documentation/git-symbolic-ref.txt
+++ b/Documentation/git-symbolic-ref.txt
@@ -39,7 +39,7 @@ OPTIONS
-q::
--quiet::
Do not issue an error message if the <name> is not a
- symbolic ref but a detached HEAD; instead exit with
+ symbolic ref but a detached `HEAD`; instead exit with
non-zero status silently.
--short::
diff --git a/Documentation/git-tag.txt b/Documentation/git-tag.txt
index b802972bb2..13a0d2abbb 100644
--- a/Documentation/git-tag.txt
+++ b/Documentation/git-tag.txt
@@ -209,7 +209,7 @@ This option is only applicable when listing tags without annotation lines.
<commit>::
<object>::
The object that the new tag will refer to, usually a commit.
- Defaults to HEAD.
+ Defaults to `HEAD`.
CONFIGURATION
-------------
diff --git a/Documentation/git-update-ref.txt b/Documentation/git-update-ref.txt
index 3c3da97c29..be48daa825 100644
--- a/Documentation/git-update-ref.txt
+++ b/Documentation/git-update-ref.txt
@@ -20,7 +20,7 @@ Given three arguments, stores the <newvalue> in the <ref>,
possibly dereferencing the symbolic refs, after verifying that
the current value of the <ref> matches <oldvalue>.
E.g. `git update-ref refs/heads/master <newvalue> <oldvalue>`
-updates the master branch head to <newvalue> only if its current
+updates the `master` branch head to <newvalue> only if its current
value is <oldvalue>. You can specify 40 "0" or an empty string
as <oldvalue> to make sure that the ref you are creating does
not exist.
@@ -151,7 +151,7 @@ LOGGING UPDATES
---------------
If config parameter "core.logAllRefUpdates" is true and the ref is one
under "refs/heads/", "refs/remotes/", "refs/notes/", or a pseudoref
-like HEAD or ORIG_HEAD; or the file "$GIT_DIR/logs/<ref>" exists then
+like `HEAD` or `ORIG_HEAD`; or the file "$GIT_DIR/logs/<ref>" exists then
`git update-ref` will append a line to the log file
"$GIT_DIR/logs/<ref>" (dereferencing all symbolic refs before creating
the log name) describing the change in ref value. Log lines are
diff --git a/Documentation/git-worktree.txt b/Documentation/git-worktree.txt
index f1bb1fa5f5..35bb1bb120 100644
--- a/Documentation/git-worktree.txt
+++ b/Documentation/git-worktree.txt
@@ -97,7 +97,7 @@ list::
List details of each working tree. The main working tree is listed first,
followed by each of the linked working trees. The output details include
whether the working tree is bare, the revision currently checked out, the
-branch currently checked out (or "detached HEAD" if none), "locked" if
+branch currently checked out (or "detached `HEAD`" if none), "locked" if
the worktree is locked, "prunable" if the worktree can be pruned by `prune`
command.
diff --git a/Documentation/git.txt b/Documentation/git.txt
index fc49a4fd42..dcc52adff6 100644
--- a/Documentation/git.txt
+++ b/Documentation/git.txt
@@ -516,7 +516,7 @@ double-quotes and respecting backslash escapes. E.g., the value
`GIT_COMMON_DIR`::
If this variable is set to a path, non-worktree files that are
normally in $GIT_DIR will be taken from this path
- instead. Worktree-specific files such as HEAD or index are
+ instead. Worktree-specific files such as `HEAD` or index are
taken from $GIT_DIR. See linkgit:gitrepository-layout[5] and
linkgit:git-worktree[1] for
details. This variable has lower precedence than other path
@@ -914,7 +914,7 @@ standard output.
`GIT_PRINT_SHA1_ELLIPSIS` (deprecated)::
If set to `yes`, print an ellipsis following an
(abbreviated) SHA-1 value. This affects indications of
- detached HEADs (linkgit:git-checkout[1]) and the raw
+ detached `HEAD`s (linkgit:git-checkout[1]) and the raw
diff output (linkgit:git-diff[1]). Printing an
ellipsis in the cases mentioned is no longer considered
adequate and support for it is likely to be removed in the
diff --git a/Documentation/gitcli.txt b/Documentation/gitcli.txt
index 92e4ba6a2f..0fb18e3f35 100644
--- a/Documentation/gitcli.txt
+++ b/Documentation/gitcli.txt
@@ -29,7 +29,7 @@ arguments. Here are the rules:
E.g. `git diff -- HEAD` is, "I have a file called HEAD in my work
tree. Please show changes between the version I staged in the index
and what I have in the work tree for that file", not "show difference
- between the HEAD commit and the work tree as a whole". You can say
+ between the `HEAD` commit and the work tree as a whole". You can say
`git diff HEAD --` to ask for the latter.
* Without disambiguating `--`, Git makes a reasonable guess, but errors
diff --git a/Documentation/gitcore-tutorial.txt b/Documentation/gitcore-tutorial.txt
index 633439702f..77573c813c 100644
--- a/Documentation/gitcore-tutorial.txt
+++ b/Documentation/gitcore-tutorial.txt
@@ -330,7 +330,7 @@ object name for the commit to its standard output.
And this is where we create the `.git/refs/heads/master` file
which is pointed at by `HEAD`. This file is supposed to contain
-the reference to the top-of-tree of the master branch, and since
+the reference to the top-of-tree of the `master` branch, and since
that's exactly what 'git commit-tree' spits out, we can do this
all with a sequence of simple shell commands:
@@ -402,7 +402,7 @@ In other words, 'git diff-index' normally compares a tree against the
working tree, but when given the `--cached` flag, it is told to
instead compare against just the index cache contents, and ignore the
current working tree state entirely. Since we just wrote the index
-file to HEAD, doing `git diff-index --cached -p HEAD` should thus return
+file to `HEAD`, doing `git diff-index --cached -p HEAD` should thus return
an empty set of differences, and that's exactly what it does.
[NOTE]
@@ -446,7 +446,7 @@ flag or not, since now the index is coherent with the working tree.
Now, since we've updated `hello` in the index, we can commit the new
version. We could do it by writing the tree by hand again, and
committing the tree (this time we'd have to use the `-p HEAD` flag to
-tell commit that the HEAD was the *parent* of the new commit, and that
+tell commit that the `HEAD` was the *parent* of the new commit, and that
this wasn't an initial commit any more), but you've done that once
already, so let's just use the helpful script this time:
@@ -822,7 +822,7 @@ commit log message from the command line.
Now, to make it a bit more interesting, let's assume that somebody else
does some work in the original branch, and simulate that by going back
-to the master branch, and editing the same file differently there:
+to the `master` branch, and editing the same file differently there:
------------
$ git switch master
@@ -838,7 +838,7 @@ $ echo "Lots of fun" >>example
$ git commit -m "Some fun." -i hello example
------------
-since the master branch is obviously in a much better mood.
+since the `master` branch is obviously in a much better mood.
Now, you've got two branches, and you decide that you want to merge the
work done. Before we do that, let's introduce a cool graphical tool that
@@ -933,21 +933,21 @@ shows an ordinary commit on the current branch, `-` is a merge commit), which
means they are now part of the `master` branch. Only the "Some
work" commit has the plus `+` character in the second column,
because `mybranch` has not been merged to incorporate these
-commits from the master branch. The string inside brackets
+commits from the `master` branch. The string inside brackets
before the commit log message is a short name you can use to
-name the commit. In the above example, 'master' and 'mybranch'
-are branch heads. 'master^' is the first parent of 'master'
+name the commit. In the above example, `master` and `mybranch`
+are branch heads. `master^` is the first parent of `master`
branch head. Please see linkgit:gitrevisions[7] if you want to
see more complex cases.
[NOTE]
Without the `--more=1` option, 'git show-branch' would not output the
'[master^]' commit, as '[mybranch]' commit is a common ancestor of
-both 'master' and 'mybranch' tips. Please see linkgit:git-show-branch[1]
+both `master` and `mybranch` tips. Please see linkgit:git-show-branch[1]
for details.
[NOTE]
-If there were more commits on the 'master' branch after the merge, the
+If there were more commits on the `master` branch after the merge, the
merge commit itself would not be shown by 'git show-branch' by
default. You would need to provide `--sparse` option to make the
merge commit visible in this case.
@@ -1523,7 +1523,7 @@ like this:
the initial cloning is stored in the remote.origin.url
configuration variable.
-2. Do your work in your repository on 'master' branch.
+2. Do your work in your repository on `master` branch.
3. Run `git fetch origin` from the public repository of your
upstream every once in a while. This does only the first
@@ -1559,9 +1559,9 @@ using branches with Git.
We have already seen how branches work previously,
with "fun and work" example using two branches. The idea is the
same if there are more than two branches. Let's say you started
-out from "master" head, and have some new code in the "master"
-branch, and two independent fixes in the "commit-fix" and
-"diff-fix" branches:
+out from `master` head, and have some new code in the `master`
+branch, and two independent fixes in the `commit-fix` and
+`diff-fix` branches:
------------
$ git show-branch
@@ -1577,8 +1577,8 @@ $ git show-branch
------------
Both fixes are tested well, and at this point, you want to merge
-in both of them. You could merge in 'diff-fix' first and then
-'commit-fix' next, like this:
+in both of them. You could merge in `diff-fix` first and then
+`commit-fix` next, like this:
------------
$ git merge -m "Merge fix in diff-fix" diff-fix
@@ -1607,8 +1607,8 @@ first and the other next, when what you have are a set of truly
independent changes (if the order mattered, then they are not
independent by definition). You could instead merge those two
branches into the current branch at once. First let's undo what
-we just did and start over. We would want to get the master
-branch before these two merges by resetting it to 'master~2':
+we just did and start over. We would want to get the `master`
+branch before these two merges by resetting it to `master~2`:
------------
$ git reset --hard master~2
diff --git a/Documentation/giteveryday.txt b/Documentation/giteveryday.txt
index faba2ef088..03c9e5e8d5 100644
--- a/Documentation/giteveryday.txt
+++ b/Documentation/giteveryday.txt
@@ -104,8 +104,8 @@ modification will be caught if you do `git commit -a` later.
<6> look at all your changes including the previous commit.
<7> amend the previous commit, adding all your new changes,
using your original message.
-<8> switch to the master branch.
-<9> merge a topic branch into your master branch.
+<8> switch to the `master` branch.
+<9> merge a topic branch into your `master` branch.
<10> review commit logs; other forms to limit output can be
combined and include `-10` (to show up to 10 commits),
`--until=2005-12-10`, etc.
@@ -123,7 +123,7 @@ addition to the ones needed by a standalone developer.
* linkgit:git-clone[1] from the upstream to prime your local
repository.
- * linkgit:git-pull[1] and linkgit:git-fetch[1] from "origin"
+ * linkgit:git-pull[1] and linkgit:git-fetch[1] from `origin`
to keep up-to-date with the upstream.
* linkgit:git-push[1] to shared repository, if you adopt CVS
@@ -160,9 +160,9 @@ $ git reset --hard ORIG_HEAD <10>
$ git gc <11>
------------
+
-<1> checkout a new branch `mine` from master.
+<1> checkout a new branch `mine` from `master`.
<2> repeat as needed.
-<3> extract patches from your branch, relative to master,
+<3> extract patches from your branch, relative to `master`,
<4> and email them.
<5> return to `master`, ready to see what's new
<6> `git pull` fetches from `origin` by default and merges into the
@@ -210,7 +210,7 @@ remote-tracking branches on the mothership machine. You could use this
as a back-up method. Likewise, you can pretend that mothership
"fetched" from you (useful when access is one sided).
<5> on mothership machine, merge the work done on the satellite
-machine into the master branch.
+machine into the `master` branch.
Branch off of a specific tag.::
+
@@ -305,7 +305,7 @@ master or exposed as a part of a stable branch.
<8> and bundle topic branches still cooking.
<9> backport a critical fix.
<10> create a signed tag.
-<11> make sure master was not accidentally rewound beyond that
+<11> make sure `master` was not accidentally rewound beyond that
already pushed out.
<12> In the output from `git show-branch`, `master` should have
everything `ko/master` has, and `next` should have
@@ -446,7 +446,7 @@ refs/tags/v[0-9]* david
<2> and make the shared repository writable by the group.
<3> use update-hook example by Carl from Documentation/howto/
for branch policy control.
-<4> alice and cindy can push into master, only bob can push into doc-update.
+<4> alice and cindy can push into `master`, only bob can push into `doc-update`.
david is the release manager and is the only person who can
create and push version tags.
diff --git a/Documentation/githooks.txt b/Documentation/githooks.txt
index b51959ff94..5e87987882 100644
--- a/Documentation/githooks.txt
+++ b/Documentation/githooks.txt
@@ -189,8 +189,8 @@ post-checkout
This hook is invoked when a linkgit:git-checkout[1] or
linkgit:git-switch[1] is run after having updated the
-worktree. The hook is given three parameters: the ref of the previous HEAD,
-the ref of the new HEAD (which may or may not have changed), and a flag
+worktree. The hook is given three parameters: the ref of the previous `HEAD`,
+the ref of the new `HEAD` (which may or may not have changed), and a flag
indicating whether the checkout was a branch checkout (changing branches,
flag=1) or a file checkout (retrieving a file from the index, flag=0).
This hook cannot affect the outcome of `git switch` or `git checkout`,
@@ -199,11 +199,11 @@ these two commands.
It is also run after linkgit:git-clone[1], unless the `--no-checkout` (`-n`) option is
used. The first parameter given to the hook is the null-ref, the second the
-ref of the new HEAD and the flag is always 1. Likewise for `git worktree add`
+ref of the new `HEAD` and the flag is always 1. Likewise for `git worktree add`
unless `--no-checkout` is used.
This hook can be used to perform repository validity checks, auto-display
-differences from the previous HEAD if different, or set working dir metadata
+differences from the previous `HEAD` if different, or set working dir metadata
properties.
post-merge
diff --git a/Documentation/gitk.txt b/Documentation/gitk.txt
index 6ceeae227c..29bd307bb9 100644
--- a/Documentation/gitk.txt
+++ b/Documentation/gitk.txt
@@ -64,7 +64,7 @@ linkgit:git-rev-list[1] for a complete list.
--merge::
After an attempt to merge stops with conflicts, show the commits on
- the history between two branches (i.e. the HEAD and the MERGE_HEAD)
+ the history between two branches (i.e. the `HEAD` and the `MERGE_HEAD`)
that modify the conflicted files and do not exist on all the heads
being merged.
diff --git a/Documentation/gitnamespaces.txt b/Documentation/gitnamespaces.txt
index b614969ad2..29bac9e1bf 100644
--- a/Documentation/gitnamespaces.txt
+++ b/Documentation/gitnamespaces.txt
@@ -16,7 +16,7 @@ DESCRIPTION
-----------
Git supports dividing the refs of a single repository into multiple
-namespaces, each of which has its own branches, tags, and HEAD. Git can
+namespaces, each of which has its own branches, tags, and `HEAD`. Git can
expose each namespace as an independent repository to pull from and push
to, while sharing the object store, and exposing all the refs to
operations such as linkgit:git-gc[1].
diff --git a/Documentation/gitremote-helpers.txt b/Documentation/gitremote-helpers.txt
index 6f1e269ae4..f5ac7ae7ca 100644
--- a/Documentation/gitremote-helpers.txt
+++ b/Documentation/gitremote-helpers.txt
@@ -322,9 +322,9 @@ Supported if the helper has the "fetch" capability.
(if there is only one reference to push, a single 'push' command
is followed by a blank line). For example, the following would
be two batches of 'push', the first asking the remote-helper
- to push the local ref 'master' to the remote ref 'master' and
- the local `HEAD` to the remote 'branch', and the second
- asking to push ref 'foo' to ref 'bar' (forced update requested
+ to push the local ref `master` to the remote ref `master` and
+ the local `HEAD` to the remote `branch`, and the second
+ asking to push ref `foo` to ref `bar` (forced update requested
by the '+').
+
------------
diff --git a/Documentation/gitrepository-layout.txt b/Documentation/gitrepository-layout.txt
index 1a2ef4c150..e174a28360 100644
--- a/Documentation/gitrepository-layout.txt
+++ b/Documentation/gitrepository-layout.txt
@@ -128,7 +128,7 @@ HEAD::
describing the currently active branch. It does not mean
much if the repository is not associated with any working tree
(i.e. a 'bare' repository), but a valid Git repository
- *must* have the HEAD file; some porcelains may use it to
+ *must* have the `HEAD` file; some porcelains may use it to
guess the designated "default" branch of the repository
(usually 'master'). It is legal if the named branch
'name' does not (yet) exist. In some legacy setups, it is
@@ -137,7 +137,7 @@ HEAD::
+
HEAD can also record a specific commit directly, instead of
being a symref to point at the current branch. Such a state
-is often called 'detached HEAD.' See linkgit:git-checkout[1]
+is often called 'detached `HEAD`.' See linkgit:git-checkout[1]
for details.
config::
diff --git a/Documentation/gittutorial-2.txt b/Documentation/gittutorial-2.txt
index e1e09070ad..2b3cba8ae3 100644
--- a/Documentation/gittutorial-2.txt
+++ b/Documentation/gittutorial-2.txt
@@ -132,7 +132,7 @@ and the contents of these files is just the compressed data plus a
header identifying their length and their type. The type is either a
blob, a tree, a commit, or a tag.
-The simplest commit to find is the HEAD commit, which we can find
+The simplest commit to find is the `HEAD` commit, which we can find
from .git/HEAD:
------------------------------------------------
diff --git a/Documentation/gittutorial.txt b/Documentation/gittutorial.txt
index ff366cc752..089a89f776 100644
--- a/Documentation/gittutorial.txt
+++ b/Documentation/gittutorial.txt
@@ -182,7 +182,7 @@ Managing branches
-----------------
A single Git repository can maintain multiple branches of
-development. To create a new branch named "experimental", use
+development. To create a new branch named `experimental`, use
------------------------------------------------
$ git branch experimental
@@ -201,8 +201,8 @@ you'll get a list of all existing branches:
* master
------------------------------------------------
-The "experimental" branch is the one you just created, and the
-"master" branch is a default branch that was created for you
+The `experimental` branch is the one you just created, and the
+`master` branch is a default branch that was created for you
automatically. The asterisk marks the branch you are currently on;
type
@@ -211,7 +211,7 @@ $ git switch experimental
------------------------------------------------
to switch to the experimental branch. Now edit a file, commit the
-change, and switch back to the master branch:
+change, and switch back to the `master` branch:
------------------------------------------------
(edit file)
@@ -220,9 +220,9 @@ $ git switch master
------------------------------------------------
Check that the change you made is no longer visible, since it was
-made on the experimental branch and you're back on the master branch.
+made on the experimental branch and you're back on the `master` branch.
-You can make a different change on the master branch:
+You can make a different change on the `master` branch:
------------------------------------------------
(edit file)
@@ -230,7 +230,7 @@ $ git commit -a
------------------------------------------------
at this point the two branches have diverged, with different changes
-made in each. To merge the changes made in experimental into master, run
+made in each. To merge the changes made in `experimental` into `master`, run
------------------------------------------------
$ git merge experimental
@@ -310,7 +310,7 @@ alice$ cd /home/alice/project
alice$ git pull /home/bob/myrepo master
------------------------------------------------
-This merges the changes from Bob's "master" branch into Alice's
+This merges the changes from Bob's `master` branch into Alice's
current branch. If Alice has made her own changes in the meantime,
then she may need to manually fix any conflicts.
@@ -327,7 +327,7 @@ some way and pull again when this happens).
Alice can peek at what Bob did without merging first, using the "fetch"
command; this allows Alice to inspect what Bob did, using a special
-symbol "FETCH_HEAD", in order to determine if he has anything worth
+symbol `FETCH_HEAD`, in order to determine if he has anything worth
pulling, like this:
------------------------------------------------
@@ -336,10 +336,10 @@ alice$ git log -p HEAD..FETCH_HEAD
------------------------------------------------
This operation is safe even if Alice has uncommitted local changes.
-The range notation "HEAD..FETCH_HEAD" means "show everything that is reachable
-from the FETCH_HEAD but exclude anything that is reachable from HEAD".
-Alice already knows everything that leads to her current state (HEAD),
-and reviews what Bob has in his state (FETCH_HEAD) that she has not
+The range notation "`HEAD`..`FETCH_HEAD`" means "show everything that is reachable
+from the `FETCH_HEAD` but exclude anything that is reachable from `HEAD`".
+Alice already knows everything that leads to her current state (`HEAD`),
+and reviews what Bob has in his state (`FETCH_HEAD`) that she has not
seen with this command.
If Alice wants to visualize what Bob did since their histories forked
@@ -397,10 +397,10 @@ alice$ git log -p master..bob/master
-------------------------------------
shows a list of all the changes that Bob made since he branched from
-Alice's master branch.
+Alice's `master` branch.
After examining those changes, Alice
-could merge the changes into her master branch:
+could merge the changes into her `master` branch:
-------------------------------------
alice$ git merge bob/master
@@ -436,8 +436,8 @@ bob$ git config --get remote.origin.url
`git config -l`, and the linkgit:git-config[1] man page
explains the meaning of each option.)
-Git also keeps a pristine copy of Alice's master branch under the
-name "origin/master":
+Git also keeps a pristine copy of Alice's `master` branch under the
+name `origin/master`:
-------------------------------------
bob$ git branch -r
@@ -570,22 +570,22 @@ $ git log v2.5.. Makefile # commits since v2.5 which modify
You can also give 'git log' a "range" of commits where the first is not
necessarily an ancestor of the second; for example, if the tips of
-the branches "stable" and "master" diverged from a common
+the branches `stable` and `master` diverged from a common
commit some time ago, then
-------------------------------------
$ git log stable..master
-------------------------------------
-will list commits made in the master branch but not in the
-stable branch, while
+will list commits made in the `master` branch but not in the
+`stable` branch, while
-------------------------------------
$ git log master..stable
-------------------------------------
-will show the list of commits made on the stable branch but not
-the master branch.
+will show the list of commits made on the `stable` branch but not
+the `master` branch.
The 'git log' command has a weakness: it must present commits in a
list. When the history has lines of development that diverged and
diff --git a/Documentation/gitweb.txt b/Documentation/gitweb.txt
index 3cc9b034c4..ee6e6a30fd 100644
--- a/Documentation/gitweb.txt
+++ b/Documentation/gitweb.txt
@@ -291,7 +291,7 @@ action::
is not set, and to 'summary' otherwise.
revision::
- Revision shown. Defaults to HEAD.
+ Revision shown. Defaults to `HEAD`.
path::
The path within the <repository> that the action is performed on,
@@ -385,7 +385,7 @@ The 'shortlog' view is more compact; it shows one commit per line.
history::
Shows history of the file or directory in a given repository path,
- starting from given revision (defaults to HEAD, i.e. default branch).
+ starting from given revision (defaults to `HEAD`, i.e. default branch).
+
This view is similar to 'shortlog' view.
diff --git a/Documentation/gitworkflows.txt b/Documentation/gitworkflows.txt
index 47cf97f9be..07344bf85a 100644
--- a/Documentation/gitworkflows.txt
+++ b/Documentation/gitworkflows.txt
@@ -75,25 +75,25 @@ As a given feature goes from experimental to stable, it also
"graduates" between the corresponding branches of the software.
`git.git` uses the following 'integration branches':
-* 'maint' tracks the commits that should go into the next "maintenance
+* `maint` tracks the commits that should go into the next "maintenance
release", i.e., update of the last released stable version;
-* 'master' tracks the commits that should go into the next release;
+* `master` tracks the commits that should go into the next release;
-* 'next' is intended as a testing branch for topics being tested for
- stability for master.
+* `next` is intended as a testing branch for topics being tested for
+ stability for `master`.
There is a fourth official branch that is used slightly differently:
-* 'seen' (patches seen by the maintainer) is an integration branch for
+* `seen` (patches seen by the maintainer) is an integration branch for
things that are not quite ready for inclusion yet (see "Integration
Branches" below).
Each of the four branches is usually a direct descendant of the one
above it.
-Conceptually, the feature enters at an unstable branch (usually 'next'
-or 'seen'), and "graduates" to 'master' for the next release once it is
+Conceptually, the feature enters at an unstable branch (usually `next`
+or `seen`), and "graduates" to `master` for the next release once it is
considered stable enough.
@@ -113,7 +113,7 @@ other.
=====================================
This gives a very controlled flow of fixes. If you notice that you
-have applied a fix to e.g. 'master' that is also required in 'maint',
+have applied a fix to e.g. `master` that is also required in `maint`,
you will need to cherry-pick it (using linkgit:git-cherry-pick[1])
downwards. This will happen a few times and is nothing to worry about
unless you do it very frequently.
@@ -149,11 +149,11 @@ Many things can then be done very naturally:
it. If the topic has evolved further in the meantime, merge again.
(Note that you do not necessarily have to merge it to the oldest
integration branch first. For example, you can first merge a bugfix
- to 'next', give it some testing time, and merge to 'maint' when you
+ to `next`, give it some testing time, and merge to `maint` when you
know it is stable.)
-* If you find you need new features from the branch 'other' to continue
- working on your topic, merge 'other' to 'topic'. (However, do not
+* If you find you need new features from the branch `other` to continue
+ working on your topic, merge `other` to `topic`. (However, do not
do this "just habitually", see below.)
* If you find you forked off the wrong branch and want to move it
@@ -207,7 +207,7 @@ If you make it (very) clear that this branch is going to be deleted
right after the testing, you can even publish this branch, for example
to give the testers a chance to work with it, or other developers a
chance to see if their in-progress work will be compatible. `git.git`
-has such an official throw-away integration branch called 'seen'.
+has such an official throw-away integration branch called `seen`.
Branch management for a release
@@ -217,27 +217,27 @@ Assuming you are using the merge approach discussed above, when you
are releasing your project you will need to do some additional branch
management work.
-A feature release is created from the 'master' branch, since 'master'
+A feature release is created from the `master` branch, since `master`
tracks the commits that should go into the next feature release.
-The 'master' branch is supposed to be a superset of 'maint'. If this
-condition does not hold, then 'maint' contains some commits that
-are not included on 'master'. The fixes represented by those commits
+The `master` branch is supposed to be a superset of `maint`. If this
+condition does not hold, then `maint` contains some commits that
+are not included on `master`. The fixes represented by those commits
will therefore not be included in your feature release.
-To verify that 'master' is indeed a superset of 'maint', use git log:
+To verify that `master` is indeed a superset of `maint`, use git log:
-.Verify 'master' is a superset of 'maint'
+.Verify `master` is a superset of `maint`
[caption="Recipe: "]
=====================================
`git log master..maint`
=====================================
This command should not list any commits. Otherwise, check out
-'master' and merge 'maint' into it.
+`master` and merge `maint` into it.
Now you can proceed with the creation of the feature release. Apply a
-tag to the tip of 'master' indicating the release version:
+tag to the tip of `master` indicating the release version:
.Release tagging
[caption="Recipe: "]
@@ -251,9 +251,9 @@ others tracking your project. The push could also trigger a
post-update hook to perform release-related items such as building
release tarballs and preformatted documentation pages.
-Similarly, for a maintenance release, 'maint' is tracking the commits
+Similarly, for a maintenance release, `maint` is tracking the commits
to be released. Therefore, in the steps above simply tag and push
-'maint' rather than 'master'.
+`maint` rather than `master`.
Maintenance branch management after a feature release
@@ -275,10 +275,10 @@ where X.Y.Z is the current release).
`git branch maint-X.Y.(Z-1) maint`
=====================================
-The 'maint' branch should now be fast-forwarded to the newly released
+The `maint` branch should now be fast-forwarded to the newly released
code so that maintenance fixes can be tracked for the current release:
-.Update maint to new release
+.Update `maint` to new release
[caption="Recipe: "]
=====================================
* `git checkout maint`
@@ -286,7 +286,7 @@ code so that maintenance fixes can be tracked for the current release:
=====================================
If the merge fails because it is not a fast-forward, then it is
-possible some fixes on 'maint' were missed in the feature release.
+possible some fixes on `maint` were missed in the feature release.
This will not happen if the content of the branches was verified as
described in the previous section.
@@ -294,9 +294,9 @@ described in the previous section.
Branch management for next and seen after a feature release
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
-After a feature release, the integration branch 'next' may optionally be
-rewound and rebuilt from the tip of 'master' using the surviving
-topics on 'next':
+After a feature release, the integration branch `next` may optionally be
+rewound and rebuilt from the tip of `master` using the surviving
+topics on `next`:
.Rewind and rebuild next
[caption="Recipe: "]
@@ -307,20 +307,20 @@ topics on 'next':
* ...
=====================================
-The advantage of doing this is that the history of 'next' will be
-clean. For example, some topics merged into 'next' may have initially
+The advantage of doing this is that the history of `next` will be
+clean. For example, some topics merged into `next` may have initially
looked promising, but were later found to be undesirable or premature.
-In such a case, the topic is reverted out of 'next' but the fact
+In such a case, the topic is reverted out of `next` but the fact
remains in the history that it was once merged and reverted. By
-recreating 'next', you give another incarnation of such topics a clean
+recreating `next`, you give another incarnation of such topics a clean
slate to retry, and a feature release is a good point in history to do
so.
If you do this, then you should make a public announcement indicating
-that 'next' was rewound and rebuilt.
+that `next` was rewound and rebuilt.
-The same rewind and rebuild process may be followed for 'seen'. A public
-announcement is not necessary since 'seen' is a throw-away branch, as
+The same rewind and rebuild process may be followed for `seen`. A public
+announcement is not necessary since `seen` is a throw-away branch, as
described above.
diff --git a/Documentation/glossary-content.txt b/Documentation/glossary-content.txt
index 67c7a50b96..88ee109fdf 100644
--- a/Documentation/glossary-content.txt
+++ b/Documentation/glossary-content.txt
@@ -113,16 +113,16 @@ to point at the new commit.
[[def_detached_HEAD]]detached HEAD::
Normally the <<def_HEAD,HEAD>> stores the name of a
<<def_branch,branch>>, and commands that operate on the
- history HEAD represents operate on the history leading to the
- tip of the branch the HEAD points at. However, Git also
+ history `HEAD` represents operate on the history leading to the
+ tip of the branch the `HEAD` points at. However, Git also
allows you to <<def_checkout,check out>> an arbitrary
<<def_commit,commit>> that isn't necessarily the tip of any
- particular branch. The HEAD in such a state is called
+ particular branch. The `HEAD` in such a state is called
"detached".
+
Note that commands that operate on the history of the current branch
(e.g. `git commit` to build a new history on top of it) still work
-while the HEAD is detached. They update the HEAD to point at the tip
+while the `HEAD` is detached. They update the `HEAD` to point at the tip
of the updated history without affecting any branch. Commands that
update or inquire information _about_ the current branch (e.g. `git
branch --set-upstream-to` that sets what remote-tracking branch the
@@ -193,7 +193,7 @@ for a more flexible and robust system to do the same thing.
[[def_HEAD]]HEAD::
The current <<def_branch,branch>>. In more detail: Your <<def_working_tree,
working tree>> is normally derived from the state of the tree
- referred to by HEAD. HEAD is a reference to one of the
+ referred to by `HEAD`. `HEAD` is a reference to one of the
<<def_head,heads>> in your repository, except when using a
<<def_detached_HEAD,detached HEAD>>, in which case it directly
references an arbitrary commit.
@@ -456,7 +456,7 @@ exclude;;
like refs for the purposes of rev-parse, but which are treated
specially by git. Pseudorefs both have names that are all-caps,
and always start with a line consisting of a
- <<def_SHA1,SHA-1>> followed by whitespace. So, HEAD is not a
+ <<def_SHA1,SHA-1>> followed by whitespace. So, `HEAD` is not a
pseudoref, because it is sometimes a symbolic ref. They might
optionally contain some additional data. `MERGE_HEAD` and
`CHERRY_PICK_HEAD` are examples. Unlike
diff --git a/Documentation/rev-list-options.txt b/Documentation/rev-list-options.txt
index 965cb32f9c..e6e9669f68 100644
--- a/Documentation/rev-list-options.txt
+++ b/Documentation/rev-list-options.txt
@@ -252,7 +252,7 @@ to list all commits on only one side of them is with
`--left-right` (see the example below in the description of
the `--left-right` option). However, it shows the commits that were
cherry-picked from the other branch (for example, ``3rd on b'' may be
-cherry-picked from branch A). With this option, such pairs of commits are
+cherry-picked from branch `A`). With this option, such pairs of commits are
excluded from the output.
--left-only::
diff --git a/Documentation/revisions.txt b/Documentation/revisions.txt
index d9169c062e..33f30b62eb 100644
--- a/Documentation/revisions.txt
+++ b/Documentation/revisions.txt
@@ -23,8 +23,8 @@ characters and to avoid word splitting.
followed by a dash and a number of commits, followed by a dash, a
'g', and an abbreviated object name.
-'<refname>', e.g. 'master', 'heads/master', 'refs/heads/master'::
- A symbolic ref name. E.g. 'master' typically means the commit
+'<refname>', e.g. `master`, 'heads/master', 'refs/heads/master'::
+ A symbolic ref name. E.g. `master` typically means the commit
object referenced by 'refs/heads/master'. If you
happen to have both 'heads/master' and 'tags/master', you can
explicitly say 'heads/master' to tell Git which one you mean.
@@ -65,7 +65,7 @@ some output processing may assume ref names in UTF-8.
'@'::
'@' alone is a shortcut for `HEAD`.
-'[<refname>]@{<date>}', e.g. 'master@\{yesterday\}', 'HEAD@{5 minutes ago}'::
+'[<refname>]@{<date>}', e.g. `master@{yesterday}`, `HEAD@{5 minutes ago}`::
A ref followed by the suffix '@' with a date specification
enclosed in a brace
pair (e.g. '\{yesterday\}', '{1 month 2 weeks 3 days 1 hour 1
@@ -74,28 +74,28 @@ some output processing may assume ref names in UTF-8.
used immediately following a ref name and the ref must have an
existing log ('$GIT_DIR/logs/<ref>'). Note that this looks up the state
of your *local* ref at a given time; e.g., what was in your local
- 'master' branch last week. If you want to look at commits made during
+ `master` branch last week. If you want to look at commits made during
certain times, see `--since` and `--until`.
-'<refname>@{<n>}', e.g. 'master@\{1\}'::
+'<refname>@{<n>}', e.g. `master@{1}`::
A ref followed by the suffix '@' with an ordinal specification
enclosed in a brace pair (e.g. '\{1\}', '\{15\}') specifies
- the n-th prior value of that ref. For example 'master@\{1\}'
- is the immediate prior value of 'master' while 'master@\{5\}'
- is the 5th prior value of 'master'. This suffix may only be used
+ the n-th prior value of that ref. For example `master@{1}`
+ is the immediate prior value of `master` while `master@{5}`
+ is the 5th prior value of `master`. This suffix may only be used
immediately following a ref name and the ref must have an existing
log ('$GIT_DIR/logs/<refname>').
'@{<n>}', e.g. '@\{1\}'::
You can use the '@' construct with an empty ref part to get at a
reflog entry of the current branch. For example, if you are on
- branch 'blabla' then '@\{1\}' means the same as 'blabla@\{1\}'.
+ branch `blabla` then `@{1}` means the same as `blabla@{1}`.
'@{-<n>}', e.g. '@{-1}'::
The construct '@{-<n>}' means the <n>th branch/commit checked out
before the current one.
-'[<branchname>]@\{upstream\}', e.g. 'master@\{upstream\}', '@\{u\}'::
+'[<branchname>]@\{upstream\}', e.g. `master@{upstream}`, '@\{u\}'::
The suffix '@\{upstream\}' to a branchname (short form '<branchname>@\{u\}')
refers to the branch that the branch specified by branchname is set to build on
top of (configured with `branch.<name>.remote` and
@@ -103,7 +103,7 @@ some output processing may assume ref names in UTF-8.
current one. These suffixes are also accepted when spelled in uppercase, and
they mean the same thing no matter the case.
-'[<branchname>]@\{push\}', e.g. 'master@\{push\}', '@\{push\}'::
+'[<branchname>]@\{push\}', e.g. `master@{push}`, '@\{push\}'::
The suffix '@\{push}' reports the branch "where we would push to" if
`git push` were run while `branchname` was checked out (or the current
`HEAD` if no branchname is specified). Since our push destination is
@@ -131,7 +131,7 @@ from one location and push to another. In a non-triangular workflow,
This suffix is also accepted when spelled in uppercase, and means the same
thing no matter the case.
-'<rev>{caret}[<n>]', e.g. 'HEAD{caret}, v1.5.1{caret}0'::
+'<rev>{caret}[<n>]', e.g. `HEAD^`, 'v1.5.1{caret}0'::
A suffix '{caret}' to a revision parameter means the first parent of
that commit object. '{caret}<n>' means the <n>th parent (i.e.
'<rev>{caret}'
@@ -139,7 +139,7 @@ thing no matter the case.
'<rev>{caret}0' means the commit itself and is used when '<rev>' is the
object name of a tag object that refers to a commit object.
-'<rev>{tilde}[<n>]', e.g. 'HEAD{tilde}, master{tilde}3'::
+'<rev>{tilde}[<n>]', e.g. `HEAD~`, `master~3`::
A suffix '{tilde}' to a revision parameter means the first parent of
that commit object.
A suffix '{tilde}<n>' to a revision parameter means the commit
@@ -175,7 +175,7 @@ existing tag object.
and dereference the tag recursively until a non-tag object is
found.
-'<rev>{caret}{/<text>}', e.g. 'HEAD^{/fix nasty bug}'::
+'<rev>{caret}{/<text>}', e.g. `HEAD^{/fix nasty bug}`::
A suffix '{caret}' to a revision parameter, followed by a brace
pair that contains a text led by a slash,
is the same as the ':/fix nasty bug' syntax below except that
@@ -186,7 +186,7 @@ existing tag object.
A colon, followed by a slash, followed by a text, names
a commit whose commit message matches the specified regular expression.
This name returns the youngest matching commit which is
- reachable from any ref, including HEAD.
+ reachable from any ref, including `HEAD`.
The regular expression can match any part of the
commit message. To match messages starting with a string, one can use
e.g. ':/^foo'. The special sequence ':/!' is reserved for modifiers to what
@@ -196,7 +196,7 @@ existing tag object.
Depending on the given text, the shell's word splitting rules might
require additional quoting.
-'<rev>:<path>', e.g. 'HEAD:README', 'master:./README'::
+'<rev>:<path>', e.g. `HEAD:README`, `master:./README`::
A suffix ':' followed by a path names the blob or tree
at the given path in the tree-ish object named by the part
before the colon.
@@ -287,12 +287,12 @@ The '...' (three-dot) Symmetric Difference Notation::
It is the set of commits that are reachable from either one of
'r1' (left side) or 'r2' (right side) but not from both.
-In these two shorthand notations, you can omit one end and let it default to HEAD.
-For example, 'origin..' is a shorthand for 'origin..HEAD' and asks "What
-did I do since I forked from the origin branch?" Similarly, '..origin'
-is a shorthand for 'HEAD..origin' and asks "What did the origin do since
-I forked from them?" Note that '..' would mean 'HEAD..HEAD' which is an
-empty range that is both reachable and unreachable from HEAD.
+In these two shorthand notations, you can omit one end and let it default to `HEAD`.
+For example, '`origin`..' is a shorthand for '`origin`..`HEAD`' and asks "What
+did I do since I forked from the `origin` branch?" Similarly, '..`origin`'
+is a shorthand for '`HEAD`..`origin`' and asks "What did the `origin` do since
+I forked from them?" Note that '..' would mean '`HEAD`..`HEAD`' which is an
+empty range that is both reachable and unreachable from `HEAD`.
Other <rev>{caret} Parent Shorthand Notations
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
@@ -313,7 +313,7 @@ itself).
While '<rev>{caret}<n>' was about specifying a single commit parent, these
three notations also consider its parents. For example you can say
-'HEAD{caret}2{caret}@', however you cannot say 'HEAD{caret}@{caret}2'.
+`HEAD^2^@`, however you cannot say `HEAD^@^2`.
Revision Range Summary
----------------------
@@ -336,17 +336,17 @@ Revision Range Summary
<rev2> but exclude those that are reachable from both. When
either <rev1> or <rev2> is omitted, it defaults to `HEAD`.
-'<rev>{caret}@', e.g. 'HEAD{caret}@'::
+'<rev>{caret}@', e.g. `HEAD^@`::
A suffix '{caret}' followed by an at sign is the same as listing
all parents of '<rev>' (meaning, include anything reachable from
its parents, but not the commit itself).
-'<rev>{caret}!', e.g. 'HEAD{caret}!'::
+'<rev>{caret}!', e.g. `HEAD^!`::
A suffix '{caret}' followed by an exclamation mark is the same
as giving commit '<rev>' and then all its parents prefixed with
'{caret}' to exclude them (and their ancestors).
-'<rev>{caret}-<n>', e.g. 'HEAD{caret}-, HEAD{caret}-2'::
+'<rev>{caret}-<n>', e.g. `HEAD^-`, `HEAD^-2`::
Equivalent to '<rev>{caret}<n>..<rev>', with '<n>' = 1 if not
given.
diff --git a/Documentation/user-manual.txt b/Documentation/user-manual.txt
index 0f9a699c09..62ddf41e75 100644
--- a/Documentation/user-manual.txt
+++ b/Documentation/user-manual.txt
@@ -280,7 +280,7 @@ a summary of the commands:
create a new branch `<new>` referencing `<start-point>`, and
check it out.
-The special symbol "HEAD" can always be used to refer to the current
+The special symbol `HEAD` can always be used to refer to the current
branch. In fact, Git uses a file named `HEAD` in the `.git` directory
to remember which branch is current:
@@ -300,7 +300,7 @@ you can check out the commit referenced by a tag:
$ git switch --detach v2.6.17
Note: checking out 'v2.6.17'.
-You are in 'detached HEAD' state. You can look around, make experimental
+You are in 'detached `HEAD`' state. You can look around, make experimental
changes and commit them, and you can discard any commits you make in this
state without impacting any branches by performing another switch.
@@ -309,10 +309,10 @@ do so (now or later) by using `-c` with the switch command again. Example:
git switch -c new_branch_name
-HEAD is now at 427abfa Linux v2.6.17
+`HEAD` is now at 427abfa Linux v2.6.17
------------------------------------------------
-The HEAD then refers to the SHA-1 of the commit instead of to a branch,
+The `HEAD` then refers to the SHA-1 of the commit instead of to a branch,
and git branch shows that you are no longer on a branch:
------------------------------------------------
@@ -323,7 +323,7 @@ $ git branch
master
------------------------------------------------
-In this case we say that the HEAD is "detached".
+In this case we say that the `HEAD` is "detached".
This is an easy way to check out a particular version without having to
make up a name for the new branch. You can still create a new branch
@@ -332,8 +332,8 @@ make up a name for the new branch. You can still create a new branch
[[examining-remote-branches]]
=== Examining branches from a remote repository
-The "master" branch that was created at the time you cloned is a copy
-of the HEAD in the repository that you cloned from. That repository
+The `master` branch that was created at the time you cloned is a copy
+of the `HEAD` in the repository that you cloned from. That repository
may also have had other branches, though, and your local repository
keeps branches which track each of those remote branches, called
remote-tracking branches, which you
@@ -351,7 +351,7 @@ $ git branch -r
origin/todo
------------------------------------------------
-In this example, "origin" is called a remote repository, or "remote"
+In this example, `origin` is called a remote repository, or "remote"
for short. The branches of this repository are called "remote
branches" from our point of view. The remote-tracking branches listed
above were created based on the remote branches at clone time and will
@@ -368,7 +368,7 @@ $ git switch -c my-todo-copy origin/todo
You can also check out `origin/todo` directly to examine it or
write a one-off patch. See <<detached-head,detached head>>.
-Note that the name "origin" is just the name that Git uses by default
+Note that the name `origin` is just the name that Git uses by default
to refer to the repository that you cloned from.
[[how-git-stores-references]]
@@ -391,9 +391,9 @@ under the path given by their name. However, for efficiency reasons
they may also be packed together in a single file; see
linkgit:git-pack-refs[1]).
-As another useful shortcut, the "HEAD" of a repository can be referred
-to just using the name of that repository. So, for example, "origin"
-is usually a shortcut for the HEAD branch in the repository "origin".
+As another useful shortcut, the `HEAD` of a repository can be referred
+to just using the name of that repository. So, for example, `origin`
+is usually a shortcut for the HEAD branch in the repository `origin`.
For the complete list of paths which Git checks for references, and
the order it uses to decide which to choose when there are multiple
@@ -491,9 +491,9 @@ Bisecting: 3537 revisions left to test after this
-------------------------------------------------
If you run `git branch` at this point, you'll see that Git has
-temporarily moved you in "(no branch)". HEAD is now detached from any
+temporarily moved you in "(no branch)". `HEAD` is now detached from any
branch and points directly to a commit (with commit id 65934) that
-is reachable from "master" but not from v2.6.18. Compile and test it,
+is reachable from `master` but not from v2.6.18. Compile and test it,
and see whether it crashes. Assume it does crash. Then:
-------------------------------------------------
@@ -566,7 +566,7 @@ We have seen several ways of naming commits already:
- tag name: refers to the commit pointed to by the given tag
(we've seen branches and tags are special cases of
<<how-git-stores-references,references>>).
- - HEAD: refers to the head of the current branch
+ - `HEAD`: refers to the head of the current branch
There are many more; see the "SPECIFYING REVISIONS" section of the
linkgit:gitrevisions[7] man page for the complete list of ways to
@@ -589,24 +589,24 @@ $ git show HEAD^1 # show the first parent of HEAD
$ git show HEAD^2 # show the second parent of HEAD
-------------------------------------------------
-In addition to HEAD, there are several other special names for
+In addition to `HEAD`, there are several other special names for
commits:
Merges (to be discussed later), as well as operations such as
`git reset`, which change the currently checked-out commit, generally
-set ORIG_HEAD to the value HEAD had before the current operation.
+set `ORIG_HEAD` to the value `HEAD` had before the current operation.
The `git fetch` operation always stores the head of the last fetched
-branch in FETCH_HEAD. For example, if you run `git fetch` without
+branch in `FETCH_HEAD`. For example, if you run `git fetch` without
specifying a local branch as the target of the operation
-------------------------------------------------
$ git fetch git://example.com/proj.git theirbranch
-------------------------------------------------
-the fetched commits will still be available from FETCH_HEAD.
+the fetched commits will still be available from `FETCH_HEAD`.
-When we discuss merges we'll also see the special name MERGE_HEAD,
+When we discuss merges we'll also see the special name `MERGE_HEAD`,
which refers to the other branch that we're merging in to the current
branch.
@@ -914,7 +914,7 @@ any version of a project; for example:
$ git archive -o latest.tar.gz --prefix=project/ HEAD
-------------------------------------------------
-will use HEAD to produce a gzipped tar archive in which each filename
+will use `HEAD` to produce a gzipped tar archive in which each filename
is preceded by `project/`. The output file format is inferred from
the output file extension if possible, see linkgit:git-archive[1] for
details.
@@ -1037,8 +1037,8 @@ at step 3, Git maintains a snapshot of the tree's contents in a
special staging area called "the index."
At the beginning, the content of the index will be identical to
-that of the HEAD. The command `git diff --cached`, which shows
-the difference between the HEAD and the index, should therefore
+that of the `HEAD`. The command `git diff --cached`, which shows
+the difference between the `HEAD` and the index, should therefore
produce no output at that point.
Modifying the index is easy:
@@ -1061,7 +1061,7 @@ After each step you can verify that
$ git diff --cached
-------------------------------------------------
-always shows the difference between the HEAD and the index file--this
+always shows the difference between the `HEAD` and the index file--this
is what you'd commit if you created the commit now--and that
-------------------------------------------------
@@ -1283,8 +1283,8 @@ index 802992c,2b60207..0000000
Recall that the commit which will be committed after we resolve this
conflict will have two parents instead of the usual one: one parent
-will be HEAD, the tip of the current branch; the other will be the
-tip of the other branch, which is stored temporarily in MERGE_HEAD.
+will be `HEAD`, the tip of the current branch; the other will be the
+tip of the other branch, which is stored temporarily in `MERGE_HEAD`.
During the merge, the index holds three versions of each file. Each of
these three "file stages" represents a different version of the file:
@@ -1348,8 +1348,8 @@ $ git log --merge
$ gitk --merge
-------------------------------------------------
-These will display all commits which exist only on HEAD or on
-MERGE_HEAD, and which touch an unmerged file.
+These will display all commits which exist only on `HEAD` or on
+`MERGE_HEAD`, and which touch an unmerged file.
You may also use linkgit:git-mergetool[1], which lets you merge the
unmerged files using external tools such as Emacs or kdiff3.
@@ -1433,7 +1433,7 @@ commit; for example, to revert the most recent commit:
$ git revert HEAD
-------------------------------------------------
-This will create a new commit which undoes the change in HEAD. You
+This will create a new commit which undoes the change in `HEAD`. You
will be given a chance to edit the commit message for the new commit.
You can also revert an earlier change, for example, the next-to-last:
@@ -1486,7 +1486,7 @@ linkgit:git-restore[1]. The command
$ git restore --source=HEAD^ path/to/file
-------------------------------------------------
-replaces path/to/file by the contents it had in the commit HEAD^, and
+replaces path/to/file by the contents it had in the commit `HEAD^`, and
also updates the index to match. It does not change branches.
If you just want to look at an old version of the file, without
@@ -1600,13 +1600,13 @@ $ gitk master@{"1 week ago"} # ... or last week
$ git log --walk-reflogs master # show reflog entries for master
-------------------------------------------------
-A separate reflog is kept for the HEAD, so
+A separate reflog is kept for the `HEAD`, so
-------------------------------------------------
$ git show HEAD@{"1 week ago"}
-------------------------------------------------
-will show what HEAD pointed to one week ago, not what the current branch
+will show what `HEAD` pointed to one week ago, not what the current branch
pointed to one week ago. This allows you to see the history of what
you've checked out.
@@ -1677,7 +1677,7 @@ into your own work.
We have already seen <<Updating-a-repository-With-git-fetch,how to
keep remote-tracking branches up to date>> with linkgit:git-fetch[1],
and how to merge two branches. So you can merge in changes from the
-original repository's master branch with:
+original repository's `master` branch with:
-------------------------------------------------
$ git fetch
@@ -1692,7 +1692,7 @@ $ git pull origin master
-------------------------------------------------
In fact, if you have `master` checked out, then this branch has been
-configured by `git clone` to get changes from the HEAD branch of the
+configured by `git clone` to get changes from the `HEAD` branch of the
origin repository. So often you can
accomplish the above with just a simple
@@ -2568,7 +2568,7 @@ You can also edit a patch series with an interactive rebase. This is
the same as <<reordering-patch-series,reordering a patch series using
`format-patch`>>, so use whichever interface you like best.
-Rebase your current HEAD on the last commit you want to retain as-is.
+Rebase your current `HEAD` on the last commit you want to retain as-is.
For example, if you want to reorder the last 5 commits, use:
-------------------------------------------------
@@ -2980,7 +2980,7 @@ file data at changing paths suggests a rename. (See, for example, the
`-M` option to linkgit:git-diff[1]).
A commit is usually created by linkgit:git-commit[1], which creates a
-commit whose parent is normally the current HEAD, and whose tree is
+commit whose parent is normally the current `HEAD`, and whose tree is
taken from the content currently stored in the index.
[[tree-object]]
@@ -3507,7 +3507,7 @@ $ ls -a
The `git submodule add <repo> <path>` command does a couple of things:
- It clones the submodule from `<repo>` to the given `<path>` under the
- current directory and by default checks out the master branch.
+ current directory and by default checks out the `master` branch.
- It adds the submodule's clone path to the linkgit:gitmodules[5] file and
adds this file to the index, ready to be committed.
- It adds the submodule's current commit ID to the index, ready to be
@@ -3540,7 +3540,7 @@ $ git submodule status
-------------------------------------------------
NOTE: The commit object names shown above would be different for you, but they
-should match the HEAD commit object names of your repositories. You can check
+should match the `HEAD` commit object names of your repositories. You can check
it by running `git ls-remote ../a`.
Pulling down the submodules is a two-step process. First run `git submodule
@@ -4334,7 +4334,7 @@ $ git branch new # create branch "new" starting at current HEAD
$ git branch -d new # delete branch "new"
-----------------------------------------------
-Instead of basing a new branch on current HEAD (the default), use:
+Instead of basing a new branch on current `HEAD` (the default), use:
-----------------------------------------------
$ git branch new test # branch named "test"
--
2.31.1.133.g84d06cdc06
^ permalink raw reply related [relevance 2%]
* Re: What's cooking in git.git (Mar 2021, #06; Sat, 20)
@ 2021-03-22 18:41 2% ` Junio C Hamano
0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2021-03-22 18:41 UTC (permalink / raw)
To: Matheus Tavares Bernardino; +Cc: git
Matheus Tavares Bernardino <matheus.bernardino@usp.br> writes:
> Hi, Junio
>
> On Sat, Mar 20, 2021 at 6:40 PM Junio C Hamano <gitster@pobox.com> wrote:
>>
>> * mt/parallel-checkout-part-1 (2021-03-18) 9 commits
>> (merged to 'next' on 2021-03-19 at a1bc83ad8e)
>> + entry: add checkout_entry_ca() taking preloaded conv_attrs
>> + entry: move conv_attrs lookup up to checkout_entry()
>> + entry: extract update_ce_after_write() from write_entry()
>> + entry: make fstat_output() and read_blob_entry() public
>> + entry: extract a header file for entry.c functions
>> + convert: add classification for conv_attrs struct
>> + convert: add get_stream_filter_ca() variant
>> + convert: add [async_]convert_to_working_tree_ca() variants
>> + convert: make convert_attrs() and convert structs public
>> (this branch is used by mt/parallel-checkout-part-2.)
>>
>> Preparatory API changes for parallel checkout.
>>
>> Will merge to 'master'.
>
> Sorry for my confusion, but are you going to squash the `#include
> "entry.h"` fix [1] or do you want me to re-roll this series with it?
I was planning to merge that down to 'master' as-is, with exactly
the same merge-fix to deal with the entry.h fallout that we have
been successfully using while merging the topic to 'seen' and
'next', without any need to have an explicit "oops, entry.h needs to
be included these days", but I think you are right---it would be
cleaner to keep the rebased series build by itself.
As we'll be rewinding and rebuilding 'next' soonish, let's kick the
topic out of 'next' when it happens, so that we can replace it (and
the part-2 topic that depends on it) with a reroll.
Thanks.
^ permalink raw reply [relevance 2%]
* Re: What's cooking in git.git (Jan 2021, #02; Fri, 8)
@ 2021-01-15 19:44 2% ` Junio C Hamano
0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2021-01-15 19:44 UTC (permalink / raw)
To: Derrick Stolee; +Cc: Emily Shaffer, git
Derrick Stolee <stolee@gmail.com> writes:
> Thanks for dealing with this fallout. Sorry for the mixup.
>
>> Helped-by: Emily Shaffer <emilyshaffer@google.com>
>
> Would it be appropriate to convert this to a Co-authored-by?
Or more like "Inspired-by-a-patch-by". Also you three have about
the same amount of input and deserve credit.
Sorry, but it already is on 'next', which will be discarded in a few
months when the new cycle begins, so I am not sure if it is worth
reverting and reapplying with updated credit trailers.
FWIW, I ended up redoing the merge and did "checkout -m" to recreate
conflicts, and then looked for "config.*pwd" in the block of text
that came from the "part-4" topic and fixed them up manually. I
then compared the result of this new merge with the earlier merge
that had the issue. The resulting diff is what went into the patch
you are responding to. It is good that we had Emily's input as a
comparison material to see that both of us independently touched the
same places to fix.
By the way, the merge into 'master' will directly reuse the conflict
resolution of e47c3632 (Merge branch 'ds/maintenance-part-4' into
jch, 2021-01-14) from the rerere database, without any separate
"merge fix" commit.
Thanks.
^ permalink raw reply [relevance 2%]
* Re: [PATCH v4 0/9] propose config-based hooks
@ 2020-09-09 21:04 2% ` Junio C Hamano
0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2020-09-09 21:04 UTC (permalink / raw)
To: Emily Shaffer
Cc: git, Jeff King, James Ramsay, Jonathan Nieder, brian m. carlson,
Ævar Arnfjörð Bjarmason, Phillip Wood,
Josh Steadmon, Johannes Schindelin
Emily Shaffer <emilyshaffer@google.com> writes:
> Since v3, the biggest change is the conversion of commit hooks to use the new
> hook machinery. The first change ("commit: use config-based hooks") is the
> important part; the second change ("run_commit_hook: take strvec instead of varargs")
> is probably subjective, but I thought it was a decent tech debt reduction.
>
> I wanted to send this reroll quickly since I had promised it in standup last
> week, but I've got pretty good progress locally on the patch for configuring
> "hook.runHookDir"; I'm planning to send that soon, probably this week.
I've had the attached merge-fix patch as a way to adjust argv_array
to strvec transition [*1*], but now *most* but not all parts of this
series have been migrated to the strvec API, you should apply some
parts in the merge-fix patch to your copy. I think the changes in
the old "merge-fix" patch to *.c and *.h are already in your series
that has been rebased on a newer 'master' that has strvec, but
documentation and possibly in-code comments may need to be adjusted.
Another way to sanity check the result would be to run this:
$ git diff master..es/config-hooks | grep -i argv.array
Thanks.
[Footnote]
*1* The way I work with a topic that causes conflicts with other
topics is to merge a new version of topic and letting the rerere
records I created while resolving the conflicts with the
previous round. After textual conflicts are thusly resolved, if
there are further changes that do not cause textual conflict
that are necessary, they are written in the form of a
"merge-fix" patch like the attached.
-- >8 --
Documentation/technical/api-parse-options.txt | 4 ++--
Documentation/technical/config-based-hooks.txt | 4 ++--
builtin/hook.c | 16 ++++++++--------
hook.c | 6 +++---
hook.h | 4 ++--
parse-options-cb.c | 8 ++++----
parse-options.h | 6 +++---
7 files changed, 24 insertions(+), 24 deletions(-)
diff --git a/Documentation/technical/api-parse-options.txt b/Documentation/technical/api-parse-options.txt
index b4f1fc4a1a..679bd98629 100644
--- a/Documentation/technical/api-parse-options.txt
+++ b/Documentation/technical/api-parse-options.txt
@@ -173,9 +173,9 @@ There are some macros to easily define options:
The string argument is stored as an element in `string_list`.
Use of `--no-option` will clear the list of preceding values.
-`OPT_ARGV_ARRAY(short, long, &struct argv_array, arg_str, description)`::
+`OPT_STRVEC(short, long, &struct strvec, arg_str, description)`::
Introduce an option with a string argument.
- The string argument is stored as an element in `argv_array`.
+ The string argument is stored as an element in `strvec`.
Use of `--no-option` will clear the list of preceding values.
`OPT_INTEGER(short, long, &int_var, description)`::
diff --git a/Documentation/technical/config-based-hooks.txt b/Documentation/technical/config-based-hooks.txt
index c6e762b192..4443f70ded 100644
--- a/Documentation/technical/config-based-hooks.txt
+++ b/Documentation/technical/config-based-hooks.txt
@@ -106,10 +106,10 @@ a concise config afterwards. It may take a form similar to `git rebase
`hook.c` and `hook.h` are responsible for interacting with the config files. In
the case when the code generating a hook event doesn't have special concerns
about how to run the hooks, the hook library will provide a basic API to call
-all hooks in config order with an `argv_array` provided by the code which
+all hooks in config order with an `strvec` provided by the code which
generates the hook event:
-*`int run_hooks(const char *hookname, struct argv_array *args)`*
+*`int run_hooks(const char *hookname, struct strvec *args)`*
This call includes the hook command provided by `run-command.h:find_hook()`;
eventually, this legacy hook will be gated by a config `hook.runHookDir`. The
diff --git a/builtin/hook.c b/builtin/hook.c
index cd61fad5fb..debcb5a77a 100644
--- a/builtin/hook.c
+++ b/builtin/hook.c
@@ -5,7 +5,7 @@
#include "hook.h"
#include "parse-options.h"
#include "strbuf.h"
-#include "argv-array.h"
+#include "strvec.h"
static const char * const builtin_hook_usage[] = {
N_("git hook list <hookname>"),
@@ -67,14 +67,14 @@ static int list(int argc, const char **argv, const char *prefix)
static int run(int argc, const char **argv, const char *prefix)
{
struct strbuf hookname = STRBUF_INIT;
- struct argv_array env_argv = ARGV_ARRAY_INIT;
- struct argv_array arg_argv = ARGV_ARRAY_INIT;
+ struct strvec env_argv = STRVEC_INIT;
+ struct strvec arg_argv = STRVEC_INIT;
struct option run_options[] = {
- OPT_ARGV_ARRAY('e', "env", &env_argv, N_("var"),
- N_("environment variables for hook to use")),
- OPT_ARGV_ARRAY('a', "arg", &arg_argv, N_("args"),
- N_("argument to pass to hook")),
+ OPT_STRVEC('e', "env", &env_argv, N_("var"),
+ N_("environment variables for hook to use")),
+ OPT_STRVEC('a', "arg", &arg_argv, N_("args"),
+ N_("argument to pass to hook")),
OPT_END(),
};
@@ -87,7 +87,7 @@ static int run(int argc, const char **argv, const char *prefix)
strbuf_addstr(&hookname, argv[0]);
- return run_hooks(env_argv.argv, &hookname, &arg_argv);
+ return run_hooks(env_argv.v, &hookname, &arg_argv);
}
int cmd_hook(int argc, const char **argv, const char *prefix)
diff --git a/hook.c b/hook.c
index 902e213173..40d319adb1 100644
--- a/hook.c
+++ b/hook.c
@@ -98,7 +98,7 @@ struct list_head* hook_list(const struct strbuf* hookname)
}
int run_hooks(const char *const *env, const struct strbuf *hookname,
- const struct argv_array *args)
+ const struct strvec *args)
{
struct list_head *to_run, *pos = NULL, *tmp = NULL;
int rc = 0;
@@ -110,14 +110,14 @@ int run_hooks(const char *const *env, const struct strbuf *hookname,
struct hook *hook = list_entry(pos, struct hook, list);
/* add command */
- argv_array_push(&hook_proc.args, hook->command.buf);
+ strvec_push(&hook_proc.args, hook->command.buf);
/*
* add passed-in argv, without expanding - let the user get back
* exactly what they put in
*/
if (args)
- argv_array_pushv(&hook_proc.args, args->argv);
+ strvec_pushv(&hook_proc.args, args->v);
hook_proc.env = env;
hook_proc.no_stdin = 1;
diff --git a/hook.h b/hook.h
index cf598d6ccb..d020788a6b 100644
--- a/hook.h
+++ b/hook.h
@@ -1,7 +1,7 @@
#include "config.h"
#include "list.h"
#include "strbuf.h"
-#include "argv-array.h"
+#include "strvec.h"
struct hook
{
@@ -12,7 +12,7 @@ struct hook
struct list_head* hook_list(const struct strbuf *hookname);
int run_hooks(const char *const *env, const struct strbuf *hookname,
- const struct argv_array *args);
+ const struct strvec *args);
void free_hook(struct hook *ptr);
void clear_hook_list(void);
diff --git a/parse-options-cb.c b/parse-options-cb.c
index 4f993cd734..d2b8b7b98a 100644
--- a/parse-options-cb.c
+++ b/parse-options-cb.c
@@ -205,19 +205,19 @@ int parse_opt_string_list(const struct option *opt, const char *arg, int unset)
return 0;
}
-int parse_opt_argv_array(const struct option *opt, const char *arg, int unset)
+int parse_opt_strvec(const struct option *opt, const char *arg, int unset)
{
- struct argv_array *v = opt->value;
+ struct strvec *v = opt->value;
if (unset) {
- argv_array_clear(v);
+ strvec_clear(v);
return 0;
}
if (!arg)
return -1;
- argv_array_push(v, arg);
+ strvec_push(v, arg);
return 0;
}
diff --git a/parse-options.h b/parse-options.h
index e2e2de75c8..177259488b 100644
--- a/parse-options.h
+++ b/parse-options.h
@@ -177,9 +177,9 @@ struct option {
#define OPT_STRING_LIST(s, l, v, a, h) \
{ OPTION_CALLBACK, (s), (l), (v), (a), \
(h), 0, &parse_opt_string_list }
-#define OPT_ARGV_ARRAY(s, l, v, a, h) \
+#define OPT_STRVEC(s, l, v, a, h) \
{ OPTION_CALLBACK, (s), (l), (v), (a), \
- (h), 0, &parse_opt_argv_array }
+ (h), 0, &parse_opt_strvec }
#define OPT_UYN(s, l, v, h) { OPTION_CALLBACK, (s), (l), (v), NULL, \
(h), PARSE_OPT_NOARG, &parse_opt_tertiary }
#define OPT_EXPIRY_DATE(s, l, v, h) \
@@ -299,7 +299,7 @@ int parse_opt_commits(const struct option *, const char *, int);
int parse_opt_commit(const struct option *, const char *, int);
int parse_opt_tertiary(const struct option *, const char *, int);
int parse_opt_string_list(const struct option *, const char *, int);
-int parse_opt_argv_array(const struct option *, const char *, int);
+int parse_opt_strvec(const struct option *, const char *, int);
int parse_opt_noop_cb(const struct option *, const char *, int);
enum parse_opt_result parse_opt_unknown_cb(struct parse_opt_ctx_t *ctx,
const struct option *,
--
2.28.0-558-g7a0184fd7b
^ permalink raw reply related [relevance 2%]
* [PATCH v2 1/4] t6038: make tests fail for the right reason
@ 2020-08-03 18:41 2% ` Elijah Newren via GitGitGadget
0 siblings, 0 replies; 200+ results
From: Elijah Newren via GitGitGadget @ 2020-08-03 18:41 UTC (permalink / raw)
To: git; +Cc: Elijah Newren, Elijah Newren
From: Elijah Newren <newren@gmail.com>
t6038 had a pair of tests that were expected to fail, but weren't
failing for the expected reason. Both were meant to do a merge that
could be done cleanly after renormalization, but were supposed to fail
for lack of renormalization. Unfortunately, both tests had staged
changes, and checkout -m would abort due to the presence of those staged
changes before even attempting a merge.
Fix this first issue by utilizing git-restore instead of git-checkout,
so that the index is left alone and just the working directory gets the
changes we want.
However, there is a second issue with these tests. Technically, they
just wanted to verify that after renormalization, no conflicts would be
present. This could have been checked for by grepping for a lack of
conflict markers, but the test instead tried to compare the working
directory files to an expected result. Unfortunately, the setting of
"text=auto" without setting core.eol to any value meant that the content
of the file (in particular, the line endings) would be
platform-dependent and the tests could only pass on some platforms.
Replace the existing comparison with a call to 'git diff --no-index
--ignore-cr-at-eol' to verify that the contents, other than possible
carriage returns in the file, match the expected results and in
particular that the file has no conflicts from the checkout -m
operation.
Signed-off-by: Elijah Newren <newren@gmail.com>
---
t/t6038-merge-text-auto.sh | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/t/t6038-merge-text-auto.sh b/t/t6038-merge-text-auto.sh
index 5e8d5fa50c..27cea15533 100755
--- a/t/t6038-merge-text-auto.sh
+++ b/t/t6038-merge-text-auto.sh
@@ -168,9 +168,9 @@ test_expect_failure 'checkout -m after setting text=auto' '
git rm -fr . &&
rm -f .gitattributes &&
git reset --hard initial &&
- git checkout a -- . &&
+ git restore --source=a -- . &&
git checkout -m b &&
- compare_files expected file
+ git diff --no-index --ignore-cr-at-eol expected file
'
test_expect_failure 'checkout -m addition of text=auto' '
@@ -183,9 +183,9 @@ test_expect_failure 'checkout -m addition of text=auto' '
git rm -fr . &&
rm -f .gitattributes file &&
git reset --hard initial &&
- git checkout b -- . &&
+ git restore --source=b -- . &&
git checkout -m a &&
- compare_files expected file
+ git diff --no-index --ignore-cr-at-eol expected file
'
test_expect_failure 'cherry-pick patch from after text=auto was added' '
--
gitgitgadget
^ permalink raw reply related [relevance 2%]
* Re: [PATCH 1/4] t6038: make tests fail for the right reason
2020-08-02 6:33 2% ` [PATCH 1/4] t6038: make tests fail for the right reason Elijah Newren via GitGitGadget
2020-08-02 18:17 0% ` Junio C Hamano
@ 2020-08-02 19:10 0% ` Eric Sunshine
1 sibling, 0 replies; 200+ results
From: Eric Sunshine @ 2020-08-02 19:10 UTC (permalink / raw)
To: Elijah Newren via GitGitGadget; +Cc: Git List, Elijah Newren
On Sun, Aug 2, 2020 at 2:33 AM Elijah Newren via GitGitGadget
<gitgitgadget@gmail.com> wrote:
> t6038 had a pair of tests that were expected to fail, but weren't
> failing for the expected reason. Both were meant to do a merge that
> could be done cleanly after renormalization, but were supposed to fail
> for lack of renormalization. Unfortunately, both tests has staged
s/has/had/
...or...
s/has/have/
> changes, and checkout -m would abort due to the presence of those staged
> changes before even attempting a merge.
>
> Fix this first issue by utilizing git-restore instead of git-checkout,
> so that the index is left alone and just the working directory gets the
> changes we want.
>
> However, there is a second issue with these tests. Technically, they
> just wanted to verify that after renormalization, no conflicts would be
> present. This could have been checked for by grepping for a lack of
> conflict markers, but the test instead tried to compare the working
> directory files to an expected result. Unfortunately, the setting of
> "text=auto" without setting core.eol to any value meant that the content
> of the file (in particular, the line endings) would be
> platform-dependent and the tests could only pass on some platforms.
> Replace the existing comparison with a call to 'git diff --no-index
> --ignore-cr-at-eol' to verify that the contents, other than possible
> carriage returns in the file, match the expected results and in
> particular that the file has no conflicts from the checkout -m
> operation.
>
> Signed-off-by: Elijah Newren <newren@gmail.com>
^ permalink raw reply [relevance 0%]
* Re: [PATCH 1/4] t6038: make tests fail for the right reason
2020-08-02 6:33 2% ` [PATCH 1/4] t6038: make tests fail for the right reason Elijah Newren via GitGitGadget
@ 2020-08-02 18:17 0% ` Junio C Hamano
2020-08-02 19:10 0% ` Eric Sunshine
1 sibling, 0 replies; 200+ results
From: Junio C Hamano @ 2020-08-02 18:17 UTC (permalink / raw)
To: Elijah Newren via GitGitGadget; +Cc: git, Elijah Newren
"Elijah Newren via GitGitGadget" <gitgitgadget@gmail.com> writes:
> t6038 had a pair of tests that were expected to fail, but weren't
> failing for the expected reason. Both were meant to do a merge that
> could be done cleanly after renormalization, but were supposed to fail
> for lack of renormalization. Unfortunately, both tests has staged
> changes, and checkout -m would abort due to the presence of those staged
> changes before even attempting a merge.
>
> Fix this first issue by utilizing git-restore instead of git-checkout,
> so that the index is left alone and just the working directory gets the
> changes we want.
Nicely analysed.
> However, there is a second issue with these tests. Technically, they
> just wanted to verify that after renormalization, no conflicts would be
> present. This could have been checked for by grepping for a lack of
> conflict markers, but the test instead tried to compare the working
> directory files to an expected result. Unfortunately, the setting of
> "text=auto" without setting core.eol to any value meant that the content
> of the file (in particular, the line endings) would be
> platform-dependent and the tests could only pass on some platforms.
OK.
> Replace the existing comparison with a call to 'git diff --no-index
> --ignore-cr-at-eol' to verify that the contents, other than possible
> carriage returns in the file, match the expected results and in
> particular that the file has no conflicts from the checkout -m
> operation.
Makes sense.
Thanks.
> Signed-off-by: Elijah Newren <newren@gmail.com>
> ---
> t/t6038-merge-text-auto.sh | 8 ++++----
> 1 file changed, 4 insertions(+), 4 deletions(-)
>
> diff --git a/t/t6038-merge-text-auto.sh b/t/t6038-merge-text-auto.sh
> index 5e8d5fa50c..27cea15533 100755
> --- a/t/t6038-merge-text-auto.sh
> +++ b/t/t6038-merge-text-auto.sh
> @@ -168,9 +168,9 @@ test_expect_failure 'checkout -m after setting text=auto' '
> git rm -fr . &&
> rm -f .gitattributes &&
> git reset --hard initial &&
> - git checkout a -- . &&
> + git restore --source=a -- . &&
> git checkout -m b &&
> - compare_files expected file
> + git diff --no-index --ignore-cr-at-eol expected file
> '
>
> test_expect_failure 'checkout -m addition of text=auto' '
> @@ -183,9 +183,9 @@ test_expect_failure 'checkout -m addition of text=auto' '
> git rm -fr . &&
> rm -f .gitattributes file &&
> git reset --hard initial &&
> - git checkout b -- . &&
> + git restore --source=b -- . &&
> git checkout -m a &&
> - compare_files expected file
> + git diff --no-index --ignore-cr-at-eol expected file
> '
>
> test_expect_failure 'cherry-pick patch from after text=auto was added' '
^ permalink raw reply [relevance 0%]
* [PATCH 1/4] t6038: make tests fail for the right reason
@ 2020-08-02 6:33 2% ` Elijah Newren via GitGitGadget
2020-08-02 18:17 0% ` Junio C Hamano
2020-08-02 19:10 0% ` Eric Sunshine
1 sibling, 2 replies; 200+ results
From: Elijah Newren via GitGitGadget @ 2020-08-02 6:33 UTC (permalink / raw)
To: git; +Cc: Elijah Newren, Elijah Newren
From: Elijah Newren <newren@gmail.com>
t6038 had a pair of tests that were expected to fail, but weren't
failing for the expected reason. Both were meant to do a merge that
could be done cleanly after renormalization, but were supposed to fail
for lack of renormalization. Unfortunately, both tests has staged
changes, and checkout -m would abort due to the presence of those staged
changes before even attempting a merge.
Fix this first issue by utilizing git-restore instead of git-checkout,
so that the index is left alone and just the working directory gets the
changes we want.
However, there is a second issue with these tests. Technically, they
just wanted to verify that after renormalization, no conflicts would be
present. This could have been checked for by grepping for a lack of
conflict markers, but the test instead tried to compare the working
directory files to an expected result. Unfortunately, the setting of
"text=auto" without setting core.eol to any value meant that the content
of the file (in particular, the line endings) would be
platform-dependent and the tests could only pass on some platforms.
Replace the existing comparison with a call to 'git diff --no-index
--ignore-cr-at-eol' to verify that the contents, other than possible
carriage returns in the file, match the expected results and in
particular that the file has no conflicts from the checkout -m
operation.
Signed-off-by: Elijah Newren <newren@gmail.com>
---
t/t6038-merge-text-auto.sh | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/t/t6038-merge-text-auto.sh b/t/t6038-merge-text-auto.sh
index 5e8d5fa50c..27cea15533 100755
--- a/t/t6038-merge-text-auto.sh
+++ b/t/t6038-merge-text-auto.sh
@@ -168,9 +168,9 @@ test_expect_failure 'checkout -m after setting text=auto' '
git rm -fr . &&
rm -f .gitattributes &&
git reset --hard initial &&
- git checkout a -- . &&
+ git restore --source=a -- . &&
git checkout -m b &&
- compare_files expected file
+ git diff --no-index --ignore-cr-at-eol expected file
'
test_expect_failure 'checkout -m addition of text=auto' '
@@ -183,9 +183,9 @@ test_expect_failure 'checkout -m addition of text=auto' '
git rm -fr . &&
rm -f .gitattributes file &&
git reset --hard initial &&
- git checkout b -- . &&
+ git restore --source=b -- . &&
git checkout -m a &&
- compare_files expected file
+ git diff --no-index --ignore-cr-at-eol expected file
'
test_expect_failure 'cherry-pick patch from after text=auto was added' '
--
gitgitgadget
^ permalink raw reply related [relevance 2%]
* Re: [PATCH v3 00/20] Maintenance builtin, allowing 'gc --auto' customization
@ 2020-07-31 2:58 2% ` Junio C Hamano
0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2020-07-31 2:58 UTC (permalink / raw)
To: Derrick Stolee via GitGitGadget
Cc: git, Johannes.Schindelin, sandals, steadmon, jrnieder, peff,
congdanhqx, phillip.wood123, emilyshaffer, sluongng,
jonathantanmy, Derrick Stolee
Junio C Hamano <gitster@pobox.com> writes:
> "Derrick Stolee via GitGitGadget" <gitgitgadget@gmail.com> writes:
>
>> * This series is now based on jk/strvec, as there are several places where
>> I was adding new callers to argv_array_push* and run_command_v_opt()
>> which have been replaced with strvec_push*() and run_command(), using a
>> 'struct child_process'.
>
> It probably has been a good way to gain experience with the renamed
> API for you to rebase this series, but I think we'd have to spend a
> similar amount of effort yet again, as I expect that the jk/strvec
> series would be rerolled at least once more, with the items[] array
> renamed to something else, like v[].
>
> Let's see how it goes.
So, ... jk/strvec got updated, and just applying these twenty
patches on top no longer compiles, so I rebased them ;-)
I also adjusted the merge-fix for the 6 patches on es/config-hooks
topic before making tonight's final push-out of 'seen'.
Thanks.
^ permalink raw reply [relevance 2%]
* Re: [PATCH 10/11] strvec: drop argv_array compatibility layer
2020-07-29 0:44 2% ` Junio C Hamano
@ 2020-07-29 16:22 0% ` Jeff King
0 siblings, 0 replies; 200+ results
From: Jeff King @ 2020-07-29 16:22 UTC (permalink / raw)
To: Junio C Hamano; +Cc: git
On Tue, Jul 28, 2020 at 05:44:22PM -0700, Junio C Hamano wrote:
> Jeff King <peff@peff.net> writes:
>
> > Worse than the resolutions are all the new calls which needed to be
> > fixed up. I know your scripts keep a fix-up commit for this, but I don't
> > think you publish it.
>
> They are found in refs/merge-fix/$topicname, and the broken-out
> mirror repository https://github.com/gitster/git/ should have them.
Oh indeed. I stupidly looked in my refs/remotes, but of course I didn't
set up a refspec to fetch them. :)
-Peff
^ permalink raw reply [relevance 0%]
* Re: [PATCH 10/11] strvec: drop argv_array compatibility layer
@ 2020-07-29 0:44 2% ` Junio C Hamano
2020-07-29 16:22 0% ` Jeff King
0 siblings, 1 reply; 200+ results
From: Junio C Hamano @ 2020-07-29 0:44 UTC (permalink / raw)
To: Jeff King; +Cc: git
Jeff King <peff@peff.net> writes:
> Worse than the resolutions are all the new calls which needed to be
> fixed up. I know your scripts keep a fix-up commit for this, but I don't
> think you publish it.
They are found in refs/merge-fix/$topicname, and the broken-out
mirror repository https://github.com/gitster/git/ should have them.
^ permalink raw reply [relevance 2%]
* [PATCH v3 2/3] docs: adjust the technical overview for the rename `pu` -> `seen`
@ 2020-06-25 12:18 8% ` Johannes Schindelin via GitGitGadget
0 siblings, 0 replies; 200+ results
From: Johannes Schindelin via GitGitGadget @ 2020-06-25 12:18 UTC (permalink / raw)
To: git; +Cc: Denton Liu, Johannes Schindelin, Johannes Schindelin
From: Johannes Schindelin <johannes.schindelin@gmx.de>
This patch tries to rewrite history a bit: the mail contents that have
been added to Git's source code are actually fixed, we cannot change
them in hindsight.
But as the `pu` branch _was_ renamed, and as the documents were added to
Git's source code not so much as historical record, but to describe the
status quo, let's pretend that we have a time machine and adjust the
provided information accordingly.
Where appropriate, quotes were added for readability.
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
---
Documentation/howto/maintain-git.txt | 52 +++++++++----------
.../howto/rebase-from-internal-branch.txt | 32 ++++++------
Documentation/howto/revert-branch-rebase.txt | 32 ++++++------
Documentation/howto/update-hook-example.txt | 6 +--
4 files changed, 61 insertions(+), 61 deletions(-)
diff --git a/Documentation/howto/maintain-git.txt b/Documentation/howto/maintain-git.txt
index ca4378740c..3c3030bfd5 100644
--- a/Documentation/howto/maintain-git.txt
+++ b/Documentation/howto/maintain-git.txt
@@ -66,7 +66,7 @@ this mailing list after each feature release is made.
demonstrated to be regression free. New changes are tested
in 'next' before merged to 'master'.
- - 'pu' branch is used to publish other proposed changes that do
+ - 'seen' branch is used to publish other proposed changes that do
not yet pass the criteria set for 'next'.
- The tips of 'master' and 'maint' branches will not be rewound to
@@ -76,7 +76,7 @@ this mailing list after each feature release is made.
of the cycle.
- Usually 'master' contains all of 'maint' and 'next' contains all
- of 'master'. 'pu' contains all the topics merged to 'next', but
+ of 'master'. 'seen' contains all the topics merged to 'next', but
is rebuilt directly on 'master'.
- The tip of 'master' is meant to be more stable than any
@@ -211,12 +211,12 @@ by doing the following:
series?)
- Prepare 'jch' branch, which is used to represent somewhere
- between 'master' and 'pu' and often is slightly ahead of 'next'.
+ between 'master' and 'seen' and often is slightly ahead of 'next'.
- $ Meta/Reintegrate master..pu >Meta/redo-jch.sh
+ $ Meta/Reintegrate master..seen >Meta/redo-jch.sh
The result is a script that lists topics to be merged in order to
- rebuild 'pu' as the input to Meta/Reintegrate script. Remove
+ rebuild 'seen' as the input to Meta/Reintegrate script. Remove
later topics that should not be in 'jch' yet. Add a line that
consists of '### match next' before the name of the first topic
in the output that should be in 'jch' but not in 'next' yet.
@@ -273,29 +273,29 @@ by doing the following:
merged to 'master'. This may lose '### match next' marker;
add it again to the appropriate place when it happens.
- - Rebuild 'pu'.
+ - Rebuild 'seen'.
- $ Meta/Reintegrate master..pu >Meta/redo-pu.sh
+ $ Meta/Reintegrate master..seen >Meta/redo-seen.sh
- Edit the result by adding new topics that are not still in 'pu'
+ Edit the result by adding new topics that are not still in 'seen'
in the script. Then
- $ git checkout -B pu jch
- $ sh Meta/redo-pu.sh
+ $ git checkout -B seen jch
+ $ sh Meta/redo-seen.sh
- When all is well, clean up the redo-pu.sh script with
+ When all is well, clean up the redo-seen.sh script with
- $ sh Meta/redo-pu.sh -u
+ $ sh Meta/redo-seen.sh -u
Double check by running
- $ git branch --no-merged pu
+ $ git branch --no-merged seen
to see there is no unexpected leftover topics.
At this point, build-test the result for semantic conflicts, and
if there are, prepare an appropriate merge-fix first (see
- appendix), and rebuild the 'pu' branch from scratch, starting at
+ appendix), and rebuild the 'seen' branch from scratch, starting at
the tip of 'jch'.
- Update "What's cooking" message to review the updates to
@@ -305,14 +305,14 @@ by doing the following:
$ Meta/cook
- This script inspects the history between master..pu, finds tips
+ This script inspects the history between master..seen, finds tips
of topic branches, compares what it found with the current
contents in Meta/whats-cooking.txt, and updates that file.
- Topics not listed in the file but are found in master..pu are
+ Topics not listed in the file but are found in master..seen are
added to the "New topics" section, topics listed in the file that
- are no longer found in master..pu are moved to the "Graduated to
+ are no longer found in master..seen are moved to the "Graduated to
master" section, and topics whose commits changed their states
- (e.g. used to be only in 'pu', now merged to 'next') are updated
+ (e.g. used to be only in 'seen', now merged to 'next') are updated
with change markers "<<" and ">>".
Look for lines enclosed in "<<" and ">>"; they hold contents from
@@ -342,7 +342,7 @@ Observations
Some observations to be made.
* Each topic is tested individually, and also together with other
- topics cooking first in 'pu', then in 'jch' and then in 'next'.
+ topics cooking first in 'seen', then in 'jch' and then in 'next'.
Until it matures, no part of it is merged to 'master'.
* A topic already in 'next' can get fixes while still in
@@ -385,7 +385,7 @@ new use of the variable under its old name. When these two topics
are merged together, the reference to the variable newly added by
the latter topic will still use the old name in the result.
-The Meta/Reintegrate script that is used by redo-jch and redo-pu
+The Meta/Reintegrate script that is used by redo-jch and redo-seen
scripts implements a crude but usable way to work this issue around.
When the script merges branch $X, it checks if "refs/merge-fix/$X"
exists, and if so, the effect of it is squashed into the result of
@@ -405,14 +405,14 @@ commit that can be squashed into a result of mechanical merge to
correct semantic conflicts.
After finding that the result of merging branch "ai/topic" to an
-integration branch had such a semantic conflict, say pu~4, check the
+integration branch had such a semantic conflict, say seen~4, check the
problematic merge out on a detached HEAD, edit the working tree to
fix the semantic conflict, and make a separate commit to record the
fix-up:
- $ git checkout pu~4
+ $ git checkout seen~4
$ git show -s --pretty=%s ;# double check
- Merge branch 'ai/topic' to pu
+ Merge branch 'ai/topic' to seen
$ edit
$ git commit -m 'merge-fix/ai/topic' -a
@@ -424,9 +424,9 @@ result:
Then double check the result by asking Meta/Reintegrate to redo the
merge:
- $ git checkout pu~5 ;# the parent of the problem merge
+ $ git checkout seen~5 ;# the parent of the problem merge
$ echo ai/topic | Meta/Reintegrate
- $ git diff pu~4
+ $ git diff seen~4
This time, because you prepared refs/merge-fix/ai/topic, the
resulting merge should have been tweaked to include the fix for the
@@ -438,7 +438,7 @@ branch needs this merge-fix is because another branch merged earlier
to the integration branch changed the underlying assumption ai/topic
branch made (e.g. ai/topic branch added a site to refer to a
variable, while the other branch renamed that variable and adjusted
-existing use sites), and if you changed redo-jch (or redo-pu) script
+existing use sites), and if you changed redo-jch (or redo-seen) script
to merge ai/topic branch before the other branch, then the above
merge-fix should not be applied while merging ai/topic, but should
instead be applied while merging the other branch. You would need
diff --git a/Documentation/howto/rebase-from-internal-branch.txt b/Documentation/howto/rebase-from-internal-branch.txt
index 02cb5f758d..ece51ddddc 100644
--- a/Documentation/howto/rebase-from-internal-branch.txt
+++ b/Documentation/howto/rebase-from-internal-branch.txt
@@ -4,7 +4,7 @@ Cc: Petr Baudis <pasky@suse.cz>, Linus Torvalds <torvalds@osdl.org>
Subject: Re: sending changesets from the middle of a git tree
Date: Sun, 14 Aug 2005 18:37:39 -0700
Abstract: In this article, JC talks about how he rebases the
- public "pu" branch using the core Git tools when he updates
+ public "seen" branch using the core Git tools when he updates
the "master" branch, and how "rebase" works. Also discussed
is how this applies to individual developers who sends patches
upstream.
@@ -20,8 +20,8 @@ Petr Baudis <pasky@suse.cz> writes:
> where Junio C Hamano <junkio@cox.net> told me that...
>> Linus Torvalds <torvalds@osdl.org> writes:
>>
->> > Junio, maybe you want to talk about how you move patches from your "pu"
->> > branch to the real branches.
+>> > Junio, maybe you want to talk about how you move patches from your
+>> > "seen" branch to the real branches.
>>
> Actually, wouldn't this be also precisely for what StGIT is intended to?
--------------------------------------
@@ -33,12 +33,12 @@ the kind of task StGIT is designed to do.
I just have done a simpler one, this time using only the core
Git tools.
-I had a handful of commits that were ahead of master in pu, and I
+I had a handful of commits that were ahead of master in 'seen', and I
wanted to add some documentation bypassing my usual habit of
-placing new things in pu first. At the beginning, the commit
+placing new things in 'seen' first. At the beginning, the commit
ancestry graph looked like this:
- *"pu" head
+ *"seen" head
master --> #1 --> #2 --> #3
So I started from master, made a bunch of edits, and committed:
@@ -50,7 +50,7 @@ So I started from master, made a bunch of edits, and committed:
After the commit, the ancestry graph would look like this:
- *"pu" head
+ *"seen" head
master^ --> #1 --> #2 --> #3
\
\---> master
@@ -58,31 +58,31 @@ After the commit, the ancestry graph would look like this:
The old master is now master^ (the first parent of the master).
The new master commit holds my documentation updates.
-Now I have to deal with "pu" branch.
+Now I have to deal with "seen" branch.
This is the kind of situation I used to have all the time when
Linus was the maintainer and I was a contributor, when you look
-at "master" branch being the "maintainer" branch, and "pu"
+at "master" branch being the "maintainer" branch, and "seen"
branch being the "contributor" branch. Your work started at the
tip of the "maintainer" branch some time ago, you made a lot of
progress in the meantime, and now the maintainer branch has some
other commits you do not have yet. And "git rebase" was written
with the explicit purpose of helping to maintain branches like
-"pu". You _could_ merge master to pu and keep going, but if you
+"seen". You _could_ merge master to 'seen' and keep going, but if you
eventually want to cherrypick and merge some but not necessarily
all changes back to the master branch, it often makes later
operations for _you_ easier if you rebase (i.e. carry forward
-your changes) "pu" rather than merge. So I ran "git rebase":
+your changes) "seen" rather than merge. So I ran "git rebase":
- $ git checkout pu
- $ git rebase master pu
+ $ git checkout seen
+ $ git rebase master seen
What this does is to pick all the commits since the current
-branch (note that I now am on "pu" branch) forked from the
+branch (note that I now am on "seen" branch) forked from the
master branch, and forward port these changes.
master^ --> #1 --> #2 --> #3
- \ *"pu" head
+ \ *"seen" head
\---> master --> #1' --> #2' --> #3'
The diff between master^ and #1 is applied to master and
@@ -92,7 +92,7 @@ commits are made similarly out of #2 and #3 commits.
Old #3 is not recorded in any of the .git/refs/heads/ file
anymore, so after doing this you will have dangling commit if
-you ran fsck-cache, which is normal. After testing "pu", you
+you ran fsck-cache, which is normal. After testing "seen", you
can run "git prune" to get rid of those original three commits.
While I am talking about "git rebase", I should talk about how
diff --git a/Documentation/howto/revert-branch-rebase.txt b/Documentation/howto/revert-branch-rebase.txt
index 149508e13b..a3e5595a56 100644
--- a/Documentation/howto/revert-branch-rebase.txt
+++ b/Documentation/howto/revert-branch-rebase.txt
@@ -15,7 +15,7 @@ One of the changes I pulled into the 'master' branch turns out to
break building Git with GCC 2.95. While they were well-intentioned
portability fixes, keeping things working with gcc-2.95 was also
important. Here is what I did to revert the change in the 'master'
-branch and to adjust the 'pu' branch, using core Git tools and
+branch and to adjust the 'seen' branch, using core Git tools and
barebone Porcelain.
First, prepare a throw-away branch in case I screw things up.
@@ -104,11 +104,11 @@ $ git diff master..revert-c99
says nothing.
-Then we rebase the 'pu' branch as usual.
+Then we rebase the 'seen' branch as usual.
------------------------------------------------
-$ git checkout pu
-$ git tag pu-anchor pu
+$ git checkout seen
+$ git tag seen-anchor seen
$ git rebase master
* Applying: Redo "revert" using three-way merge machinery.
First trying simple merge strategy to cherry-pick.
@@ -127,11 +127,11 @@ First trying simple merge strategy to cherry-pick.
First trying simple merge strategy to cherry-pick.
------------------------------------------------
-The temporary tag 'pu-anchor' is me just being careful, in case 'git
+The temporary tag 'seen-anchor' is me just being careful, in case 'git
rebase' screws up. After this, I can do these for sanity check:
------------------------------------------------
-$ git diff pu-anchor..pu ;# make sure we got the master fix.
+$ git diff seen-anchor..seen ;# make sure we got the master fix.
$ make CC=gcc-2.95 clean test ;# make sure it fixed the breakage.
$ make clean test ;# make sure it did not cause other breakage.
------------------------------------------------
@@ -140,7 +140,7 @@ Everything is in the good order. I do not need the temporary branch
or tag anymore, so remove them:
------------------------------------------------
-$ rm -f .git/refs/tags/pu-anchor
+$ rm -f .git/refs/tags/seen-anchor
$ git branch -d revert-c99
------------------------------------------------
@@ -168,18 +168,18 @@ Committed merge 7fb9b7262a1d1e0a47bbfdcbbcf50ce0635d3f8f
And the final repository status looks like this:
------------------------------------------------
-$ git show-branch --more=1 master pu rc
+$ git show-branch --more=1 master seen rc
! [master] Revert "Replace zero-length array decls with []."
- ! [pu] git-repack: Add option to repack all objects.
+ ! [seen] git-repack: Add option to repack all objects.
* [rc] Merge refs/heads/master from .
---
- + [pu] git-repack: Add option to repack all objects.
- + [pu~1] More documentation updates.
- + [pu~2] Show commits in topo order and name all commits.
- + [pu~3] mailinfo and applymbox updates
- + [pu~4] Document "git cherry-pick" and "git revert"
- + [pu~5] Remove git-apply-patch-script.
- + [pu~6] Redo "revert" using three-way merge machinery.
+ + [seen] git-repack: Add option to repack all objects.
+ + [seen~1] More documentation updates.
+ + [seen~2] Show commits in topo order and name all commits.
+ + [seen~3] mailinfo and applymbox updates
+ + [seen~4] Document "git cherry-pick" and "git revert"
+ + [seen~5] Remove git-apply-patch-script.
+ + [seen~6] Redo "revert" using three-way merge machinery.
- [rc] Merge refs/heads/master from .
++* [master] Revert "Replace zero-length array decls with []."
- [rc~1] Merge refs/heads/master from .
diff --git a/Documentation/howto/update-hook-example.txt b/Documentation/howto/update-hook-example.txt
index 89821ec74f..151ee84ceb 100644
--- a/Documentation/howto/update-hook-example.txt
+++ b/Documentation/howto/update-hook-example.txt
@@ -179,7 +179,7 @@ allowed-groups, to describe which heads can be pushed into by
whom. The format of each file would look like this:
refs/heads/master junio
- +refs/heads/pu junio
+ +refs/heads/seen junio
refs/heads/cogito$ pasky
refs/heads/bw/.* linus
refs/heads/tmp/.* .*
@@ -187,6 +187,6 @@ whom. The format of each file would look like this:
With this, Linus can push or create "bw/penguin" or "bw/zebra"
or "bw/panda" branches, Pasky can do only "cogito", and JC can
-do master and pu branches and make versioned tags. And anybody
-can do tmp/blah branches. The '+' sign at the pu record means
+do master and "seen" branches and make versioned tags. And anybody
+can do tmp/blah branches. The '+' sign at the "seen" record means
that JC can make non-fast-forward pushes on it.
--
gitgitgadget
^ permalink raw reply related [relevance 8%]
* [PATCH v2 2/3] docs: adjust the technical overview for the rename `pu` -> `seen`
@ 2020-06-24 14:48 8% ` Johannes Schindelin via GitGitGadget
1 sibling, 0 replies; 200+ results
From: Johannes Schindelin via GitGitGadget @ 2020-06-24 14:48 UTC (permalink / raw)
To: git; +Cc: Denton Liu, Johannes Schindelin, Johannes Schindelin
From: Johannes Schindelin <johannes.schindelin@gmx.de>
This patch tries to rewrite history a bit: the mail contents that have
been added to Git's source code are actually fixed, we cannot change
them in hindsight.
But as the `pu` branch _was_ renamed, and as the documents were added to
Git's source code not so much as historical record, but to describe the
status quo, let's pretend that we have a time machine and adjust the
provided information accordingly.
Where appropriate, quotes were added for readability.
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
---
Documentation/howto/maintain-git.txt | 52 +++++++++----------
.../howto/rebase-from-internal-branch.txt | 32 ++++++------
Documentation/howto/revert-branch-rebase.txt | 32 ++++++------
Documentation/howto/update-hook-example.txt | 6 +--
4 files changed, 61 insertions(+), 61 deletions(-)
diff --git a/Documentation/howto/maintain-git.txt b/Documentation/howto/maintain-git.txt
index 73be8b49f8..a67130debb 100644
--- a/Documentation/howto/maintain-git.txt
+++ b/Documentation/howto/maintain-git.txt
@@ -66,7 +66,7 @@ this mailing list after each feature release is made.
demonstrated to be regression free. New changes are tested
in 'next' before merged to 'master'.
- - 'pu' branch is used to publish other proposed changes that do
+ - 'seen' branch is used to publish other proposed changes that do
not yet pass the criteria set for 'next'.
- The tips of 'master' and 'maint' branches will not be rewound to
@@ -76,7 +76,7 @@ this mailing list after each feature release is made.
of the cycle.
- Usually 'master' contains all of 'maint' and 'next' contains all
- of 'master'. 'pu' contains all the topics merged to 'next', but
+ of 'master'. 'seen' contains all the topics merged to 'next', but
is rebuilt directly on 'master'.
- The tip of 'master' is meant to be more stable than any
@@ -229,12 +229,12 @@ by doing the following:
series?)
- Prepare 'jch' branch, which is used to represent somewhere
- between 'master' and 'pu' and often is slightly ahead of 'next'.
+ between 'master' and 'seen' and often is slightly ahead of 'next'.
- $ Meta/Reintegrate master..pu >Meta/redo-jch.sh
+ $ Meta/Reintegrate master..seen >Meta/redo-jch.sh
The result is a script that lists topics to be merged in order to
- rebuild 'pu' as the input to Meta/Reintegrate script. Remove
+ rebuild 'seen' as the input to Meta/Reintegrate script. Remove
later topics that should not be in 'jch' yet. Add a line that
consists of '### match next' before the name of the first topic
in the output that should be in 'jch' but not in 'next' yet.
@@ -291,29 +291,29 @@ by doing the following:
merged to 'master'. This may lose '### match next' marker;
add it again to the appropriate place when it happens.
- - Rebuild 'pu'.
+ - Rebuild 'seen'.
- $ Meta/Reintegrate master..pu >Meta/redo-pu.sh
+ $ Meta/Reintegrate master..seen >Meta/redo-seen.sh
- Edit the result by adding new topics that are not still in 'pu'
+ Edit the result by adding new topics that are not still in 'seen'
in the script. Then
- $ git checkout -B pu jch
- $ sh Meta/redo-pu.sh
+ $ git checkout -B seen jch
+ $ sh Meta/redo-seen.sh
- When all is well, clean up the redo-pu.sh script with
+ When all is well, clean up the redo-seen.sh script with
- $ sh Meta/redo-pu.sh -u
+ $ sh Meta/redo-seen.sh -u
Double check by running
- $ git branch --no-merged pu
+ $ git branch --no-merged seen
to see there is no unexpected leftover topics.
At this point, build-test the result for semantic conflicts, and
if there are, prepare an appropriate merge-fix first (see
- appendix), and rebuild the 'pu' branch from scratch, starting at
+ appendix), and rebuild the 'seen' branch from scratch, starting at
the tip of 'jch'.
- Update "What's cooking" message to review the updates to
@@ -323,14 +323,14 @@ by doing the following:
$ Meta/cook
- This script inspects the history between master..pu, finds tips
+ This script inspects the history between master..seen, finds tips
of topic branches, compares what it found with the current
contents in Meta/whats-cooking.txt, and updates that file.
- Topics not listed in the file but are found in master..pu are
+ Topics not listed in the file but are found in master..seen are
added to the "New topics" section, topics listed in the file that
- are no longer found in master..pu are moved to the "Graduated to
+ are no longer found in master..seen are moved to the "Graduated to
master" section, and topics whose commits changed their states
- (e.g. used to be only in 'pu', now merged to 'next') are updated
+ (e.g. used to be only in 'seen', now merged to 'next') are updated
with change markers "<<" and ">>".
Look for lines enclosed in "<<" and ">>"; they hold contents from
@@ -360,7 +360,7 @@ Observations
Some observations to be made.
* Each topic is tested individually, and also together with other
- topics cooking first in 'pu', then in 'jch' and then in 'next'.
+ topics cooking first in 'seen', then in 'jch' and then in 'next'.
Until it matures, no part of it is merged to 'master'.
* A topic already in 'next' can get fixes while still in
@@ -411,7 +411,7 @@ new use of the variable under its old name. When these two topics
are merged together, the reference to the variable newly added by
the latter topic will still use the old name in the result.
-The Meta/Reintegrate script that is used by redo-jch and redo-pu
+The Meta/Reintegrate script that is used by redo-jch and redo-seen
scripts implements a crude but usable way to work this issue around.
When the script merges branch $X, it checks if "refs/merge-fix/$X"
exists, and if so, the effect of it is squashed into the result of
@@ -431,14 +431,14 @@ commit that can be squashed into a result of mechanical merge to
correct semantic conflicts.
After finding that the result of merging branch "ai/topic" to an
-integration branch had such a semantic conflict, say pu~4, check the
+integration branch had such a semantic conflict, say seen~4, check the
problematic merge out on a detached HEAD, edit the working tree to
fix the semantic conflict, and make a separate commit to record the
fix-up:
- $ git checkout pu~4
+ $ git checkout seen~4
$ git show -s --pretty=%s ;# double check
- Merge branch 'ai/topic' to pu
+ Merge branch 'ai/topic' to seen
$ edit
$ git commit -m 'merge-fix/ai/topic' -a
@@ -450,9 +450,9 @@ result:
Then double check the result by asking Meta/Reintegrate to redo the
merge:
- $ git checkout pu~5 ;# the parent of the problem merge
+ $ git checkout seen~5 ;# the parent of the problem merge
$ echo ai/topic | Meta/Reintegrate
- $ git diff pu~4
+ $ git diff seen~4
This time, because you prepared refs/merge-fix/ai/topic, the
resulting merge should have been tweaked to include the fix for the
@@ -464,7 +464,7 @@ branch needs this merge-fix is because another branch merged earlier
to the integration branch changed the underlying assumption ai/topic
branch made (e.g. ai/topic branch added a site to refer to a
variable, while the other branch renamed that variable and adjusted
-existing use sites), and if you changed redo-jch (or redo-pu) script
+existing use sites), and if you changed redo-jch (or redo-seen) script
to merge ai/topic branch before the other branch, then the above
merge-fix should not be applied while merging ai/topic, but should
instead be applied while merging the other branch. You would need
diff --git a/Documentation/howto/rebase-from-internal-branch.txt b/Documentation/howto/rebase-from-internal-branch.txt
index 02cb5f758d..ece51ddddc 100644
--- a/Documentation/howto/rebase-from-internal-branch.txt
+++ b/Documentation/howto/rebase-from-internal-branch.txt
@@ -4,7 +4,7 @@ Cc: Petr Baudis <pasky@suse.cz>, Linus Torvalds <torvalds@osdl.org>
Subject: Re: sending changesets from the middle of a git tree
Date: Sun, 14 Aug 2005 18:37:39 -0700
Abstract: In this article, JC talks about how he rebases the
- public "pu" branch using the core Git tools when he updates
+ public "seen" branch using the core Git tools when he updates
the "master" branch, and how "rebase" works. Also discussed
is how this applies to individual developers who sends patches
upstream.
@@ -20,8 +20,8 @@ Petr Baudis <pasky@suse.cz> writes:
> where Junio C Hamano <junkio@cox.net> told me that...
>> Linus Torvalds <torvalds@osdl.org> writes:
>>
->> > Junio, maybe you want to talk about how you move patches from your "pu"
->> > branch to the real branches.
+>> > Junio, maybe you want to talk about how you move patches from your
+>> > "seen" branch to the real branches.
>>
> Actually, wouldn't this be also precisely for what StGIT is intended to?
--------------------------------------
@@ -33,12 +33,12 @@ the kind of task StGIT is designed to do.
I just have done a simpler one, this time using only the core
Git tools.
-I had a handful of commits that were ahead of master in pu, and I
+I had a handful of commits that were ahead of master in 'seen', and I
wanted to add some documentation bypassing my usual habit of
-placing new things in pu first. At the beginning, the commit
+placing new things in 'seen' first. At the beginning, the commit
ancestry graph looked like this:
- *"pu" head
+ *"seen" head
master --> #1 --> #2 --> #3
So I started from master, made a bunch of edits, and committed:
@@ -50,7 +50,7 @@ So I started from master, made a bunch of edits, and committed:
After the commit, the ancestry graph would look like this:
- *"pu" head
+ *"seen" head
master^ --> #1 --> #2 --> #3
\
\---> master
@@ -58,31 +58,31 @@ After the commit, the ancestry graph would look like this:
The old master is now master^ (the first parent of the master).
The new master commit holds my documentation updates.
-Now I have to deal with "pu" branch.
+Now I have to deal with "seen" branch.
This is the kind of situation I used to have all the time when
Linus was the maintainer and I was a contributor, when you look
-at "master" branch being the "maintainer" branch, and "pu"
+at "master" branch being the "maintainer" branch, and "seen"
branch being the "contributor" branch. Your work started at the
tip of the "maintainer" branch some time ago, you made a lot of
progress in the meantime, and now the maintainer branch has some
other commits you do not have yet. And "git rebase" was written
with the explicit purpose of helping to maintain branches like
-"pu". You _could_ merge master to pu and keep going, but if you
+"seen". You _could_ merge master to 'seen' and keep going, but if you
eventually want to cherrypick and merge some but not necessarily
all changes back to the master branch, it often makes later
operations for _you_ easier if you rebase (i.e. carry forward
-your changes) "pu" rather than merge. So I ran "git rebase":
+your changes) "seen" rather than merge. So I ran "git rebase":
- $ git checkout pu
- $ git rebase master pu
+ $ git checkout seen
+ $ git rebase master seen
What this does is to pick all the commits since the current
-branch (note that I now am on "pu" branch) forked from the
+branch (note that I now am on "seen" branch) forked from the
master branch, and forward port these changes.
master^ --> #1 --> #2 --> #3
- \ *"pu" head
+ \ *"seen" head
\---> master --> #1' --> #2' --> #3'
The diff between master^ and #1 is applied to master and
@@ -92,7 +92,7 @@ commits are made similarly out of #2 and #3 commits.
Old #3 is not recorded in any of the .git/refs/heads/ file
anymore, so after doing this you will have dangling commit if
-you ran fsck-cache, which is normal. After testing "pu", you
+you ran fsck-cache, which is normal. After testing "seen", you
can run "git prune" to get rid of those original three commits.
While I am talking about "git rebase", I should talk about how
diff --git a/Documentation/howto/revert-branch-rebase.txt b/Documentation/howto/revert-branch-rebase.txt
index 149508e13b..a3e5595a56 100644
--- a/Documentation/howto/revert-branch-rebase.txt
+++ b/Documentation/howto/revert-branch-rebase.txt
@@ -15,7 +15,7 @@ One of the changes I pulled into the 'master' branch turns out to
break building Git with GCC 2.95. While they were well-intentioned
portability fixes, keeping things working with gcc-2.95 was also
important. Here is what I did to revert the change in the 'master'
-branch and to adjust the 'pu' branch, using core Git tools and
+branch and to adjust the 'seen' branch, using core Git tools and
barebone Porcelain.
First, prepare a throw-away branch in case I screw things up.
@@ -104,11 +104,11 @@ $ git diff master..revert-c99
says nothing.
-Then we rebase the 'pu' branch as usual.
+Then we rebase the 'seen' branch as usual.
------------------------------------------------
-$ git checkout pu
-$ git tag pu-anchor pu
+$ git checkout seen
+$ git tag seen-anchor seen
$ git rebase master
* Applying: Redo "revert" using three-way merge machinery.
First trying simple merge strategy to cherry-pick.
@@ -127,11 +127,11 @@ First trying simple merge strategy to cherry-pick.
First trying simple merge strategy to cherry-pick.
------------------------------------------------
-The temporary tag 'pu-anchor' is me just being careful, in case 'git
+The temporary tag 'seen-anchor' is me just being careful, in case 'git
rebase' screws up. After this, I can do these for sanity check:
------------------------------------------------
-$ git diff pu-anchor..pu ;# make sure we got the master fix.
+$ git diff seen-anchor..seen ;# make sure we got the master fix.
$ make CC=gcc-2.95 clean test ;# make sure it fixed the breakage.
$ make clean test ;# make sure it did not cause other breakage.
------------------------------------------------
@@ -140,7 +140,7 @@ Everything is in the good order. I do not need the temporary branch
or tag anymore, so remove them:
------------------------------------------------
-$ rm -f .git/refs/tags/pu-anchor
+$ rm -f .git/refs/tags/seen-anchor
$ git branch -d revert-c99
------------------------------------------------
@@ -168,18 +168,18 @@ Committed merge 7fb9b7262a1d1e0a47bbfdcbbcf50ce0635d3f8f
And the final repository status looks like this:
------------------------------------------------
-$ git show-branch --more=1 master pu rc
+$ git show-branch --more=1 master seen rc
! [master] Revert "Replace zero-length array decls with []."
- ! [pu] git-repack: Add option to repack all objects.
+ ! [seen] git-repack: Add option to repack all objects.
* [rc] Merge refs/heads/master from .
---
- + [pu] git-repack: Add option to repack all objects.
- + [pu~1] More documentation updates.
- + [pu~2] Show commits in topo order and name all commits.
- + [pu~3] mailinfo and applymbox updates
- + [pu~4] Document "git cherry-pick" and "git revert"
- + [pu~5] Remove git-apply-patch-script.
- + [pu~6] Redo "revert" using three-way merge machinery.
+ + [seen] git-repack: Add option to repack all objects.
+ + [seen~1] More documentation updates.
+ + [seen~2] Show commits in topo order and name all commits.
+ + [seen~3] mailinfo and applymbox updates
+ + [seen~4] Document "git cherry-pick" and "git revert"
+ + [seen~5] Remove git-apply-patch-script.
+ + [seen~6] Redo "revert" using three-way merge machinery.
- [rc] Merge refs/heads/master from .
++* [master] Revert "Replace zero-length array decls with []."
- [rc~1] Merge refs/heads/master from .
diff --git a/Documentation/howto/update-hook-example.txt b/Documentation/howto/update-hook-example.txt
index 89821ec74f..151ee84ceb 100644
--- a/Documentation/howto/update-hook-example.txt
+++ b/Documentation/howto/update-hook-example.txt
@@ -179,7 +179,7 @@ allowed-groups, to describe which heads can be pushed into by
whom. The format of each file would look like this:
refs/heads/master junio
- +refs/heads/pu junio
+ +refs/heads/seen junio
refs/heads/cogito$ pasky
refs/heads/bw/.* linus
refs/heads/tmp/.* .*
@@ -187,6 +187,6 @@ whom. The format of each file would look like this:
With this, Linus can push or create "bw/penguin" or "bw/zebra"
or "bw/panda" branches, Pasky can do only "cogito", and JC can
-do master and pu branches and make versioned tags. And anybody
-can do tmp/blah branches. The '+' sign at the pu record means
+do master and "seen" branches and make versioned tags. And anybody
+can do tmp/blah branches. The '+' sign at the "seen" record means
that JC can make non-fast-forward pushes on it.
--
gitgitgadget
^ permalink raw reply related [relevance 8%]
* Re: [PATCH] Doc: reference 'seen' instead of 'pu' in meta docs
2020-06-23 10:58 8% [PATCH] Doc: reference 'seen' instead of 'pu' in meta docs Denton Liu
@ 2020-06-23 15:09 0% ` Johannes Schindelin
0 siblings, 0 replies; 200+ results
From: Johannes Schindelin @ 2020-06-23 15:09 UTC (permalink / raw)
To: Denton Liu; +Cc: Git Mailing List, Junio C Hamano
Hi Denton,
On Tue, 23 Jun 2020, Denton Liu wrote:
> As of 2020-06-22, the name of git.git's integration branch has been
> renamed from 'pu' to 'seen'.[0] Update git.git-specific documentation to
> refer to the new branch name. In particular, update documents that refer
> to the workflow and also "how to contribute"-type docs.
>
> There still remains other uses of 'pu' in the docs. In these cases, it
> is generally used as an example and there isn't much value in updating
> these examples since they aren't git.git specific.
>
> [0]: https://lore.kernel.org/git/xmqqimfid2l1.fsf@gitster.c.googlers.com/
Whoops, I only saw this now. In the meantime I submitted what I hope is a
more complete version of this patch.
Sorry for duplicating your work,
Dscho
>
> Signed-off-by: Denton Liu <liu.denton@gmail.com>
> ---
> Documentation/MyFirstContribution.txt | 4 +--
> Documentation/SubmittingPatches | 10 +++---
> Documentation/giteveryday.txt | 10 +++---
> Documentation/gitworkflows.txt | 12 +++----
> Documentation/howto/maintain-git.txt | 52 +++++++++++++--------------
> 5 files changed, 44 insertions(+), 44 deletions(-)
>
> diff --git a/Documentation/MyFirstContribution.txt b/Documentation/MyFirstContribution.txt
> index 427274df4d..d85c9b5143 100644
> --- a/Documentation/MyFirstContribution.txt
> +++ b/Documentation/MyFirstContribution.txt
> @@ -1179,8 +1179,8 @@ look at the section below this one for some context.)
> [[after-approval]]
> === After Review Approval
>
> -The Git project has four integration branches: `pu`, `next`, `master`, and
> -`maint`. Your change will be placed into `pu` fairly early on by the maintainer
> +The Git project has four integration branches: `seen`, `next`, `master`, and
> +`maint`. Your change will be placed into `seen` fairly early on by the maintainer
> while it is still in the review process; from there, when it is ready for wider
> testing, it will be merged into `next`. Plenty of early testers use `next` and
> may report issues. Eventually, changes in `next` will make it to `master`,
> diff --git a/Documentation/SubmittingPatches b/Documentation/SubmittingPatches
> index ecf9438cf0..291b61e262 100644
> --- a/Documentation/SubmittingPatches
> +++ b/Documentation/SubmittingPatches
> @@ -19,7 +19,7 @@ change is relevant to.
> base your work on the tip of the topic.
>
> * A new feature should be based on `master` in general. If the new
> - feature depends on a topic that is in `pu`, but not in `master`,
> + feature depends on a topic that is in `seen`, but not in `master`,
> base your work on the tip of that topic.
>
> * Corrections and enhancements to a topic not yet in `master` should
> @@ -28,7 +28,7 @@ change is relevant to.
> into the series.
>
> * In the exceptional case that a new feature depends on several topics
> - not in `master`, start working on `next` or `pu` privately and send
> + not in `master`, start working on `next` or `seen` privately and send
> out patches for discussion. Before the final merge, you may have to
> wait until some of the dependent topics graduate to `master`, and
> rebase your work.
> @@ -38,7 +38,7 @@ change is relevant to.
> these parts should be based on their trees.
>
> To find the tip of a topic branch, run `git log --first-parent
> -master..pu` and look for the merge commit. The second parent of this
> +master..seen` and look for the merge commit. The second parent of this
> commit is the tip of the topic branch.
>
> [[separate-commits]]
> @@ -424,7 +424,7 @@ help you find out who they are.
> and cooked further and eventually graduates to `master`.
>
> In any time between the (2)-(3) cycle, the maintainer may pick it up
> -from the list and queue it to `pu`, in order to make it easier for
> +from the list and queue it to `seen`, in order to make it easier for
> people play with it without having to pick up and apply the patch to
> their trees themselves.
>
> @@ -435,7 +435,7 @@ their trees themselves.
> master. `git pull --rebase` will automatically skip already-applied
> patches, and will let you know. This works only if you rebase on top
> of the branch in which your patch has been merged (i.e. it will not
> - tell you if your patch is merged in pu if you rebase on top of
> + tell you if your patch is merged in `seen` if you rebase on top of
> master).
>
> * Read the Git mailing list, the maintainer regularly posts messages
> diff --git a/Documentation/giteveryday.txt b/Documentation/giteveryday.txt
> index 1bd919f92b..faba2ef088 100644
> --- a/Documentation/giteveryday.txt
> +++ b/Documentation/giteveryday.txt
> @@ -278,13 +278,13 @@ $ git am -3 -i -s ./+to-apply <4>
> $ compile/test
> $ git switch -c hold/linus && git am -3 -i -s ./+hold-linus <5>
> $ git switch topic/one && git rebase master <6>
> -$ git switch -C pu next <7>
> +$ git switch -C seen next <7>
> $ git merge topic/one topic/two && git merge hold/linus <8>
> $ git switch maint
> $ git cherry-pick master~4 <9>
> $ compile/test
> $ git tag -s -m "GIT 0.99.9x" v0.99.9x <10>
> -$ git fetch ko && for branch in master maint next pu <11>
> +$ git fetch ko && for branch in master maint next seen <11>
> do
> git show-branch ko/$branch $branch <12>
> done
> @@ -294,14 +294,14 @@ $ git push --follow-tags ko <13>
> <1> see what you were in the middle of doing, if anything.
> <2> see which branches haven't been merged into `master` yet.
> Likewise for any other integration branches e.g. `maint`, `next`
> -and `pu` (potential updates).
> +and `seen`.
> <3> read mails, save ones that are applicable, and save others
> that are not quite ready (other mail readers are available).
> <4> apply them, interactively, with your sign-offs.
> <5> create topic branch as needed and apply, again with sign-offs.
> <6> rebase internal topic branch that has not been merged to the
> master or exposed as a part of a stable branch.
> -<7> restart `pu` every time from the next.
> +<7> restart `seen` every time from the next.
> <8> and bundle topic branches still cooking.
> <9> backport a critical fix.
> <10> create a signed tag.
> @@ -323,7 +323,7 @@ repository at kernel.org, and looks like this:
> fetch = refs/heads/*:refs/remotes/ko/*
> push = refs/heads/master
> push = refs/heads/next
> - push = +refs/heads/pu
> + push = +refs/heads/seen
> push = refs/heads/maint
> ------------
>
> diff --git a/Documentation/gitworkflows.txt b/Documentation/gitworkflows.txt
> index abc0dc6bc7..ae38ff3fed 100644
> --- a/Documentation/gitworkflows.txt
> +++ b/Documentation/gitworkflows.txt
> @@ -85,7 +85,7 @@ As a given feature goes from experimental to stable, it also
>
> There is a fourth official branch that is used slightly differently:
>
> -* 'pu' (proposed updates) is an integration branch for things that are
> +* 'seen' is an integration branch for things that are
> not quite ready for inclusion yet (see "Integration Branches"
> below).
>
> @@ -93,7 +93,7 @@ Each of the four branches is usually a direct descendant of the one
> above it.
>
> Conceptually, the feature enters at an unstable branch (usually 'next'
> -or 'pu'), and "graduates" to 'master' for the next release once it is
> +or 'seen'), and "graduates" to 'master' for the next release once it is
> considered stable enough.
>
>
> @@ -207,7 +207,7 @@ If you make it (very) clear that this branch is going to be deleted
> right after the testing, you can even publish this branch, for example
> to give the testers a chance to work with it, or other developers a
> chance to see if their in-progress work will be compatible. `git.git`
> -has such an official throw-away integration branch called 'pu'.
> +has such an official throw-away integration branch called 'seen'.
>
>
> Branch management for a release
> @@ -291,7 +291,7 @@ This will not happen if the content of the branches was verified as
> described in the previous section.
>
>
> -Branch management for next and pu after a feature release
> +Branch management for next and seen after a feature release
> ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>
> After a feature release, the integration branch 'next' may optionally be
> @@ -319,8 +319,8 @@ so.
> If you do this, then you should make a public announcement indicating
> that 'next' was rewound and rebuilt.
>
> -The same rewind and rebuild process may be followed for 'pu'. A public
> -announcement is not necessary since 'pu' is a throw-away branch, as
> +The same rewind and rebuild process may be followed for 'seen'. A public
> +announcement is not necessary since 'seen' is a throw-away branch, as
> described above.
>
>
> diff --git a/Documentation/howto/maintain-git.txt b/Documentation/howto/maintain-git.txt
> index 73be8b49f8..a67130debb 100644
> --- a/Documentation/howto/maintain-git.txt
> +++ b/Documentation/howto/maintain-git.txt
> @@ -66,7 +66,7 @@ this mailing list after each feature release is made.
> demonstrated to be regression free. New changes are tested
> in 'next' before merged to 'master'.
>
> - - 'pu' branch is used to publish other proposed changes that do
> + - 'seen' branch is used to publish other proposed changes that do
> not yet pass the criteria set for 'next'.
>
> - The tips of 'master' and 'maint' branches will not be rewound to
> @@ -76,7 +76,7 @@ this mailing list after each feature release is made.
> of the cycle.
>
> - Usually 'master' contains all of 'maint' and 'next' contains all
> - of 'master'. 'pu' contains all the topics merged to 'next', but
> + of 'master'. 'seen' contains all the topics merged to 'next', but
> is rebuilt directly on 'master'.
>
> - The tip of 'master' is meant to be more stable than any
> @@ -229,12 +229,12 @@ by doing the following:
> series?)
>
> - Prepare 'jch' branch, which is used to represent somewhere
> - between 'master' and 'pu' and often is slightly ahead of 'next'.
> + between 'master' and 'seen' and often is slightly ahead of 'next'.
>
> - $ Meta/Reintegrate master..pu >Meta/redo-jch.sh
> + $ Meta/Reintegrate master..seen >Meta/redo-jch.sh
>
> The result is a script that lists topics to be merged in order to
> - rebuild 'pu' as the input to Meta/Reintegrate script. Remove
> + rebuild 'seen' as the input to Meta/Reintegrate script. Remove
> later topics that should not be in 'jch' yet. Add a line that
> consists of '### match next' before the name of the first topic
> in the output that should be in 'jch' but not in 'next' yet.
> @@ -291,29 +291,29 @@ by doing the following:
> merged to 'master'. This may lose '### match next' marker;
> add it again to the appropriate place when it happens.
>
> - - Rebuild 'pu'.
> + - Rebuild 'seen'.
>
> - $ Meta/Reintegrate master..pu >Meta/redo-pu.sh
> + $ Meta/Reintegrate master..seen >Meta/redo-seen.sh
>
> - Edit the result by adding new topics that are not still in 'pu'
> + Edit the result by adding new topics that are not still in 'seen'
> in the script. Then
>
> - $ git checkout -B pu jch
> - $ sh Meta/redo-pu.sh
> + $ git checkout -B seen jch
> + $ sh Meta/redo-seen.sh
>
> - When all is well, clean up the redo-pu.sh script with
> + When all is well, clean up the redo-seen.sh script with
>
> - $ sh Meta/redo-pu.sh -u
> + $ sh Meta/redo-seen.sh -u
>
> Double check by running
>
> - $ git branch --no-merged pu
> + $ git branch --no-merged seen
>
> to see there is no unexpected leftover topics.
>
> At this point, build-test the result for semantic conflicts, and
> if there are, prepare an appropriate merge-fix first (see
> - appendix), and rebuild the 'pu' branch from scratch, starting at
> + appendix), and rebuild the 'seen' branch from scratch, starting at
> the tip of 'jch'.
>
> - Update "What's cooking" message to review the updates to
> @@ -323,14 +323,14 @@ by doing the following:
>
> $ Meta/cook
>
> - This script inspects the history between master..pu, finds tips
> + This script inspects the history between master..seen, finds tips
> of topic branches, compares what it found with the current
> contents in Meta/whats-cooking.txt, and updates that file.
> - Topics not listed in the file but are found in master..pu are
> + Topics not listed in the file but are found in master..seen are
> added to the "New topics" section, topics listed in the file that
> - are no longer found in master..pu are moved to the "Graduated to
> + are no longer found in master..seen are moved to the "Graduated to
> master" section, and topics whose commits changed their states
> - (e.g. used to be only in 'pu', now merged to 'next') are updated
> + (e.g. used to be only in 'seen', now merged to 'next') are updated
> with change markers "<<" and ">>".
>
> Look for lines enclosed in "<<" and ">>"; they hold contents from
> @@ -360,7 +360,7 @@ Observations
> Some observations to be made.
>
> * Each topic is tested individually, and also together with other
> - topics cooking first in 'pu', then in 'jch' and then in 'next'.
> + topics cooking first in 'seen', then in 'jch' and then in 'next'.
> Until it matures, no part of it is merged to 'master'.
>
> * A topic already in 'next' can get fixes while still in
> @@ -411,7 +411,7 @@ new use of the variable under its old name. When these two topics
> are merged together, the reference to the variable newly added by
> the latter topic will still use the old name in the result.
>
> -The Meta/Reintegrate script that is used by redo-jch and redo-pu
> +The Meta/Reintegrate script that is used by redo-jch and redo-seen
> scripts implements a crude but usable way to work this issue around.
> When the script merges branch $X, it checks if "refs/merge-fix/$X"
> exists, and if so, the effect of it is squashed into the result of
> @@ -431,14 +431,14 @@ commit that can be squashed into a result of mechanical merge to
> correct semantic conflicts.
>
> After finding that the result of merging branch "ai/topic" to an
> -integration branch had such a semantic conflict, say pu~4, check the
> +integration branch had such a semantic conflict, say seen~4, check the
> problematic merge out on a detached HEAD, edit the working tree to
> fix the semantic conflict, and make a separate commit to record the
> fix-up:
>
> - $ git checkout pu~4
> + $ git checkout seen~4
> $ git show -s --pretty=%s ;# double check
> - Merge branch 'ai/topic' to pu
> + Merge branch 'ai/topic' to seen
> $ edit
> $ git commit -m 'merge-fix/ai/topic' -a
>
> @@ -450,9 +450,9 @@ result:
> Then double check the result by asking Meta/Reintegrate to redo the
> merge:
>
> - $ git checkout pu~5 ;# the parent of the problem merge
> + $ git checkout seen~5 ;# the parent of the problem merge
> $ echo ai/topic | Meta/Reintegrate
> - $ git diff pu~4
> + $ git diff seen~4
>
> This time, because you prepared refs/merge-fix/ai/topic, the
> resulting merge should have been tweaked to include the fix for the
> @@ -464,7 +464,7 @@ branch needs this merge-fix is because another branch merged earlier
> to the integration branch changed the underlying assumption ai/topic
> branch made (e.g. ai/topic branch added a site to refer to a
> variable, while the other branch renamed that variable and adjusted
> -existing use sites), and if you changed redo-jch (or redo-pu) script
> +existing use sites), and if you changed redo-jch (or redo-seen) script
> to merge ai/topic branch before the other branch, then the above
> merge-fix should not be applied while merging ai/topic, but should
> instead be applied while merging the other branch. You would need
> --
> 2.27.0.307.g7979e895e7
>
>
^ permalink raw reply [relevance 0%]
* [PATCH 2/3] docs: adjust the technical overview for the rename `pu` -> `seen`
@ 2020-06-23 15:04 8% ` Johannes Schindelin via GitGitGadget
1 sibling, 0 replies; 200+ results
From: Johannes Schindelin via GitGitGadget @ 2020-06-23 15:04 UTC (permalink / raw)
To: git; +Cc: Johannes Schindelin, Johannes Schindelin
From: Johannes Schindelin <johannes.schindelin@gmx.de>
This patch tries to rewrite history a bit: the mail contents that have
been added to Git's source code are actually fixed, we cannot change
them in hindsight.
But as the `pu` branch _was_ renamed, and as the documents were added to
Git's source code not so much as historical record, but to describe the
status quo, let's pretend that we have a time machine and adjust the
provided information accordingly.
Where appropriate, quotes were added for readability.
Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
---
Documentation/howto/maintain-git.txt | 52 +++++++++----------
.../howto/rebase-from-internal-branch.txt | 32 ++++++------
Documentation/howto/revert-branch-rebase.txt | 32 ++++++------
Documentation/howto/update-hook-example.txt | 6 +--
4 files changed, 61 insertions(+), 61 deletions(-)
diff --git a/Documentation/howto/maintain-git.txt b/Documentation/howto/maintain-git.txt
index 73be8b49f84..a67130debb6 100644
--- a/Documentation/howto/maintain-git.txt
+++ b/Documentation/howto/maintain-git.txt
@@ -66,7 +66,7 @@ this mailing list after each feature release is made.
demonstrated to be regression free. New changes are tested
in 'next' before merged to 'master'.
- - 'pu' branch is used to publish other proposed changes that do
+ - 'seen' branch is used to publish other proposed changes that do
not yet pass the criteria set for 'next'.
- The tips of 'master' and 'maint' branches will not be rewound to
@@ -76,7 +76,7 @@ this mailing list after each feature release is made.
of the cycle.
- Usually 'master' contains all of 'maint' and 'next' contains all
- of 'master'. 'pu' contains all the topics merged to 'next', but
+ of 'master'. 'seen' contains all the topics merged to 'next', but
is rebuilt directly on 'master'.
- The tip of 'master' is meant to be more stable than any
@@ -229,12 +229,12 @@ by doing the following:
series?)
- Prepare 'jch' branch, which is used to represent somewhere
- between 'master' and 'pu' and often is slightly ahead of 'next'.
+ between 'master' and 'seen' and often is slightly ahead of 'next'.
- $ Meta/Reintegrate master..pu >Meta/redo-jch.sh
+ $ Meta/Reintegrate master..seen >Meta/redo-jch.sh
The result is a script that lists topics to be merged in order to
- rebuild 'pu' as the input to Meta/Reintegrate script. Remove
+ rebuild 'seen' as the input to Meta/Reintegrate script. Remove
later topics that should not be in 'jch' yet. Add a line that
consists of '### match next' before the name of the first topic
in the output that should be in 'jch' but not in 'next' yet.
@@ -291,29 +291,29 @@ by doing the following:
merged to 'master'. This may lose '### match next' marker;
add it again to the appropriate place when it happens.
- - Rebuild 'pu'.
+ - Rebuild 'seen'.
- $ Meta/Reintegrate master..pu >Meta/redo-pu.sh
+ $ Meta/Reintegrate master..seen >Meta/redo-seen.sh
- Edit the result by adding new topics that are not still in 'pu'
+ Edit the result by adding new topics that are not still in 'seen'
in the script. Then
- $ git checkout -B pu jch
- $ sh Meta/redo-pu.sh
+ $ git checkout -B seen jch
+ $ sh Meta/redo-seen.sh
- When all is well, clean up the redo-pu.sh script with
+ When all is well, clean up the redo-seen.sh script with
- $ sh Meta/redo-pu.sh -u
+ $ sh Meta/redo-seen.sh -u
Double check by running
- $ git branch --no-merged pu
+ $ git branch --no-merged seen
to see there is no unexpected leftover topics.
At this point, build-test the result for semantic conflicts, and
if there are, prepare an appropriate merge-fix first (see
- appendix), and rebuild the 'pu' branch from scratch, starting at
+ appendix), and rebuild the 'seen' branch from scratch, starting at
the tip of 'jch'.
- Update "What's cooking" message to review the updates to
@@ -323,14 +323,14 @@ by doing the following:
$ Meta/cook
- This script inspects the history between master..pu, finds tips
+ This script inspects the history between master..seen, finds tips
of topic branches, compares what it found with the current
contents in Meta/whats-cooking.txt, and updates that file.
- Topics not listed in the file but are found in master..pu are
+ Topics not listed in the file but are found in master..seen are
added to the "New topics" section, topics listed in the file that
- are no longer found in master..pu are moved to the "Graduated to
+ are no longer found in master..seen are moved to the "Graduated to
master" section, and topics whose commits changed their states
- (e.g. used to be only in 'pu', now merged to 'next') are updated
+ (e.g. used to be only in 'seen', now merged to 'next') are updated
with change markers "<<" and ">>".
Look for lines enclosed in "<<" and ">>"; they hold contents from
@@ -360,7 +360,7 @@ Observations
Some observations to be made.
* Each topic is tested individually, and also together with other
- topics cooking first in 'pu', then in 'jch' and then in 'next'.
+ topics cooking first in 'seen', then in 'jch' and then in 'next'.
Until it matures, no part of it is merged to 'master'.
* A topic already in 'next' can get fixes while still in
@@ -411,7 +411,7 @@ new use of the variable under its old name. When these two topics
are merged together, the reference to the variable newly added by
the latter topic will still use the old name in the result.
-The Meta/Reintegrate script that is used by redo-jch and redo-pu
+The Meta/Reintegrate script that is used by redo-jch and redo-seen
scripts implements a crude but usable way to work this issue around.
When the script merges branch $X, it checks if "refs/merge-fix/$X"
exists, and if so, the effect of it is squashed into the result of
@@ -431,14 +431,14 @@ commit that can be squashed into a result of mechanical merge to
correct semantic conflicts.
After finding that the result of merging branch "ai/topic" to an
-integration branch had such a semantic conflict, say pu~4, check the
+integration branch had such a semantic conflict, say seen~4, check the
problematic merge out on a detached HEAD, edit the working tree to
fix the semantic conflict, and make a separate commit to record the
fix-up:
- $ git checkout pu~4
+ $ git checkout seen~4
$ git show -s --pretty=%s ;# double check
- Merge branch 'ai/topic' to pu
+ Merge branch 'ai/topic' to seen
$ edit
$ git commit -m 'merge-fix/ai/topic' -a
@@ -450,9 +450,9 @@ result:
Then double check the result by asking Meta/Reintegrate to redo the
merge:
- $ git checkout pu~5 ;# the parent of the problem merge
+ $ git checkout seen~5 ;# the parent of the problem merge
$ echo ai/topic | Meta/Reintegrate
- $ git diff pu~4
+ $ git diff seen~4
This time, because you prepared refs/merge-fix/ai/topic, the
resulting merge should have been tweaked to include the fix for the
@@ -464,7 +464,7 @@ branch needs this merge-fix is because another branch merged earlier
to the integration branch changed the underlying assumption ai/topic
branch made (e.g. ai/topic branch added a site to refer to a
variable, while the other branch renamed that variable and adjusted
-existing use sites), and if you changed redo-jch (or redo-pu) script
+existing use sites), and if you changed redo-jch (or redo-seen) script
to merge ai/topic branch before the other branch, then the above
merge-fix should not be applied while merging ai/topic, but should
instead be applied while merging the other branch. You would need
diff --git a/Documentation/howto/rebase-from-internal-branch.txt b/Documentation/howto/rebase-from-internal-branch.txt
index 02cb5f758d6..ece51ddddce 100644
--- a/Documentation/howto/rebase-from-internal-branch.txt
+++ b/Documentation/howto/rebase-from-internal-branch.txt
@@ -4,7 +4,7 @@ Cc: Petr Baudis <pasky@suse.cz>, Linus Torvalds <torvalds@osdl.org>
Subject: Re: sending changesets from the middle of a git tree
Date: Sun, 14 Aug 2005 18:37:39 -0700
Abstract: In this article, JC talks about how he rebases the
- public "pu" branch using the core Git tools when he updates
+ public "seen" branch using the core Git tools when he updates
the "master" branch, and how "rebase" works. Also discussed
is how this applies to individual developers who sends patches
upstream.
@@ -20,8 +20,8 @@ Petr Baudis <pasky@suse.cz> writes:
> where Junio C Hamano <junkio@cox.net> told me that...
>> Linus Torvalds <torvalds@osdl.org> writes:
>>
->> > Junio, maybe you want to talk about how you move patches from your "pu"
->> > branch to the real branches.
+>> > Junio, maybe you want to talk about how you move patches from your
+>> > "seen" branch to the real branches.
>>
> Actually, wouldn't this be also precisely for what StGIT is intended to?
--------------------------------------
@@ -33,12 +33,12 @@ the kind of task StGIT is designed to do.
I just have done a simpler one, this time using only the core
Git tools.
-I had a handful of commits that were ahead of master in pu, and I
+I had a handful of commits that were ahead of master in 'seen', and I
wanted to add some documentation bypassing my usual habit of
-placing new things in pu first. At the beginning, the commit
+placing new things in 'seen' first. At the beginning, the commit
ancestry graph looked like this:
- *"pu" head
+ *"seen" head
master --> #1 --> #2 --> #3
So I started from master, made a bunch of edits, and committed:
@@ -50,7 +50,7 @@ So I started from master, made a bunch of edits, and committed:
After the commit, the ancestry graph would look like this:
- *"pu" head
+ *"seen" head
master^ --> #1 --> #2 --> #3
\
\---> master
@@ -58,31 +58,31 @@ After the commit, the ancestry graph would look like this:
The old master is now master^ (the first parent of the master).
The new master commit holds my documentation updates.
-Now I have to deal with "pu" branch.
+Now I have to deal with "seen" branch.
This is the kind of situation I used to have all the time when
Linus was the maintainer and I was a contributor, when you look
-at "master" branch being the "maintainer" branch, and "pu"
+at "master" branch being the "maintainer" branch, and "seen"
branch being the "contributor" branch. Your work started at the
tip of the "maintainer" branch some time ago, you made a lot of
progress in the meantime, and now the maintainer branch has some
other commits you do not have yet. And "git rebase" was written
with the explicit purpose of helping to maintain branches like
-"pu". You _could_ merge master to pu and keep going, but if you
+"seen". You _could_ merge master to 'seen' and keep going, but if you
eventually want to cherrypick and merge some but not necessarily
all changes back to the master branch, it often makes later
operations for _you_ easier if you rebase (i.e. carry forward
-your changes) "pu" rather than merge. So I ran "git rebase":
+your changes) "seen" rather than merge. So I ran "git rebase":
- $ git checkout pu
- $ git rebase master pu
+ $ git checkout seen
+ $ git rebase master seen
What this does is to pick all the commits since the current
-branch (note that I now am on "pu" branch) forked from the
+branch (note that I now am on "seen" branch) forked from the
master branch, and forward port these changes.
master^ --> #1 --> #2 --> #3
- \ *"pu" head
+ \ *"seen" head
\---> master --> #1' --> #2' --> #3'
The diff between master^ and #1 is applied to master and
@@ -92,7 +92,7 @@ commits are made similarly out of #2 and #3 commits.
Old #3 is not recorded in any of the .git/refs/heads/ file
anymore, so after doing this you will have dangling commit if
-you ran fsck-cache, which is normal. After testing "pu", you
+you ran fsck-cache, which is normal. After testing "seen", you
can run "git prune" to get rid of those original three commits.
While I am talking about "git rebase", I should talk about how
diff --git a/Documentation/howto/revert-branch-rebase.txt b/Documentation/howto/revert-branch-rebase.txt
index 149508e13bd..a3e5595a569 100644
--- a/Documentation/howto/revert-branch-rebase.txt
+++ b/Documentation/howto/revert-branch-rebase.txt
@@ -15,7 +15,7 @@ One of the changes I pulled into the 'master' branch turns out to
break building Git with GCC 2.95. While they were well-intentioned
portability fixes, keeping things working with gcc-2.95 was also
important. Here is what I did to revert the change in the 'master'
-branch and to adjust the 'pu' branch, using core Git tools and
+branch and to adjust the 'seen' branch, using core Git tools and
barebone Porcelain.
First, prepare a throw-away branch in case I screw things up.
@@ -104,11 +104,11 @@ $ git diff master..revert-c99
says nothing.
-Then we rebase the 'pu' branch as usual.
+Then we rebase the 'seen' branch as usual.
------------------------------------------------
-$ git checkout pu
-$ git tag pu-anchor pu
+$ git checkout seen
+$ git tag seen-anchor seen
$ git rebase master
* Applying: Redo "revert" using three-way merge machinery.
First trying simple merge strategy to cherry-pick.
@@ -127,11 +127,11 @@ First trying simple merge strategy to cherry-pick.
First trying simple merge strategy to cherry-pick.
------------------------------------------------
-The temporary tag 'pu-anchor' is me just being careful, in case 'git
+The temporary tag 'seen-anchor' is me just being careful, in case 'git
rebase' screws up. After this, I can do these for sanity check:
------------------------------------------------
-$ git diff pu-anchor..pu ;# make sure we got the master fix.
+$ git diff seen-anchor..seen ;# make sure we got the master fix.
$ make CC=gcc-2.95 clean test ;# make sure it fixed the breakage.
$ make clean test ;# make sure it did not cause other breakage.
------------------------------------------------
@@ -140,7 +140,7 @@ Everything is in the good order. I do not need the temporary branch
or tag anymore, so remove them:
------------------------------------------------
-$ rm -f .git/refs/tags/pu-anchor
+$ rm -f .git/refs/tags/seen-anchor
$ git branch -d revert-c99
------------------------------------------------
@@ -168,18 +168,18 @@ Committed merge 7fb9b7262a1d1e0a47bbfdcbbcf50ce0635d3f8f
And the final repository status looks like this:
------------------------------------------------
-$ git show-branch --more=1 master pu rc
+$ git show-branch --more=1 master seen rc
! [master] Revert "Replace zero-length array decls with []."
- ! [pu] git-repack: Add option to repack all objects.
+ ! [seen] git-repack: Add option to repack all objects.
* [rc] Merge refs/heads/master from .
---
- + [pu] git-repack: Add option to repack all objects.
- + [pu~1] More documentation updates.
- + [pu~2] Show commits in topo order and name all commits.
- + [pu~3] mailinfo and applymbox updates
- + [pu~4] Document "git cherry-pick" and "git revert"
- + [pu~5] Remove git-apply-patch-script.
- + [pu~6] Redo "revert" using three-way merge machinery.
+ + [seen] git-repack: Add option to repack all objects.
+ + [seen~1] More documentation updates.
+ + [seen~2] Show commits in topo order and name all commits.
+ + [seen~3] mailinfo and applymbox updates
+ + [seen~4] Document "git cherry-pick" and "git revert"
+ + [seen~5] Remove git-apply-patch-script.
+ + [seen~6] Redo "revert" using three-way merge machinery.
- [rc] Merge refs/heads/master from .
++* [master] Revert "Replace zero-length array decls with []."
- [rc~1] Merge refs/heads/master from .
diff --git a/Documentation/howto/update-hook-example.txt b/Documentation/howto/update-hook-example.txt
index 89821ec74fe..151ee84cebc 100644
--- a/Documentation/howto/update-hook-example.txt
+++ b/Documentation/howto/update-hook-example.txt
@@ -179,7 +179,7 @@ allowed-groups, to describe which heads can be pushed into by
whom. The format of each file would look like this:
refs/heads/master junio
- +refs/heads/pu junio
+ +refs/heads/seen junio
refs/heads/cogito$ pasky
refs/heads/bw/.* linus
refs/heads/tmp/.* .*
@@ -187,6 +187,6 @@ whom. The format of each file would look like this:
With this, Linus can push or create "bw/penguin" or "bw/zebra"
or "bw/panda" branches, Pasky can do only "cogito", and JC can
-do master and pu branches and make versioned tags. And anybody
-can do tmp/blah branches. The '+' sign at the pu record means
+do master and "seen" branches and make versioned tags. And anybody
+can do tmp/blah branches. The '+' sign at the "seen" record means
that JC can make non-fast-forward pushes on it.
--
gitgitgadget
^ permalink raw reply related [relevance 8%]
* [PATCH] Doc: reference 'seen' instead of 'pu' in meta docs
@ 2020-06-23 10:58 8% Denton Liu
2020-06-23 15:09 0% ` Johannes Schindelin
0 siblings, 1 reply; 200+ results
From: Denton Liu @ 2020-06-23 10:58 UTC (permalink / raw)
To: Git Mailing List; +Cc: Junio C Hamano
As of 2020-06-22, the name of git.git's integration branch has been
renamed from 'pu' to 'seen'.[0] Update git.git-specific documentation to
refer to the new branch name. In particular, update documents that refer
to the workflow and also "how to contribute"-type docs.
There still remains other uses of 'pu' in the docs. In these cases, it
is generally used as an example and there isn't much value in updating
these examples since they aren't git.git specific.
[0]: https://lore.kernel.org/git/xmqqimfid2l1.fsf@gitster.c.googlers.com/
Signed-off-by: Denton Liu <liu.denton@gmail.com>
---
Documentation/MyFirstContribution.txt | 4 +--
Documentation/SubmittingPatches | 10 +++---
Documentation/giteveryday.txt | 10 +++---
Documentation/gitworkflows.txt | 12 +++----
Documentation/howto/maintain-git.txt | 52 +++++++++++++--------------
5 files changed, 44 insertions(+), 44 deletions(-)
diff --git a/Documentation/MyFirstContribution.txt b/Documentation/MyFirstContribution.txt
index 427274df4d..d85c9b5143 100644
--- a/Documentation/MyFirstContribution.txt
+++ b/Documentation/MyFirstContribution.txt
@@ -1179,8 +1179,8 @@ look at the section below this one for some context.)
[[after-approval]]
=== After Review Approval
-The Git project has four integration branches: `pu`, `next`, `master`, and
-`maint`. Your change will be placed into `pu` fairly early on by the maintainer
+The Git project has four integration branches: `seen`, `next`, `master`, and
+`maint`. Your change will be placed into `seen` fairly early on by the maintainer
while it is still in the review process; from there, when it is ready for wider
testing, it will be merged into `next`. Plenty of early testers use `next` and
may report issues. Eventually, changes in `next` will make it to `master`,
diff --git a/Documentation/SubmittingPatches b/Documentation/SubmittingPatches
index ecf9438cf0..291b61e262 100644
--- a/Documentation/SubmittingPatches
+++ b/Documentation/SubmittingPatches
@@ -19,7 +19,7 @@ change is relevant to.
base your work on the tip of the topic.
* A new feature should be based on `master` in general. If the new
- feature depends on a topic that is in `pu`, but not in `master`,
+ feature depends on a topic that is in `seen`, but not in `master`,
base your work on the tip of that topic.
* Corrections and enhancements to a topic not yet in `master` should
@@ -28,7 +28,7 @@ change is relevant to.
into the series.
* In the exceptional case that a new feature depends on several topics
- not in `master`, start working on `next` or `pu` privately and send
+ not in `master`, start working on `next` or `seen` privately and send
out patches for discussion. Before the final merge, you may have to
wait until some of the dependent topics graduate to `master`, and
rebase your work.
@@ -38,7 +38,7 @@ change is relevant to.
these parts should be based on their trees.
To find the tip of a topic branch, run `git log --first-parent
-master..pu` and look for the merge commit. The second parent of this
+master..seen` and look for the merge commit. The second parent of this
commit is the tip of the topic branch.
[[separate-commits]]
@@ -424,7 +424,7 @@ help you find out who they are.
and cooked further and eventually graduates to `master`.
In any time between the (2)-(3) cycle, the maintainer may pick it up
-from the list and queue it to `pu`, in order to make it easier for
+from the list and queue it to `seen`, in order to make it easier for
people play with it without having to pick up and apply the patch to
their trees themselves.
@@ -435,7 +435,7 @@ their trees themselves.
master. `git pull --rebase` will automatically skip already-applied
patches, and will let you know. This works only if you rebase on top
of the branch in which your patch has been merged (i.e. it will not
- tell you if your patch is merged in pu if you rebase on top of
+ tell you if your patch is merged in `seen` if you rebase on top of
master).
* Read the Git mailing list, the maintainer regularly posts messages
diff --git a/Documentation/giteveryday.txt b/Documentation/giteveryday.txt
index 1bd919f92b..faba2ef088 100644
--- a/Documentation/giteveryday.txt
+++ b/Documentation/giteveryday.txt
@@ -278,13 +278,13 @@ $ git am -3 -i -s ./+to-apply <4>
$ compile/test
$ git switch -c hold/linus && git am -3 -i -s ./+hold-linus <5>
$ git switch topic/one && git rebase master <6>
-$ git switch -C pu next <7>
+$ git switch -C seen next <7>
$ git merge topic/one topic/two && git merge hold/linus <8>
$ git switch maint
$ git cherry-pick master~4 <9>
$ compile/test
$ git tag -s -m "GIT 0.99.9x" v0.99.9x <10>
-$ git fetch ko && for branch in master maint next pu <11>
+$ git fetch ko && for branch in master maint next seen <11>
do
git show-branch ko/$branch $branch <12>
done
@@ -294,14 +294,14 @@ $ git push --follow-tags ko <13>
<1> see what you were in the middle of doing, if anything.
<2> see which branches haven't been merged into `master` yet.
Likewise for any other integration branches e.g. `maint`, `next`
-and `pu` (potential updates).
+and `seen`.
<3> read mails, save ones that are applicable, and save others
that are not quite ready (other mail readers are available).
<4> apply them, interactively, with your sign-offs.
<5> create topic branch as needed and apply, again with sign-offs.
<6> rebase internal topic branch that has not been merged to the
master or exposed as a part of a stable branch.
-<7> restart `pu` every time from the next.
+<7> restart `seen` every time from the next.
<8> and bundle topic branches still cooking.
<9> backport a critical fix.
<10> create a signed tag.
@@ -323,7 +323,7 @@ repository at kernel.org, and looks like this:
fetch = refs/heads/*:refs/remotes/ko/*
push = refs/heads/master
push = refs/heads/next
- push = +refs/heads/pu
+ push = +refs/heads/seen
push = refs/heads/maint
------------
diff --git a/Documentation/gitworkflows.txt b/Documentation/gitworkflows.txt
index abc0dc6bc7..ae38ff3fed 100644
--- a/Documentation/gitworkflows.txt
+++ b/Documentation/gitworkflows.txt
@@ -85,7 +85,7 @@ As a given feature goes from experimental to stable, it also
There is a fourth official branch that is used slightly differently:
-* 'pu' (proposed updates) is an integration branch for things that are
+* 'seen' is an integration branch for things that are
not quite ready for inclusion yet (see "Integration Branches"
below).
@@ -93,7 +93,7 @@ Each of the four branches is usually a direct descendant of the one
above it.
Conceptually, the feature enters at an unstable branch (usually 'next'
-or 'pu'), and "graduates" to 'master' for the next release once it is
+or 'seen'), and "graduates" to 'master' for the next release once it is
considered stable enough.
@@ -207,7 +207,7 @@ If you make it (very) clear that this branch is going to be deleted
right after the testing, you can even publish this branch, for example
to give the testers a chance to work with it, or other developers a
chance to see if their in-progress work will be compatible. `git.git`
-has such an official throw-away integration branch called 'pu'.
+has such an official throw-away integration branch called 'seen'.
Branch management for a release
@@ -291,7 +291,7 @@ This will not happen if the content of the branches was verified as
described in the previous section.
-Branch management for next and pu after a feature release
+Branch management for next and seen after a feature release
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
After a feature release, the integration branch 'next' may optionally be
@@ -319,8 +319,8 @@ so.
If you do this, then you should make a public announcement indicating
that 'next' was rewound and rebuilt.
-The same rewind and rebuild process may be followed for 'pu'. A public
-announcement is not necessary since 'pu' is a throw-away branch, as
+The same rewind and rebuild process may be followed for 'seen'. A public
+announcement is not necessary since 'seen' is a throw-away branch, as
described above.
diff --git a/Documentation/howto/maintain-git.txt b/Documentation/howto/maintain-git.txt
index 73be8b49f8..a67130debb 100644
--- a/Documentation/howto/maintain-git.txt
+++ b/Documentation/howto/maintain-git.txt
@@ -66,7 +66,7 @@ this mailing list after each feature release is made.
demonstrated to be regression free. New changes are tested
in 'next' before merged to 'master'.
- - 'pu' branch is used to publish other proposed changes that do
+ - 'seen' branch is used to publish other proposed changes that do
not yet pass the criteria set for 'next'.
- The tips of 'master' and 'maint' branches will not be rewound to
@@ -76,7 +76,7 @@ this mailing list after each feature release is made.
of the cycle.
- Usually 'master' contains all of 'maint' and 'next' contains all
- of 'master'. 'pu' contains all the topics merged to 'next', but
+ of 'master'. 'seen' contains all the topics merged to 'next', but
is rebuilt directly on 'master'.
- The tip of 'master' is meant to be more stable than any
@@ -229,12 +229,12 @@ by doing the following:
series?)
- Prepare 'jch' branch, which is used to represent somewhere
- between 'master' and 'pu' and often is slightly ahead of 'next'.
+ between 'master' and 'seen' and often is slightly ahead of 'next'.
- $ Meta/Reintegrate master..pu >Meta/redo-jch.sh
+ $ Meta/Reintegrate master..seen >Meta/redo-jch.sh
The result is a script that lists topics to be merged in order to
- rebuild 'pu' as the input to Meta/Reintegrate script. Remove
+ rebuild 'seen' as the input to Meta/Reintegrate script. Remove
later topics that should not be in 'jch' yet. Add a line that
consists of '### match next' before the name of the first topic
in the output that should be in 'jch' but not in 'next' yet.
@@ -291,29 +291,29 @@ by doing the following:
merged to 'master'. This may lose '### match next' marker;
add it again to the appropriate place when it happens.
- - Rebuild 'pu'.
+ - Rebuild 'seen'.
- $ Meta/Reintegrate master..pu >Meta/redo-pu.sh
+ $ Meta/Reintegrate master..seen >Meta/redo-seen.sh
- Edit the result by adding new topics that are not still in 'pu'
+ Edit the result by adding new topics that are not still in 'seen'
in the script. Then
- $ git checkout -B pu jch
- $ sh Meta/redo-pu.sh
+ $ git checkout -B seen jch
+ $ sh Meta/redo-seen.sh
- When all is well, clean up the redo-pu.sh script with
+ When all is well, clean up the redo-seen.sh script with
- $ sh Meta/redo-pu.sh -u
+ $ sh Meta/redo-seen.sh -u
Double check by running
- $ git branch --no-merged pu
+ $ git branch --no-merged seen
to see there is no unexpected leftover topics.
At this point, build-test the result for semantic conflicts, and
if there are, prepare an appropriate merge-fix first (see
- appendix), and rebuild the 'pu' branch from scratch, starting at
+ appendix), and rebuild the 'seen' branch from scratch, starting at
the tip of 'jch'.
- Update "What's cooking" message to review the updates to
@@ -323,14 +323,14 @@ by doing the following:
$ Meta/cook
- This script inspects the history between master..pu, finds tips
+ This script inspects the history between master..seen, finds tips
of topic branches, compares what it found with the current
contents in Meta/whats-cooking.txt, and updates that file.
- Topics not listed in the file but are found in master..pu are
+ Topics not listed in the file but are found in master..seen are
added to the "New topics" section, topics listed in the file that
- are no longer found in master..pu are moved to the "Graduated to
+ are no longer found in master..seen are moved to the "Graduated to
master" section, and topics whose commits changed their states
- (e.g. used to be only in 'pu', now merged to 'next') are updated
+ (e.g. used to be only in 'seen', now merged to 'next') are updated
with change markers "<<" and ">>".
Look for lines enclosed in "<<" and ">>"; they hold contents from
@@ -360,7 +360,7 @@ Observations
Some observations to be made.
* Each topic is tested individually, and also together with other
- topics cooking first in 'pu', then in 'jch' and then in 'next'.
+ topics cooking first in 'seen', then in 'jch' and then in 'next'.
Until it matures, no part of it is merged to 'master'.
* A topic already in 'next' can get fixes while still in
@@ -411,7 +411,7 @@ new use of the variable under its old name. When these two topics
are merged together, the reference to the variable newly added by
the latter topic will still use the old name in the result.
-The Meta/Reintegrate script that is used by redo-jch and redo-pu
+The Meta/Reintegrate script that is used by redo-jch and redo-seen
scripts implements a crude but usable way to work this issue around.
When the script merges branch $X, it checks if "refs/merge-fix/$X"
exists, and if so, the effect of it is squashed into the result of
@@ -431,14 +431,14 @@ commit that can be squashed into a result of mechanical merge to
correct semantic conflicts.
After finding that the result of merging branch "ai/topic" to an
-integration branch had such a semantic conflict, say pu~4, check the
+integration branch had such a semantic conflict, say seen~4, check the
problematic merge out on a detached HEAD, edit the working tree to
fix the semantic conflict, and make a separate commit to record the
fix-up:
- $ git checkout pu~4
+ $ git checkout seen~4
$ git show -s --pretty=%s ;# double check
- Merge branch 'ai/topic' to pu
+ Merge branch 'ai/topic' to seen
$ edit
$ git commit -m 'merge-fix/ai/topic' -a
@@ -450,9 +450,9 @@ result:
Then double check the result by asking Meta/Reintegrate to redo the
merge:
- $ git checkout pu~5 ;# the parent of the problem merge
+ $ git checkout seen~5 ;# the parent of the problem merge
$ echo ai/topic | Meta/Reintegrate
- $ git diff pu~4
+ $ git diff seen~4
This time, because you prepared refs/merge-fix/ai/topic, the
resulting merge should have been tweaked to include the fix for the
@@ -464,7 +464,7 @@ branch needs this merge-fix is because another branch merged earlier
to the integration branch changed the underlying assumption ai/topic
branch made (e.g. ai/topic branch added a site to refer to a
variable, while the other branch renamed that variable and adjusted
-existing use sites), and if you changed redo-jch (or redo-pu) script
+existing use sites), and if you changed redo-jch (or redo-seen) script
to merge ai/topic branch before the other branch, then the above
merge-fix should not be applied while merging ai/topic, but should
instead be applied while merging the other branch. You would need
--
2.27.0.307.g7979e895e7
^ permalink raw reply related [relevance 8%]
* Re: Collaborative conflict resolution feature request
@ 2020-06-17 18:32 2% ` Curtin, Eric
0 siblings, 0 replies; 200+ results
From: Curtin, Eric @ 2020-06-17 18:32 UTC (permalink / raw)
To: Stefan Moch, Philip Oakley
Cc: Sergey Organov, Christian Couder, git@vger.kernel.org,
Geary, Niall, rowlands, scott, Michael Haggerty
Hi Guys,
Yes I think you all understand the conundrum well. Conflict resolution
by definition is a collaborative effort, but git doesn't support it as a,
collaborative effort, only one user can resolve it in git. It will be hard to
change my whole orgs thinking around avoiding conflicts or making
them easier conflicts to solve. There will always be some conflicts.
> * developers do test merges on temporary branches between their
> feature branch and the main development – or other feature
> branches if necessary (maybe create test merges on a regular
> basis to minimize the new conflicts)
> * these temporary branches get pushed, but not merged to other
> branches
> * the branch manager fetches these branches and uses
> `rerere-train.sh` to fill the local rerere database with
> conflict resolutions from the test merges
> * the temporary branches get deleted
> * the recorded resolutions get reused when needed (keep in mind
> rerere's gc config, see gc.rerereResolved and gc.rerereUnresolved)
I certainly want to play around with rere and see if it helps things. I
suspect if I shared a technique like this with the 100 or so developers
on the project this will be deemed too complex though.
A per file solution isn't great either as some files can be large.
Per-conflict (between <<<< >>>> in a plain old text editor) is
reasonable.
What would be most ideal is a:
git merge
fix some conflicts, not others
git push
so someone else can work on it kind of solution....
We don't do plaintext email patches, we do typically merge
things via git cli/protocol or via GitHub Pull Request.
Regards,
Eric Curtin
Software Engineer
Ovens Campus,
Cork,
Ireland
Dell EMC
^ permalink raw reply [relevance 2%]
* Re: Collaborative conflict resolution feature request
@ 2020-06-13 16:44 2% ` Junio C Hamano
1 sibling, 0 replies; 200+ results
From: Junio C Hamano @ 2020-06-13 16:44 UTC (permalink / raw)
To: Philip Oakley
Cc: Curtin, Eric, Christian Couder, git@vger.kernel.org, Geary, Niall,
rowlands, scott, Michael Haggerty
Philip Oakley <philipoakley@iee.email> writes:
> Maybe have a parallel 'merge' branch that is used (say weekly) to do
> trial merges and will essentially record the conflict resolutions while
> they are fresh in folks memories. That branch is distinct from, either
> of the two main branches, but will act as a filter and a hand rail to
> highlight future difficulties."
An aside that probably would not directly help Eric, but I know the
above workflow helps reasonably well. The 'pu' branch is rebuilt
not on top of 'next', but is rebuilt with all topics (including
those already in 'next') in flight directly on top of 'master',
which serves as a way to anticipate conflicts that will require
resolution in the future before the topics can enter 'next' branch.
And these resolutions are ...
> Also look at 'rerere'.
... remembered in the rerere database (and even trickier ones that
rerere cannot handle are recorded in the merge-fix commits, but that
is a separate story). When topics are ready to be merged to 'next'
and to 'master', the correct resolutions are likely to be known and
the result tested in 'pu' and 'next', respectively, for some time
already.
^ permalink raw reply [relevance 2%]
* [PATCH v1 0/2] rebase --merge: fix fast forwarding when `rebase.abbreviateCommands' is set
@ 2020-03-30 12:42 2% ` Alban Gruin
0 siblings, 0 replies; 200+ results
From: Alban Gruin @ 2020-03-30 12:42 UTC (permalink / raw)
To: git
Cc: Johannes Schindelin, Elijah Newren, Phillip Wood, Junio C Hamano,
jan.steffens, Alban Gruin
Jan Alexander Steffens reported that when `rebase.abbreviateCommands' is
set, the merge backend fails to fast forward. This is because the
backend generates a todo list with only a `noop', and since this command
has no abbreviated form, it is replaced by a comment mark. The
sequencer then interprets it as if there is nothing to do, and fails.
This patch series fixes this issue by teaching the sequencer not to
abbreviate a command if it does not have a short form, and adds a bunch
of regression tests.
This series is based on 9fadedd637 ("Merge branch
'ds/default-pack-use-sparse-to-true'", 2020-03-29).
The tip of this series is tagged as "rebase-dont-abbreviate-v1" at
https://github.com/agrn/git.
Alban Gruin (2):
sequencer: don't abbreviate a command if it doesn't have a short form
t3432: test `--merge' with `rebase.abbreviateCommands = true', too
sequencer.c | 9 ++++++---
t/t3432-rebase-fast-forward.sh | 24 +++++++++++++++++++-----
2 files changed, 25 insertions(+), 8 deletions(-)
--
2.25.0
^ permalink raw reply [relevance 2%]
* Re: [PATCH] submodule add: show 'add --dry-run' stderr when aborting
@ 2020-01-16 20:23 2% ` Junio C Hamano
0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2020-01-16 20:23 UTC (permalink / raw)
To: Johannes Schindelin; +Cc: Kyle Meyer, git, Yaroslav O Halchenko
Johannes Schindelin <Johannes.Schindelin@gmx.de> writes:
> I think this got mis-merged when merging down `km/submodule-add-errmsg`:
> it needs to be prefixed with `hint:` because of `hw/advice-add-nothing`,
> i.e.
>
> -- snipsnap --
> diff --git a/t/t7400-submodule-basic.sh b/t/t7400-submodule-basic.sh
> index 42a00f95b9d..a6973a3003c 100755
> --- a/t/t7400-submodule-basic.sh
> +++ b/t/t7400-submodule-basic.sh
> @@ -158,7 +158,7 @@ test_expect_success 'submodule add to .gitignored path fails' '
> cat <<-\EOF >expect &&
> The following paths are ignored by one of your .gitignore files:
> submod
> - Use -f if you really want to add them.
> + hint: Use -f if you really want to add them.
> EOF
> # Does not use test_commit due to the ignore
> echo "*" > .gitignore &&
Thanks, will prepare merge-fix material for this.
^ permalink raw reply [relevance 2%]
* Re: [PATCH 04/11] hashmap_entry: detect improper initialization
2019-08-27 22:16 1% ` Junio C Hamano
@ 2019-08-28 15:04 0% ` Johannes Schindelin
0 siblings, 0 replies; 200+ results
From: Johannes Schindelin @ 2019-08-28 15:04 UTC (permalink / raw)
To: Junio C Hamano; +Cc: Eric Wong, git
Hi Junio,
On Tue, 27 Aug 2019, Junio C Hamano wrote:
> My plan is to have ew/hashmap topic for a few days while ejecting
> the js/add-i topic which semantically conflicts with the changed way
> hashmaps ought to be used temporarily, and when I have enough time
> and concentration, try to see if I can come up with a good semantic
> conflict resolution that I can keep reusing (aka refs/merge-fix/).
> If it happens, we'll see both topics, and if it doesn't, I'll then
> drop ew/hashmap and queue js/add-i and rinse and repeat from there
> ;-)
FWIW I crafted my latest iteration such that you would only need to do
the `hash` => `_hash` rename in one line to merge `js/builtin-add-i`.
Ciao,
Dscho
^ permalink raw reply [relevance 0%]
* Re: [PATCH 04/11] hashmap_entry: detect improper initialization
@ 2019-08-27 22:16 1% ` Junio C Hamano
2019-08-28 15:04 0% ` Johannes Schindelin
0 siblings, 1 reply; 200+ results
From: Junio C Hamano @ 2019-08-27 22:16 UTC (permalink / raw)
To: Eric Wong; +Cc: Johannes Schindelin, git
Eric Wong <e@80x24.org> writes:
> I renamed it to intentionally break my build.
This cuts both ways. If you work without any throw-away merges, it
is GOOD to make sure any new use other people added will be spotted
by the compiler by breaking the build. It will force you to resolve
all such breakages until you can move on to other topics, and it
will also force you to commit to your topic that deliberately breaks
the build by renaming.
If you want to avoid committing to the current iteration of topic,
however, then that would mean you'd need a reliable way to rebuild
evil merges (aka resolution of semantic conflicts) so that you can
keep parts of more recent history more flexible (similar to how 'pu'
is managed).
My plan is to have ew/hashmap topic for a few days while ejecting
the js/add-i topic which semantically conflicts with the changed way
hashmaps ought to be used temporarily, and when I have enough time
and concentration, try to see if I can come up with a good semantic
conflict resolution that I can keep reusing (aka refs/merge-fix/).
If it happens, we'll see both topics, and if it doesn't, I'll then
drop ew/hashmap and queue js/add-i and rinse and repeat from there
;-)
^ permalink raw reply [relevance 1%]
* [PATCH v4 08/24] Ensure index matches head before invoking merge machinery, round N
@ 2019-08-17 18:41 2% ` Elijah Newren
0 siblings, 0 replies; 200+ results
From: Elijah Newren @ 2019-08-17 18:41 UTC (permalink / raw)
To: git
Cc: Junio C Hamano, Johannes Schindelin, Derrick Stolee,
SZEDER Gábor, Elijah Newren
This is the bug that just won't die; there always seems to be another
form of it somewhere. See the commit message of 55f39cf7551b ("merge:
fix misleading pre-merge check documentation", 2018-06-30) for a more
detailed explanation), but in short:
<quick summary>
builtin/merge.c contains this important requirement for merge
strategies:
...the index must be in sync with the head commit. The strategies are
responsible to ensure this.
This condition is important to enforce because there are two likely
failure cases when the index isn't in sync with the head commit:
* we silently throw away changes the user had staged before the merge
* we accidentally (and silently) include changes in the merge that
were not part of either of the branches/trees being merged
Discarding users' work and mis-merging are both bad outcomes, especially
when done silently, so naturally this rule was stated sternly -- but,
unfortunately totally ignored in practice unless and until actual bugs
were found. But, fear not: the bugs from this were fixed in commit
ee6566e8d70d ("[PATCH] Rewrite read-tree", 2005-09-05)
through a rewrite of read-tree (again, commit 55f39cf7551b has a more
detailed explanation of how this affected merge). And it was fixed
again in commit
160252f81626 ("git-merge-ours: make sure our index matches HEAD", 2005-11-03)
...and it was fixed again in commit
3ec62ad9ffba ("merge-octopus: abort if index does not match HEAD", 2016-04-09)
...and again in commit
65170c07d466 ("merge-recursive: avoid incorporating uncommitted changes in a merge", 2017-12-21)
...and again in commit
eddd1a411d93 ("merge-recursive: enforce rule that index matches head before merging", 2018-06-30)
...with multiple testcases added to the testsuite that could be
enumerated in even more commits.
Then, finally, in a patch in the same series as the last fix above, the
documentation about this requirement was fixed in commit 55f39cf7551b
("merge: fix misleading pre-merge check documentation", 2018-06-30), and
we all lived happily ever after...
</quick summary>
Unfortunately, "ever after" apparently denotes a limited time and it
expired today. The merge-recursive rule to enforce that index matches
head was at the beginning of merge_trees() and would only trigger when
opt->call_depth was 0. Since merge_recursive() doesn't call
merge_trees() until after returning from recursing, this meant that the
check wasn't triggered by merge_recursive() until it had first finished
all the intermediate merges to create virtual merge bases. That is a
potentially HUGE amount of computation (and writing of intermediate
merge results into the .git/objects directory) before it errors out and
says, in effect, "Sorry, I can't do any merging because you have some
local changes that would be overwritten."
Trying to enforce that all of merge_trees(), merge_recursive(), and
merge_recursive_generic() checked the index == head condition earlier
resulted in a bunch of broken tests. It turns out that
merge_recursive() has code to drop and reload the cache while recursing
to create intermediate virtual merge bases, but unfortunately that code
runs even when no recursion is necessary. This unconditional dropping
and reloading of the cache masked a few bugs:
* builtin/merge-recursive.c: didn't even bother loading the index.
* builtin/stash.c: feels like a fake 'builtin' because it repeatedly
invokes git subprocesses all over the place, mixed with other
operations. In particular, invoking "git reset" will reset the
index on disk, but the parent process that invoked it won't
automatically have its in-memory index updated.
* t3030-merge-recursive.h: this test has always been broken in that it
didn't make sure to make index match head before running. But, it
didn't care about the index or even the merge result, just the
verbose output while running. While commit eddd1a411d93
("merge-recursive: enforce rule that index matches head before
merging", 2018-06-30) should have uncovered this broken test, it
used a test_must_fail wrapper around the merge-recursive call
because it was known that the merge resulted in a rename/rename
conflict. Thus, that fix only made this test fail for a different
reason, and since the index == head check didn't happen until after
coming all the way back out of the recursion, the testcase had
enough information to pass the one check that it did perform.
So, load the index in builtin/merge-recursive.c, reload the in-memory
index in builtin/stash.c, and modify the t3030 testcase to correctly
setup the index and make sure that the test fails in the expected way
(meaning it reports a rename/rename conflict). This makes sure that
all callers actually make the index match head. The next commit will
then enforce the condition that index matches head earlier so this
problem doesn't return in the future.
Signed-off-by: Elijah Newren <newren@gmail.com>
---
builtin/merge-recursive.c | 4 ++++
builtin/stash.c | 2 ++
t/t3030-merge-recursive.sh | 9 ++++++++-
3 files changed, 14 insertions(+), 1 deletion(-)
diff --git a/builtin/merge-recursive.c b/builtin/merge-recursive.c
index 5b910e351e..a4bfd8fc51 100644
--- a/builtin/merge-recursive.c
+++ b/builtin/merge-recursive.c
@@ -1,3 +1,4 @@
+#include "cache.h"
#include "builtin.h"
#include "commit.h"
#include "tag.h"
@@ -63,6 +64,9 @@ int cmd_merge_recursive(int argc, const char **argv, const char *prefix)
if (argc - i != 3) /* "--" "<head>" "<remote>" */
die(_("not handling anything other than two heads merge."));
+ if (repo_read_index_unmerged(the_repository))
+ die_resolve_conflict("merge");
+
o.branch1 = argv[++i];
o.branch2 = argv[++i];
diff --git a/builtin/stash.c b/builtin/stash.c
index b5a301f24d..4aa47785f9 100644
--- a/builtin/stash.c
+++ b/builtin/stash.c
@@ -427,6 +427,8 @@ static int do_apply_stash(const char *prefix, struct stash_info *info,
return error(_("could not save index tree"));
reset_head();
+ discard_cache();
+ read_cache();
}
}
diff --git a/t/t3030-merge-recursive.sh b/t/t3030-merge-recursive.sh
index ff641b348a..a37bcc58a0 100755
--- a/t/t3030-merge-recursive.sh
+++ b/t/t3030-merge-recursive.sh
@@ -667,15 +667,22 @@ test_expect_success 'merging with triple rename across D/F conflict' '
test_expect_success 'merge-recursive remembers the names of all base trees' '
git reset --hard HEAD &&
+ # make the index match $c1 so that merge-recursive below does not
+ # fail early
+ git diff --binary HEAD $c1 -- | git apply --cached &&
+
# more trees than static slots used by oid_to_hex()
for commit in $c0 $c2 $c4 $c5 $c6 $c7
do
git rev-parse "$commit^{tree}"
done >trees &&
- # ignore the return code -- it only fails because the input is weird
+ # ignore the return code; it only fails because the input is weird...
test_must_fail git -c merge.verbosity=5 merge-recursive $(cat trees) -- $c1 $c3 >out &&
+ # ...but make sure it fails in the expected way
+ test_i18ngrep CONFLICT.*rename/rename out &&
+
# merge-recursive prints in reverse order, but we do not care
sort <trees >expect &&
sed -n "s/^virtual //p" out | sort >actual &&
--
2.23.0.rc2.28.g5f89f15d7b.dirty
^ permalink raw reply related [relevance 2%]
* [PATCH v3 08/24] Ensure index matches head before invoking merge machinery, round N
@ 2019-08-15 21:40 2% ` Elijah Newren
1 sibling, 0 replies; 200+ results
From: Elijah Newren @ 2019-08-15 21:40 UTC (permalink / raw)
To: git; +Cc: Junio C Hamano, Johannes Schindelin, Derrick Stolee,
Elijah Newren
This is the bug that just won't die; there always seems to be another
form of it somewhere. See the commit message of 55f39cf7551b ("merge:
fix misleading pre-merge check documentation", 2018-06-30) for a more
detailed explanation), but in short:
<quick summary>
builtin/merge.c contains this important requirement for merge
strategies:
...the index must be in sync with the head commit. The strategies are
responsible to ensure this.
This condition is important to enforce because there are two likely
failure cases when the index isn't in sync with the head commit:
* we silently throw away changes the user had staged before the merge
* we accidentally (and silently) include changes in the merge that
were not part of either of the branches/trees being merged
Discarding users' work and mis-merging are both bad outcomes, especially
when done silently, so naturally this rule was stated sternly -- but,
unfortunately totally ignored in practice unless and until actual bugs
were found. But, fear not: the bugs from this were fixed in commit
ee6566e8d70d ("[PATCH] Rewrite read-tree", 2005-09-05)
through a rewrite of read-tree (again, commit 55f39cf7551b has a more
detailed explanation of how this affected merge). And it was fixed
again in commit
160252f81626 ("git-merge-ours: make sure our index matches HEAD", 2005-11-03)
...and it was fixed again in commit
3ec62ad9ffba ("merge-octopus: abort if index does not match HEAD", 2016-04-09)
...and again in commit
65170c07d466 ("merge-recursive: avoid incorporating uncommitted changes in a merge", 2017-12-21)
...and again in commit
eddd1a411d93 ("merge-recursive: enforce rule that index matches head before merging", 2018-06-30)
...with multiple testcases added to the testsuite that could be
enumerated in even more commits.
Then, finally, in a patch in the same series as the last fix above, the
documentation about this requirement was fixed in commit 55f39cf7551b
("merge: fix misleading pre-merge check documentation", 2018-06-30), and
we all lived happily ever after...
</quick summary>
Unfortunately, "ever after" apparently denotes a limited time and it
expired today. The merge-recursive rule to enforce that index matches
head was at the beginning of merge_trees() and would only trigger when
opt->call_depth was 0. Since merge_recursive() doesn't call
merge_trees() until after returning from recursing, this meant that the
check wasn't triggered by merge_recursive() until it had first finished
all the intermediate merges to create virtual merge bases. That is a
potentially HUGE amount of computation (and writing of intermediate
merge results into the .git/objects directory) before it errors out and
says, in effect, "Sorry, I can't do any merging because you have some
local changes that would be overwritten."
Trying to enforce that all of merge_trees(), merge_recursive(), and
merge_recursive_generic() checked the index == head condition earlier
resulted in a bunch of broken tests. It turns out that
merge_recursive() has code to drop and reload the cache while recursing
to create intermediate virtual merge bases, but unfortunately that code
runs even when no recursion is necessary. This unconditional dropping
and reloading of the cache masked a few bugs:
* builtin/merge-recursive.c: didn't even bother loading the index.
* builtin/stash.c: feels like a fake 'builtin' because it repeatedly
invokes git subprocesses all over the place, mixed with other
operations. In particular, invoking "git reset" will reset the
index on disk, but the parent process that invoked it won't
automatically have its in-memory index updated.
* t3030-merge-recursive.h: this test has always been broken in that it
didn't make sure to make index match head before running. But, it
didn't care about the index or even the merge result, just the
verbose output while running. While commit eddd1a411d93
("merge-recursive: enforce rule that index matches head before
merging", 2018-06-30) should have uncovered this broken test, it
used a test_must_fail wrapper around the merge-recursive call
because it was known that the merge resulted in a rename/rename
conflict. Thus, that fix only made this test fail for a different
reason, and since the index == head check didn't happen until after
coming all the way back out of the recursion, the testcase had
enough information to pass the one check that it did perform.
So, load the index in builtin/merge-recursive.c, reload the in-memory
index in builtin/stash.c, and modify the t3030 testcase to correctly
setup the index and make sure that the test fails in the expected way
(meaning it reports a rename/rename conflict). This makes sure that
all callers actually make the index match head. The next commit will
then enforce the condition that index matches head earlier so this
problem doesn't return in the future.
Signed-off-by: Elijah Newren <newren@gmail.com>
---
builtin/merge-recursive.c | 4 ++++
builtin/stash.c | 2 ++
t/t3030-merge-recursive.sh | 9 ++++++++-
3 files changed, 14 insertions(+), 1 deletion(-)
diff --git a/builtin/merge-recursive.c b/builtin/merge-recursive.c
index 5b910e351e..a4bfd8fc51 100644
--- a/builtin/merge-recursive.c
+++ b/builtin/merge-recursive.c
@@ -1,3 +1,4 @@
+#include "cache.h"
#include "builtin.h"
#include "commit.h"
#include "tag.h"
@@ -63,6 +64,9 @@ int cmd_merge_recursive(int argc, const char **argv, const char *prefix)
if (argc - i != 3) /* "--" "<head>" "<remote>" */
die(_("not handling anything other than two heads merge."));
+ if (repo_read_index_unmerged(the_repository))
+ die_resolve_conflict("merge");
+
o.branch1 = argv[++i];
o.branch2 = argv[++i];
diff --git a/builtin/stash.c b/builtin/stash.c
index b5a301f24d..4aa47785f9 100644
--- a/builtin/stash.c
+++ b/builtin/stash.c
@@ -427,6 +427,8 @@ static int do_apply_stash(const char *prefix, struct stash_info *info,
return error(_("could not save index tree"));
reset_head();
+ discard_cache();
+ read_cache();
}
}
diff --git a/t/t3030-merge-recursive.sh b/t/t3030-merge-recursive.sh
index ff641b348a..a37bcc58a0 100755
--- a/t/t3030-merge-recursive.sh
+++ b/t/t3030-merge-recursive.sh
@@ -667,15 +667,22 @@ test_expect_success 'merging with triple rename across D/F conflict' '
test_expect_success 'merge-recursive remembers the names of all base trees' '
git reset --hard HEAD &&
+ # make the index match $c1 so that merge-recursive below does not
+ # fail early
+ git diff --binary HEAD $c1 -- | git apply --cached &&
+
# more trees than static slots used by oid_to_hex()
for commit in $c0 $c2 $c4 $c5 $c6 $c7
do
git rev-parse "$commit^{tree}"
done >trees &&
- # ignore the return code -- it only fails because the input is weird
+ # ignore the return code; it only fails because the input is weird...
test_must_fail git -c merge.verbosity=5 merge-recursive $(cat trees) -- $c1 $c3 >out &&
+ # ...but make sure it fails in the expected way
+ test_i18ngrep CONFLICT.*rename/rename out &&
+
# merge-recursive prints in reverse order, but we do not care
sort <trees >expect &&
sed -n "s/^virtual //p" out | sort >actual &&
--
2.23.0.rc2.32.g2123e9e4e4
^ permalink raw reply related [relevance 2%]
* [PATCH v2 03/20] Ensure index matches head before invoking merge machinery, round N
@ 2019-07-26 15:52 2% ` Elijah Newren
1 sibling, 0 replies; 200+ results
From: Elijah Newren @ 2019-07-26 15:52 UTC (permalink / raw)
To: git; +Cc: Junio C Hamano, Johannes Schindelin, Elijah Newren
This is the bug that just won't die; there always seems to be another
form of it somewhere. See the commit message of 55f39cf7551b ("merge:
fix misleading pre-merge check documentation", 2018-06-30) for a more
detailed explanation), but in short:
<quick summary>
builtin/merge.c contains this important requirement for merge
strategies:
...the index must be in sync with the head commit. The strategies are
responsible to ensure this.
This condition is important to enforce because there are two likely
failure cases when the index isn't in sync with the head commit:
* we silently throw away changes the user had staged before the merge
* we accidentally (and silently) include changes in the merge that
were not part of either of the branches/trees being merged
Discarding users' work and mis-merging are both bad outcomes, especially
when done silently, so naturally this rule was stated sternly -- but,
unfortunately totally ignored in practice unless and until actual bugs
were found. But, fear not: the bugs from this were fixed in commit
ee6566e8d70d ("[PATCH] Rewrite read-tree", 2005-09-05)
through a rewrite of read-tree (again, commit 55f39cf7551b has a more
detailed explanation of how this affected merge). And it was fixed
again in commit
160252f81626 ("git-merge-ours: make sure our index matches HEAD", 2005-11-03)
...and it was fixed again in commit
3ec62ad9ffba ("merge-octopus: abort if index does not match HEAD", 2016-04-09)
...and again in commit
65170c07d466 ("merge-recursive: avoid incorporating uncommitted changes in a merge", 2017-12-21)
...and again in commit
eddd1a411d93 ("merge-recursive: enforce rule that index matches head before merging", 2018-06-30)
...with multiple testcases added to the testsuite that could be
enumerated in even more commits.
Then, finally, in a patch in the same series as the last fix above, the
documentation about this requirement was fixed in commit 55f39cf7551b
("merge: fix misleading pre-merge check documentation", 2018-06-30), and
we all lived happily ever after...
</quick summary>
Unfortunately, "ever after" apparently denotes a limited time and it
expired today. The merge-recursive rule to enforce that index matches
head was at the beginning of merge_trees() and would only trigger when
opt->call_depth was 0. Since merge_recursive() doesn't call
merge_trees() until after returning from recursing, this meant that the
check wasn't triggered by merge_recursive() until it had first finished
all the intermediate merges to create virtual merge bases. That is a
potentially HUGE amount of computation (and writing of intermediate
merge results into the .git/objects directory) before it errors out and
says, in effect, "Sorry, I can't do any merging because you have some
local changes that would be overwritten."
Trying to enforce that all of merge_trees(), merge_recursive(), and
merge_recursive_generic() checked the index == head condition earlier
resulted in a bunch of broken tests. It turns out that
merge_recursive() has code to drop and reload the cache while recursing
to create intermediate virtual merge bases, but unfortunately that code
runs even when no recursion is necessary. This unconditional dropping
and reloading of the cache masked a few bugs:
* builtin/merge-recursive.c: didn't even bother loading the index.
* builtin/stash.c: feels like a fake 'builtin' because it repeatedly
invokes git subprocesses all over the place, mixed with other
operations. In particular, invoking "git reset" will reset the
index on disk, but the parent process that invoked it won't
automatically have its in-memory index updated.
* t3030-merge-recursive.h: this test has always been broken in that it
didn't make sure to make index match head before running. But, it
didn't care about the index or even the merge result, just the
verbose output while running. While commit eddd1a411d93
("merge-recursive: enforce rule that index matches head before
merging", 2018-06-30) should have uncovered this broken test, it
used a test_must_fail wrapper around the merge-recursive call
because it was known that the merge resulted in a rename/rename
conflict. Thus, that fix only made this test fail for a different
reason, and since the index == head check didn't happen until after
coming all the way back out of the recursion, the testcase had
enough information to pass the one check that it did perform.
So, load the index in builtin/merge-recursive.c, reload the in-memory
index in builtin/stash.c, and modify the t3030 testcase to correctly
setup the index and make sure that the test fails in the expected way
(meaning it reports a rename/rename conflict).
Signed-off-by: Elijah Newren <newren@gmail.com>
---
builtin/merge-recursive.c | 4 ++++
builtin/stash.c | 2 ++
t/t3030-merge-recursive.sh | 9 ++++++++-
3 files changed, 14 insertions(+), 1 deletion(-)
diff --git a/builtin/merge-recursive.c b/builtin/merge-recursive.c
index 5b910e351e..a4bfd8fc51 100644
--- a/builtin/merge-recursive.c
+++ b/builtin/merge-recursive.c
@@ -1,3 +1,4 @@
+#include "cache.h"
#include "builtin.h"
#include "commit.h"
#include "tag.h"
@@ -63,6 +64,9 @@ int cmd_merge_recursive(int argc, const char **argv, const char *prefix)
if (argc - i != 3) /* "--" "<head>" "<remote>" */
die(_("not handling anything other than two heads merge."));
+ if (repo_read_index_unmerged(the_repository))
+ die_resolve_conflict("merge");
+
o.branch1 = argv[++i];
o.branch2 = argv[++i];
diff --git a/builtin/stash.c b/builtin/stash.c
index b5a301f24d..4aa47785f9 100644
--- a/builtin/stash.c
+++ b/builtin/stash.c
@@ -427,6 +427,8 @@ static int do_apply_stash(const char *prefix, struct stash_info *info,
return error(_("could not save index tree"));
reset_head();
+ discard_cache();
+ read_cache();
}
}
diff --git a/t/t3030-merge-recursive.sh b/t/t3030-merge-recursive.sh
index ff641b348a..a37bcc58a0 100755
--- a/t/t3030-merge-recursive.sh
+++ b/t/t3030-merge-recursive.sh
@@ -667,15 +667,22 @@ test_expect_success 'merging with triple rename across D/F conflict' '
test_expect_success 'merge-recursive remembers the names of all base trees' '
git reset --hard HEAD &&
+ # make the index match $c1 so that merge-recursive below does not
+ # fail early
+ git diff --binary HEAD $c1 -- | git apply --cached &&
+
# more trees than static slots used by oid_to_hex()
for commit in $c0 $c2 $c4 $c5 $c6 $c7
do
git rev-parse "$commit^{tree}"
done >trees &&
- # ignore the return code -- it only fails because the input is weird
+ # ignore the return code; it only fails because the input is weird...
test_must_fail git -c merge.verbosity=5 merge-recursive $(cat trees) -- $c1 $c3 >out &&
+ # ...but make sure it fails in the expected way
+ test_i18ngrep CONFLICT.*rename/rename out &&
+
# merge-recursive prints in reverse order, but we do not care
sort <trees >expect &&
sed -n "s/^virtual //p" out | sort >actual &&
--
2.22.0.550.g71c37a0928.dirty
^ permalink raw reply related [relevance 2%]
* Re: [PATCH 03/19] Ensure index matches head before invoking merge machinery, round N
2019-07-25 19:41 0% ` Johannes Schindelin
@ 2019-07-25 19:58 0% ` Elijah Newren
0 siblings, 0 replies; 200+ results
From: Elijah Newren @ 2019-07-25 19:58 UTC (permalink / raw)
To: Johannes Schindelin; +Cc: Git Mailing List, Junio C Hamano
Hi Dscho,
On Thu, Jul 25, 2019 at 12:41 PM Johannes Schindelin
<Johannes.Schindelin@gmx.de> wrote:
>
> Hi Elijah,
>
> On Thu, 25 Jul 2019, Elijah Newren wrote:
>
<snip>
> > ...And it was fixed again in commit
> > 160252f81626 ("git-merge-ours: make sure our index matches HEAD", 2005-11-03)
> > ...and it was fixed again in commit
> > 3ec62ad9ffba ("merge-octopus: abort if index does not match HEAD", 2016-04-09)
> > ...and again in commit
> > 65170c07d466 ("merge-recursive: avoid incorporating uncommitted changes in a merge", 2017-12-21)
> > ...and again in commit
> > eddd1a411d93 ("merge-recursive: enforce rule that index matches head before merging", 2018-06-30)
> >
> > ...with multiple testcases added to the testsuite that could be
> > enumerated in even more commits.
> >
> > Then, finally, in a patch in the same series as the last fix above, the
> > documentation about this requirement was fixed in commit 55f39cf7551b
> > ("merge: fix misleading pre-merge check documentation", 2018-06-30), and
> > we all lived happily ever after...
> >
> > </quick summary>
>
> Whoa. What a story.
I know, right?
> > diff --git a/builtin/merge-recursive.c b/builtin/merge-recursive.c
> > index 5b910e351e..a4bfd8fc51 100644
> > --- a/builtin/merge-recursive.c
> > +++ b/builtin/merge-recursive.c
> > @@ -1,3 +1,4 @@
> > +#include "cache.h"
> > #include "builtin.h"
> > #include "commit.h"
> > #include "tag.h"
> > @@ -63,6 +64,9 @@ int cmd_merge_recursive(int argc, const char **argv, const char *prefix)
> > if (argc - i != 3) /* "--" "<head>" "<remote>" */
> > die(_("not handling anything other than two heads merge."));
> >
> > + if (repo_read_index_unmerged(the_repository))
> > + die_resolve_conflict("merge");
>
> For a moment I was unsure whether `_unmerged()` is the right thing to do
> here, as it specifically allows to read the index even when there are
> conflict stages. But I guess it does not matter too much here. I
> probably would have opted for `repo_read_index()` instead, though.
The names repo_read_index() and repo_read_index_unmerged() actually
seem slightly misleading to me; they seem to do the opposite of what
you'd think they do.
repo_read_index() reads in an index and allows unmerged entries and
returns istate->cache_nr.
repo_read_index_unmerged() calls repo_read_index(), then checks to see
if any of the entries are unmerged and returns whether or not any
unmerged entries were found.
So, the way to disallow conflict stages isn't to use
repo_read_index(), but to use repo_read_index_unmerged(), as I did.
Counter-intuitive, I know.
<snip>
> But of course, if there are uncommitted changes, this would write a tree
> different from HEAD, then reset the index to match HEAD, so indeed, this
> discard/read dance is necessary.
>
> So this hunk is good.
>
<snip>
>
> This is obviously a good change: it strengthens the test case by fixing
> a subtle bug.
>
> Thanks,
> Dscho
Thanks for taking a look!
^ permalink raw reply [relevance 0%]
* Re: [PATCH 03/19] Ensure index matches head before invoking merge machinery, round N
2019-07-25 17:45 2% ` [PATCH 03/19] Ensure index matches head before invoking merge machinery, round N Elijah Newren
@ 2019-07-25 19:41 0% ` Johannes Schindelin
2019-07-25 19:58 0% ` Elijah Newren
0 siblings, 1 reply; 200+ results
From: Johannes Schindelin @ 2019-07-25 19:41 UTC (permalink / raw)
To: Elijah Newren; +Cc: git, Junio C Hamano
Hi Elijah,
On Thu, 25 Jul 2019, Elijah Newren wrote:
> This is the bug that just won't die; there always seems to be another
> form of it somewhere. See the commit message of 55f39cf7551b ("merge:
> fix misleading pre-merge check documentation", 2018-06-30) for a more
> detailed explanation), but in short:
>
> <quick summary>
>
> builtin/merge.c contains this important requirement for merge
> strategies:
>
> ...the index must be in sync with the head commit. The strategies are
> responsible to ensure this.
>
> This condition is important to enforce because there are two likely
> failure cases when the index isn't in sync with the head commit:
>
> * we silently throw away changes the user had staged before the merge
>
> * we accidentally (and silently) include changes in the merge that
> were not part of either of the branches/trees being merged
>
> Discarding users' work and mis-merging are both bad outcomes, especially
> when done silently, so naturally this rule was stated sternly -- but,
> unfortunately totally ignored in practice unless and until actual bugs
> were found. But, fear not: the bugs from this were fixed in commit
> ee6566e8d70d ("[PATCH] Rewrite read-tree", 2005-09-05)
> through a rewrite of read-tree (again, commit 55f39cf7551b has a more
> detailed explanation of how this affected merge). And it was fixed
> again in commit
> 160252f81626 ("git-merge-ours: make sure our index matches HEAD", 2005-11-03)
> ...and it was fixed again in commit
> 3ec62ad9ffba ("merge-octopus: abort if index does not match HEAD", 2016-04-09)
> ...and again in commit
> 65170c07d466 ("merge-recursive: avoid incorporating uncommitted changes in a merge", 2017-12-21)
> ...and again in commit
> eddd1a411d93 ("merge-recursive: enforce rule that index matches head before merging", 2018-06-30)
>
> ...with multiple testcases added to the testsuite that could be
> enumerated in even more commits.
>
> Then, finally, in a patch in the same series as the last fix above, the
> documentation about this requirement was fixed in commit 55f39cf7551b
> ("merge: fix misleading pre-merge check documentation", 2018-06-30), and
> we all lived happily ever after...
>
> </quick summary>
Whoa. What a story.
> Unfortunately, "ever after" apparently denotes a limited time and it
> expired today. The merge-recursive rule to enforce that index matches
> head was at the beginning of merge_trees() and would only trigger when
> opt->call_depth was 0. Since merge_recursive() doesn't call
> merge_trees() until after returning from recursing, this meant that the
> check wasn't triggered by merge_recursive() until it had first finished
> all the intermediate merges to create virtual merge bases. That is a
> potentially HUGE amount of computation (and writing of intermediate
> merge results into the .git/objects directory) before it errors out and
> says, in effect, "Sorry, I can't do any merging because you have some
> local changes that would be overwritten."
>
> Trying to enforce that all of merge_trees(), merge_recursive(), and
> merge_recursive_generic() checked the index == head condition earlier
> resulted in a bunch of broken tests. It turns out that
> merge_recursive() has code to drop and reload the cache while recursing
> to create intermediate virtual merge bases, but unfortunately that code
> runs even when no recursion is necessary. This unconditional dropping
> and reloading of the cache masked a few bugs:
>
> * builtin/merge-recursive.c: didn't even bother loading the index.
>
> * builtin/stash.c: feels like a fake 'builtin' because it repeatedly
> invokes git subprocesses all over the place, mixed with other
> operations. In particular, invoking "git reset" will reset the
> index on disk, but the parent process that invoked it won't
> automatically have its in-memory index updated.
Yep, the idea was to move fast to a built-in, and then continue by
converting all those process spawns to proper calls to libgit "API"
functions.
Sadly, that did not happen yet.
And you're absolutely right that failing to re-read the index after
spawning a `reset --hard` causes problems. IIRC I fixed them all,
though, see
https://public-inbox.org/git/nycvar.QRO.7.76.6.1902191127420.41@tvgsbejvaqbjf.bet/
> So, load the index in builtin/merge-recursive.c, reload the in-memory
> index in builtin/stash.c, and modify the t3030 testcase to correctly
> setup the index and make sure that the test fails in the expected way
> (meaning it reports a rename/rename conflict).
Makes sense to me.
> diff --git a/builtin/merge-recursive.c b/builtin/merge-recursive.c
> index 5b910e351e..a4bfd8fc51 100644
> --- a/builtin/merge-recursive.c
> +++ b/builtin/merge-recursive.c
> @@ -1,3 +1,4 @@
> +#include "cache.h"
> #include "builtin.h"
> #include "commit.h"
> #include "tag.h"
> @@ -63,6 +64,9 @@ int cmd_merge_recursive(int argc, const char **argv, const char *prefix)
> if (argc - i != 3) /* "--" "<head>" "<remote>" */
> die(_("not handling anything other than two heads merge."));
>
> + if (repo_read_index_unmerged(the_repository))
> + die_resolve_conflict("merge");
For a moment I was unsure whether `_unmerged()` is the right thing to do
here, as it specifically allows to read the index even when there are
conflict stages. But I guess it does not matter too much here. I
probably would have opted for `repo_read_index()` instead, though.
> +
> o.branch1 = argv[++i];
> o.branch2 = argv[++i];
>
> diff --git a/builtin/stash.c b/builtin/stash.c
> index fde6397caa..bec011c1bb 100644
> --- a/builtin/stash.c
> +++ b/builtin/stash.c
> @@ -427,6 +427,8 @@ static int do_apply_stash(const char *prefix, struct stash_info *info,
> return error(_("could not save index tree"));
>
> reset_head();
> + discard_cache();
> + read_cache();
I was honestly puzzled why this is necessary, at first. The preceding
context expands to this:
discard_cache();
read_cache();
if (write_cache_as_tree(&index_tree, 0, NULL))
return error(_("could not save index tree"));
So basically, we already discard the index, read it again, then write it
as a tree, then reset and then we have to discard the index again?
But of course, if there are uncommitted changes, this would write a tree
different from HEAD, then reset the index to match HEAD, so indeed, this
discard/read dance is necessary.
So this hunk is good.
> }
> }
>
> diff --git a/t/t3030-merge-recursive.sh b/t/t3030-merge-recursive.sh
> index ff641b348a..a37bcc58a0 100755
> --- a/t/t3030-merge-recursive.sh
> +++ b/t/t3030-merge-recursive.sh
> @@ -667,15 +667,22 @@ test_expect_success 'merging with triple rename across D/F conflict' '
> test_expect_success 'merge-recursive remembers the names of all base trees' '
> git reset --hard HEAD &&
>
> + # make the index match $c1 so that merge-recursive below does not
> + # fail early
> + git diff --binary HEAD $c1 -- | git apply --cached &&
> +
> # more trees than static slots used by oid_to_hex()
> for commit in $c0 $c2 $c4 $c5 $c6 $c7
> do
> git rev-parse "$commit^{tree}"
> done >trees &&
>
> - # ignore the return code -- it only fails because the input is weird
> + # ignore the return code; it only fails because the input is weird...
> test_must_fail git -c merge.verbosity=5 merge-recursive $(cat trees) -- $c1 $c3 >out &&
>
> + # ...but make sure it fails in the expected way
> + test_i18ngrep CONFLICT.*rename/rename out &&
> +
This is obviously a good change: it strengthens the test case by fixing
a subtle bug.
Thanks,
Dscho
> # merge-recursive prints in reverse order, but we do not care
> sort <trees >expect &&
> sed -n "s/^virtual //p" out | sort >actual &&
> --
> 2.22.0.559.g28a8880890.dirty
>
>
^ permalink raw reply [relevance 0%]
* [PATCH 03/19] Ensure index matches head before invoking merge machinery, round N
@ 2019-07-25 17:45 2% ` Elijah Newren
2019-07-25 19:41 0% ` Johannes Schindelin
1 sibling, 1 reply; 200+ results
From: Elijah Newren @ 2019-07-25 17:45 UTC (permalink / raw)
To: git; +Cc: Junio C Hamano, Elijah Newren
This is the bug that just won't die; there always seems to be another
form of it somewhere. See the commit message of 55f39cf7551b ("merge:
fix misleading pre-merge check documentation", 2018-06-30) for a more
detailed explanation), but in short:
<quick summary>
builtin/merge.c contains this important requirement for merge
strategies:
...the index must be in sync with the head commit. The strategies are
responsible to ensure this.
This condition is important to enforce because there are two likely
failure cases when the index isn't in sync with the head commit:
* we silently throw away changes the user had staged before the merge
* we accidentally (and silently) include changes in the merge that
were not part of either of the branches/trees being merged
Discarding users' work and mis-merging are both bad outcomes, especially
when done silently, so naturally this rule was stated sternly -- but,
unfortunately totally ignored in practice unless and until actual bugs
were found. But, fear not: the bugs from this were fixed in commit
ee6566e8d70d ("[PATCH] Rewrite read-tree", 2005-09-05)
through a rewrite of read-tree (again, commit 55f39cf7551b has a more
detailed explanation of how this affected merge). And it was fixed
again in commit
160252f81626 ("git-merge-ours: make sure our index matches HEAD", 2005-11-03)
...and it was fixed again in commit
3ec62ad9ffba ("merge-octopus: abort if index does not match HEAD", 2016-04-09)
...and again in commit
65170c07d466 ("merge-recursive: avoid incorporating uncommitted changes in a merge", 2017-12-21)
...and again in commit
eddd1a411d93 ("merge-recursive: enforce rule that index matches head before merging", 2018-06-30)
...with multiple testcases added to the testsuite that could be
enumerated in even more commits.
Then, finally, in a patch in the same series as the last fix above, the
documentation about this requirement was fixed in commit 55f39cf7551b
("merge: fix misleading pre-merge check documentation", 2018-06-30), and
we all lived happily ever after...
</quick summary>
Unfortunately, "ever after" apparently denotes a limited time and it
expired today. The merge-recursive rule to enforce that index matches
head was at the beginning of merge_trees() and would only trigger when
opt->call_depth was 0. Since merge_recursive() doesn't call
merge_trees() until after returning from recursing, this meant that the
check wasn't triggered by merge_recursive() until it had first finished
all the intermediate merges to create virtual merge bases. That is a
potentially HUGE amount of computation (and writing of intermediate
merge results into the .git/objects directory) before it errors out and
says, in effect, "Sorry, I can't do any merging because you have some
local changes that would be overwritten."
Trying to enforce that all of merge_trees(), merge_recursive(), and
merge_recursive_generic() checked the index == head condition earlier
resulted in a bunch of broken tests. It turns out that
merge_recursive() has code to drop and reload the cache while recursing
to create intermediate virtual merge bases, but unfortunately that code
runs even when no recursion is necessary. This unconditional dropping
and reloading of the cache masked a few bugs:
* builtin/merge-recursive.c: didn't even bother loading the index.
* builtin/stash.c: feels like a fake 'builtin' because it repeatedly
invokes git subprocesses all over the place, mixed with other
operations. In particular, invoking "git reset" will reset the
index on disk, but the parent process that invoked it won't
automatically have its in-memory index updated.
* t3030-merge-recursive.h: this test has always been broken in that it
didn't make sure to make index match head before running. But, it
didn't care about the index or even the merge result, just the
verbose output while running. While commit eddd1a411d93
("merge-recursive: enforce rule that index matches head before
merging", 2018-06-30) should have uncovered this broken test, it
used a test_must_fail wrapper around the merge-recursive call
because it was known that the merge resulted in a rename/rename
conflict. Thus, that fix only made this test fail for a different
reason, and since the index == head check didn't happen until after
coming all the way back out of the recursion, the testcase had
enough information to pass the one check that it did perform.
So, load the index in builtin/merge-recursive.c, reload the in-memory
index in builtin/stash.c, and modify the t3030 testcase to correctly
setup the index and make sure that the test fails in the expected way
(meaning it reports a rename/rename conflict).
Signed-off-by: Elijah Newren <newren@gmail.com>
---
builtin/merge-recursive.c | 4 ++++
builtin/stash.c | 2 ++
t/t3030-merge-recursive.sh | 9 ++++++++-
3 files changed, 14 insertions(+), 1 deletion(-)
diff --git a/builtin/merge-recursive.c b/builtin/merge-recursive.c
index 5b910e351e..a4bfd8fc51 100644
--- a/builtin/merge-recursive.c
+++ b/builtin/merge-recursive.c
@@ -1,3 +1,4 @@
+#include "cache.h"
#include "builtin.h"
#include "commit.h"
#include "tag.h"
@@ -63,6 +64,9 @@ int cmd_merge_recursive(int argc, const char **argv, const char *prefix)
if (argc - i != 3) /* "--" "<head>" "<remote>" */
die(_("not handling anything other than two heads merge."));
+ if (repo_read_index_unmerged(the_repository))
+ die_resolve_conflict("merge");
+
o.branch1 = argv[++i];
o.branch2 = argv[++i];
diff --git a/builtin/stash.c b/builtin/stash.c
index fde6397caa..bec011c1bb 100644
--- a/builtin/stash.c
+++ b/builtin/stash.c
@@ -427,6 +427,8 @@ static int do_apply_stash(const char *prefix, struct stash_info *info,
return error(_("could not save index tree"));
reset_head();
+ discard_cache();
+ read_cache();
}
}
diff --git a/t/t3030-merge-recursive.sh b/t/t3030-merge-recursive.sh
index ff641b348a..a37bcc58a0 100755
--- a/t/t3030-merge-recursive.sh
+++ b/t/t3030-merge-recursive.sh
@@ -667,15 +667,22 @@ test_expect_success 'merging with triple rename across D/F conflict' '
test_expect_success 'merge-recursive remembers the names of all base trees' '
git reset --hard HEAD &&
+ # make the index match $c1 so that merge-recursive below does not
+ # fail early
+ git diff --binary HEAD $c1 -- | git apply --cached &&
+
# more trees than static slots used by oid_to_hex()
for commit in $c0 $c2 $c4 $c5 $c6 $c7
do
git rev-parse "$commit^{tree}"
done >trees &&
- # ignore the return code -- it only fails because the input is weird
+ # ignore the return code; it only fails because the input is weird...
test_must_fail git -c merge.verbosity=5 merge-recursive $(cat trees) -- $c1 $c3 >out &&
+ # ...but make sure it fails in the expected way
+ test_i18ngrep CONFLICT.*rename/rename out &&
+
# merge-recursive prints in reverse order, but we do not care
sort <trees >expect &&
sed -n "s/^virtual //p" out | sort >actual &&
--
2.22.0.559.g28a8880890.dirty
^ permalink raw reply related [relevance 2%]
* Re: [PATCH v6 07/27] checkout: inform the user when removing branch state
2019-07-02 17:51 2% ` Junio C Hamano
@ 2019-07-04 23:57 0% ` Duy Nguyen
0 siblings, 0 replies; 200+ results
From: Duy Nguyen @ 2019-07-04 23:57 UTC (permalink / raw)
To: Junio C Hamano
Cc: SZEDER Gábor, Eckhard Maaß, Git Mailing List,
Jacob Keller, Martin Ågren, Elijah Newren, Phillip Wood,
Andrei Rybak, Eric Sunshine
On Wed, Jul 3, 2019 at 12:51 AM Junio C Hamano <gitster@pobox.com> wrote:
>
> Duy Nguyen <pclouds@gmail.com> writes:
>
> > I agree, this is not "canceling". I think this series causes conflicts
> > with pw/clean-sequencer-state-upon-final-commit and the warning is
> > accidentally enabled (partly my fault since I named the argument
> > "verbose").
> >
> > Junio, in this conflict resolution (merging nd/switch-and-restore to
> > next), we should pass '0' instead of 'verbose' to
> > sequencer_post_commit_cleanup().
>
> Thanks for an update to the merge-fix. What should the name of the
> parameter to the sequencer_post_commit_cleanup() funcion be then,
> though? Perhaps we'd want an update after the topic graduates to
> the 'master' branch.
Definitely. I was thinking something with "warn" and "cancel", which
is more the the point. Probably warn_cancel_in_progress, or something.
--
Duy
^ permalink raw reply [relevance 0%]
* Re: [PATCH v6 07/27] checkout: inform the user when removing branch state
@ 2019-07-02 17:51 2% ` Junio C Hamano
2019-07-04 23:57 0% ` Duy Nguyen
0 siblings, 1 reply; 200+ results
From: Junio C Hamano @ 2019-07-02 17:51 UTC (permalink / raw)
To: Duy Nguyen
Cc: SZEDER Gábor, eckhard.s.maass, git, jacob.keller,
martin.agren, newren, phillip.wood123, rybak.a.v, sunshine
Duy Nguyen <pclouds@gmail.com> writes:
> I agree, this is not "canceling". I think this series causes conflicts
> with pw/clean-sequencer-state-upon-final-commit and the warning is
> accidentally enabled (partly my fault since I named the argument
> "verbose").
>
> Junio, in this conflict resolution (merging nd/switch-and-restore to
> next), we should pass '0' instead of 'verbose' to
> sequencer_post_commit_cleanup().
Thanks for an update to the merge-fix. What should the name of the
parameter to the sequencer_post_commit_cleanup() funcion be then,
though? Perhaps we'd want an update after the topic graduates to
the 'master' branch.
>
> diff --cc builtin/commit.c
> index 1921401117,fa5982cc86..145d50caf0
> --- a/builtin/commit.c
> +++ b/builtin/commit.c
> @@@ -1658,7 -1666,8 +1658,7 @@@ int cmd_commit(int argc, const char **a
> die("%s", err.buf);
> }
>
> - sequencer_post_commit_cleanup(the_repository);
> - unlink(git_path_cherry_pick_head(the_repository));
> - unlink(git_path_revert_head(the_repository));
> ++ sequencer_post_commit_cleanup(the_repository, verbose);
> unlink(git_path_merge_head(the_repository));
> unlink(git_path_merge_msg(the_repository));
> unlink(git_path_merge_mode(the_repository));
> --
> Duy
^ permalink raw reply [relevance 2%]
* [PATCH 00/52] fix some -Wmissing-field-initializer warnings
@ 2019-05-24 20:28 3% Ramsay Jones
0 siblings, 0 replies; 200+ results
From: Ramsay Jones @ 2019-05-24 20:28 UTC (permalink / raw)
To: Junio C Hamano; +Cc: Jeff King, Nguyen Thai Ngoc Duy, GIT Mailing-list
[No, I won't be sending 52 patches to the list!]
This series, started last year, has been hanging around because the
time never seemed right to send it to the list. It may still not be
the right time ... :-D
I would like to be able to compile git using '-Wall -Wextra -Werror'
compiler options. In order to see how far away we are from that
possibility, you can build with DEVELOPER=1 along with the additional
settings: 'DEVOPTS=extra-all no-error pedantic'.
That leads to many warnings:
$ git describe
v2.22.0-rc1
$ make >out 2>&1
$ grep warning out | sed -e 's/.*\[-W/\[-W/' | sort | uniq -c
9 [-Wempty-body]
1694 [-Wmissing-field-initializers]
159 [-Wpedantic]
945 [-Wsign-compare]
2821 [-Wunused-parameter]
$
Note that at the beginning of this cycle, the numbers were quite a bit
smaller (and this series was only 37 patches, rather than 52):
$ git describe
v2.21.0
$ make >out 2>&1
$ grep warning out | sed -e 's/.*\[-W/\[-W/' | sort | uniq -c
9 [-Wempty-body]
759 [-Wmissing-field-initializers]
925 [-Wsign-compare]
2732 [-Wunused-parameter]
$
This series removes the, newly introduced, pedantic warnings and
eliminates all 1371 'missing-field-initializers' warnings that
relate to 'struct option':
$ cat out-warn-master.stats
9 [-Wempty-body]
323 [-Wmissing-field-initializers]
945 [-Wsign-compare]
2821 [-Wunused-parameter]
$
Thus, after about six months, I am further away from my target than
when I started! ;-)
This series does not fix any problems or add any new features, so it
is not important (hence the tendency to 'slip'). I don't want to
flood the mailing list with patches that nobody wants, so: is there
any interest in these kinds of patches? If not, I will stop now!
(I have a 2-3 year old branch that addressed the '-Wsign-compare'
warnings, but that is probably beyond salvaging by now :( ).
This series is available from: git://repo.or.cz/git/raj.git with the
branch name 'warn-master'. A trial merge to current 'next' and 'pu'
branches can be found at 'warn-next' and 'warn-pu' branches. (The
merge to 'next' went without problem, and 'pu' only required a fixup
to the builtin/commit patch).
[The 'warn-v2.21' branch shows the previous version of the series.]
What do you think?
Thanks!
ATB,
Ramsay Jones
Ramsay Jones (52):
parse-options: reformat the OPT_X() macros
parse-options: move some one-line OPT_X() macros
parse-options: rename callback parameter from 'f' to 'cb'
parse-options: add missing field initializers
list-objects-filter-options: add missing initializer
ref-filter.h: add missing field initializers
parse-options: add an OPT_LL_CALLBACK() macro
parse-options.h: add 'd' parameter to OPT_INTEGER_F()
parse-options.h: fix some -Wpedantic warnings
builtin/update-index: fix some -Wmissing-field-initializers warnings
builtin/log: fix some -Wmissing-field-initializers warnings
builtin/notes: fix some -Wmissing-field-initializers warnings
builtin/grep: fix some -Wmissing-field-initializers warnings
builtin/commit: fix some -Wmissing-field-initializers warnings
apply.c: fix some -Wmissing-field-initializers warnings
builtin/rebase: fix some -Wmissing-field-initializers warnings
builtin/config: add missing field initializers
test-parse-options: fix some -Wmissing-field-initializers warnings
builtin/read-tree: fix some -Wmissing-field-initializers warnings
builtin/merge: fix some -Wmissing-field-initializers warnings
builtin/fetch: fix some -Wmissing-field-initializers warnings
builtin/commit-tree: fix some -Wmissing-field-initializers warnings
builtin/tag: fix an -Wmissing-field-initializers warning
builtin/push: fix some -Wmissing-field-initializers warnings
builtin/pack-objects: fix some -Wmissing-field-initializers warnings
builtin/ls-files: fix some -Wmissing-field-initializers warnings
builtin/blame: fix some -Wmissing-field-initializers warnings
builtin/show-ref: fix some -Wmissing-field-initializers warnings
builtin/show-branch: fix an -Wmissing-field-initializers warning
builtin/send-pack: fix some -Wmissing-field-initializers warnings
builtin/pull: fix some -Wmissing-field-initializers warnings
builtin/fmt-merge-msg: fix some -Wmissing-field-initializers warnings
builtin/describe: fix some -Wmissing-field-initializers warnings
builtin/cat-file: fix some -Wmissing-field-initializers warnings
builtin/shortlog: fix an -Wmissing-field-initializers warning
builtin/reset: fix an -Wmissing-field-initializers warning
builtin/remote: fix an -Wmissing-field-initializers warning
builtin/ls-remote: fix an -Wmissing-field-initializers warning
builtin/interpret-trailers: fix an -Wmissing-field-initializers warning
builtin/clean: fix an -Wmissing-field-initializers warning
builtin/checkout-index: fix an -Wmissing-field-initializers warning
builtin/checkout: fix an -Wmissing-field-initializers warning
builtin/branch: fix an -Wmissing-field-initializers warning
builtin/add: fix an -Wmissing-field-initializers warning
builtin/write-tree: fix an -Wmissing-field-initializers warning
builtin/revert: fix an -Wmissing-field-initializers warning
builtin/name-rev: fix an -Wmissing-field-initializers warning
builtin/init-db: fix an -Wmissing-field-initializers warning
builtin/gc: fix an -Wmissing-field-initializers warning
builtin/clone: fix an -Wmissing-field-initializers warning
builtin/am: fix an -Wmissing-field-initializers warning
diff.c: fix an -Wmissing-field-initializers warning
apply.c | 28 ++---
builtin/add.c | 4 +-
builtin/am.c | 6 +-
builtin/blame.c | 6 +-
builtin/branch.c | 7 +-
builtin/cat-file.c | 8 +-
builtin/checkout-index.c | 4 +-
builtin/checkout.c | 7 +-
builtin/clean.c | 5 +-
builtin/clone.c | 2 +-
builtin/commit-tree.c | 24 ++--
builtin/commit.c | 21 ++--
builtin/config.c | 2 +-
builtin/describe.c | 8 +-
builtin/fetch.c | 17 +--
builtin/fmt-merge-msg.c | 10 +-
builtin/gc.c | 3 +-
builtin/grep.c | 24 ++--
builtin/init-db.c | 4 +-
builtin/interpret-trailers.c | 4 +-
builtin/log.c | 56 ++++-----
builtin/ls-files.c | 12 +-
builtin/ls-remote.c | 4 +-
builtin/merge.c | 17 +--
builtin/name-rev.c | 8 +-
builtin/notes.c | 32 ++---
builtin/pack-objects.c | 12 +-
builtin/pull.c | 16 +--
builtin/push.c | 22 ++--
builtin/read-tree.c | 19 +--
builtin/rebase.c | 69 ++++++-----
builtin/remote.c | 5 +-
builtin/reset.c | 5 +-
builtin/revert.c | 5 +-
builtin/send-pack.c | 11 +-
builtin/shortlog.c | 4 +-
builtin/show-branch.c | 10 +-
builtin/show-ref.c | 11 +-
builtin/tag.c | 19 ++-
builtin/update-index.c | 61 +++++-----
builtin/write-tree.c | 6 +-
diff.c | 4 +-
list-objects-filter-options.h | 2 +-
parse-options.h | 216 ++++++++++++++++++++++------------
ref-filter.h | 2 +-
t/helper/test-parse-options.c | 16 +--
46 files changed, 458 insertions(+), 380 deletions(-)
--
2.21.0
^ permalink raw reply [relevance 3%]
* Re: [PATCH 1/1] fixup! Merge branch 'js/vsts-ci' into pu
@ 2019-01-29 17:50 2% ` Junio C Hamano
0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2019-01-29 17:50 UTC (permalink / raw)
To: Johannes Schindelin via GitGitGadget; +Cc: git, Johannes Schindelin
"Johannes Schindelin via GitGitGadget" <gitgitgadget@gmail.com>
writes:
> From: Johannes Schindelin <johannes.schindelin@gmx.de>
>
> The js/vsts-ci and sg/travis-specific-cc branches do not interact so
> well... While Travis has the Homebrew package gcc@8 installed in their
> Xcode 10.1 images, Azure Pipelines' agents do not.
>
> Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
> ---
> ci/lib.sh | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
Thanks; will use as a merge-fix/ recipe (assuming that sg/travis
would graduate before vsts-ci).
> diff --git a/ci/lib.sh b/ci/lib.sh
> index 276b99693d..16f4ecbc67 100755
> --- a/ci/lib.sh
> +++ b/ci/lib.sh
> @@ -123,7 +123,7 @@ then
> echo "$SYSTEM_TASKDEFINITIONSURI$SYSTEM_TEAMPROJECT/_build/results?buildId=$1"
> }
>
> - BREW_INSTALL_PACKAGES=
> + BREW_INSTALL_PACKAGES=gcc@8
> export GIT_PROVE_OPTS="--timer --jobs 10 --state=failed,slow,save"
> export GIT_TEST_OPTS="--verbose-log -x --write-junit-xml"
> export MAKEFLAGS="--jobs=10"
^ permalink raw reply [relevance 2%]
* Git Test Coverage Report (Tuesday, Nov 13)
@ 2018-11-13 18:05 1% Derrick Stolee
0 siblings, 0 replies; 200+ results
From: Derrick Stolee @ 2018-11-13 18:05 UTC (permalink / raw)
To: Git List
Here is the test coverage report for today.
Thanks,
-Stolee
[1] https://dev.azure.com/git/git/_build/results?buildId=256&view=logs
---
pu: a849d4c48bb308cdf3f9d7dc84251d92b4d7ff03
jch: e3cb78b4131db2f98330ff110525db31c6abff16
next: 17fedb746fde9e40924a6ce11c0976a097eb126b
master: d166e6afe5f257217836ef24a73764eba390c58d
master@{1}: 8858448bb49332d353febc078ce4a3abcc962efe
Uncovered code in 'pu' not in 'jch'
--------------------------------------
builtin/blame.c
a849d4c48b builtin/blame.c 200)
repo_unuse_commit_buffer(the_repository, commit, message);
74e8221b52 builtin/blame.c 928) blame_date_width = sizeof("Thu Oct 19
16:00");
74e8221b52 builtin/blame.c 929) break;
builtin/describe.c
a849d4c48b builtin/describe.c 257) repo_parse_commit(the_repository, p);
builtin/pack-objects.c
a849d4c48b builtin/pack-objects.c 2832) if
(!repo_has_object_file(the_repository, &obj->oid) &&
is_promisor_object(&obj->oid))
builtin/remote.c
b7f4e371e7 builtin/remote.c 1551) die(_("--save-to-push cannot be used
with other options"));
b7f4e371e7 builtin/remote.c 1575) die(_("--save-to-push can only be used
when only one url is defined"));
date.c
74e8221b52 113) die("Timestamp too large for this system: %"PRItime, time);
74e8221b52 216) if (tm->tm_mon == human_tm->tm_mon) {
74e8221b52 217) if (tm->tm_mday > human_tm->tm_mday) {
74e8221b52 219) } else if (tm->tm_mday == human_tm->tm_mday) {
74e8221b52 220) hide.date = hide.wday = 1;
74e8221b52 221) } else if (tm->tm_mday + 5 > human_tm->tm_mday) {
74e8221b52 223) hide.date = 1;
74e8221b52 231) gettimeofday(&now, NULL);
74e8221b52 232) show_date_relative(time, tz, &now, buf);
74e8221b52 233) return;
74e8221b52 246) hide.seconds = 1;
74e8221b52 247) hide.tz |= !hide.date;
74e8221b52 248) hide.wday = hide.time = !hide.year;
74e8221b52 262) strbuf_rtrim(buf);
74e8221b52 287) gettimeofday(&now, NULL);
74e8221b52 290) human_tz = local_time_tzoffset(now.tv_sec, &human_tm);
74e8221b52 886) static int auto_date_style(void)
74e8221b52 888) return (isatty(1) || pager_in_use()) ? DATE_HUMAN :
DATE_NORMAL;
74e8221b52 909) return DATE_HUMAN;
74e8221b52 911) return auto_date_style();
diff.c
b613de67c4 316) ret |= COLOR_MOVED_WS_ERROR;
b613de67c4 348) unsigned cm = parse_color_moved_ws(value);
b613de67c4 349) if (cm & COLOR_MOVED_WS_ERROR)
fast-import.c
a849d4c48b 2935) buf = repo_read_object_file(the_repository, oid, &type,
&size);
a849d4c48b 3041) buf = repo_read_object_file(the_repository, oid, &unused,
fsck.c
a849d4c48b 858) repo_unuse_commit_buffer(the_repository, commit, buffer);
a849d4c48b 878) repo_read_object_file(the_repository,
a849d4c48b 879) &tag->object.oid, &type, &size);
http-push.c
a849d4c48b 1635) if (!repo_has_object_file(the_repository, &head_oid))
a849d4c48b 1642) if (!repo_has_object_file(the_repository,
&remote_ref->old_oid))
negotiator/default.c
a849d4c48b 71) if (repo_parse_commit(the_repository, commit))
remote.c
879b6a9e6f 1140) return error(_("dst ref %s receives from more than one
src."),
revision.c
a849d4c48b 726) if (repo_parse_commit(the_repository, p) < 0)
sequencer.c
a849d4c48b 1643) repo_unuse_commit_buffer(the_repository, head_commit,
a849d4c48b 3914) repo_unuse_commit_buffer(the_repository,
sha1-array.c
bba406749a 91) oidcpy(&oids[dst], &oids[src]);
submodule.c
b303ef65e7 524) the_repository->submodule_prefix :
e2419f7e30 1378) strbuf_release(&gitdir);
7454fe5cb6 1501) struct get_next_submodule_task *task = task_cb;
7454fe5cb6 1505) get_next_submodule_task_release(task);
7454fe5cb6 1532) return 0;
7454fe5cb6 1536) goto out;
7454fe5cb6 1551) return 0;
tree.c
a849d4c48b 108) if (repo_parse_commit(the_repository, commit))
wrapper.c
5efde212fc 70) die("Out of memory, malloc failed (tried to allocate %"
PRIuMAX " bytes)",
5efde212fc 73) error("Out of memory, malloc failed (tried to allocate
%" PRIuMAX " bytes)",
Commits introducing uncovered code:
Ævar Arnfjörð Bjarmason 879b6a9e6: i18n: remote.c: mark error(...)
messages for translation
Denton Liu b7f4e371e: remote: add --save-to-push option to git
remote set-url
Junio C Hamano a849d4c48: merge-fix/dl/remote-save-to-push
Linus Torvalds 74e8221b5: Add 'human' date format
Martin Koegler 5efde212f: zlib.c: use size_t for size
Stefan Beller 7454fe5cb: fetch: try fetching submodules if needed
objects were not fetched
Stefan Beller b303ef65e: submodule: use submodule repos for object
lookup
Stefan Beller b613de67c: diff: differentiate error handling in
parse_color_moved_ws
Stefan Beller bba406749: sha1-array: provide oid_array_filter
Stefan Beller e2419f7e3: submodule: migrate get_next_submodule to
use repository structs
Uncovered code in 'jch' not in 'next'
----------------------------------------
archive.c
c6e7965ddf 399) die(_("not a valid object name: %s"), name);
c6e7965ddf 412) die(_("not a tree object: %s"), oid_to_hex(&oid));
c6e7965ddf 422) die(_("current working directory is untracked"));
attr.c
ad8f8f4aed 369) fprintf_ln(stderr, _("%s not allowed: %s:%d"),
blame.c
fb998eae6c 1717) obj = deref_tag(revs->repo, obj, NULL, 0);
fb998eae6c 1724) head_commit = lookup_commit_reference_gently(revs->repo,
builtin/branch.c
0ecb1fc726 builtin/branch.c 456) die(_("could not resolve HEAD"));
0ecb1fc726 builtin/branch.c 462) die(_("HEAD (%s) points outside of
refs/heads/"), refname);
builtin/bundle.c
74ae4b638d builtin/bundle.c 64) return !!unbundle(the_repository,
&header, bundle_fd, 0) ||
builtin/fsck.c
674ba34038 builtin/fsck.c 87) ret = _("unknown");
674ba34038 builtin/fsck.c 167) objerror(parent, _("wrong object type in
link"));
674ba34038 builtin/fsck.c 278) printf_ln(_("unreachable %s %s"),
printable_type(obj),
674ba34038 builtin/fsck.c 306) error(_("could not create lost-found"));
674ba34038 builtin/fsck.c 313) die_errno(_("could not write '%s'"),
filename);
674ba34038 builtin/fsck.c 317) die_errno(_("could not finish '%s'"),
674ba34038 builtin/fsck.c 334) fprintf_ln(stderr, _("Checking %s"),
describe_object(obj));
674ba34038 builtin/fsck.c 352) fprintf_ln(stderr, _("Checking
connectivity (%d objects)"), max);
674ba34038 builtin/fsck.c 371) fprintf_ln(stderr, _("Checking %s %s"),
674ba34038 builtin/fsck.c 384) printf_ln(_("root %s"),
674ba34038 builtin/fsck.c 420) return error(_("%s: object corrupt or
missing"),
674ba34038 builtin/fsck.c 459) fprintf_ln(stderr, _("Checking reflog
%s->%s"),
674ba34038 builtin/fsck.c 583) error(_("%s: object could not be parsed:
%s"),
674ba34038 builtin/fsck.c 618) fprintf_ln(stderr, _("Checking object
directory"));
287d68a44b builtin/fsck.c 636) fprintf_ln(stderr, _("Checking %s link"),
head_ref_name);
287d68a44b builtin/fsck.c 641) return error(_("invalid %s"), head_ref_name);
674ba34038 builtin/fsck.c 670) fprintf_ln(stderr, _("Checking cache tree"));
674ba34038 builtin/fsck.c 686) err |= objerror(obj, _("non-tree in
cache-tree"));
builtin/merge.c
9440b831ad builtin/merge.c 131) return error(_("option `%s' requires a
value"), opt->long_name);
builtin/pack-objects.c
ca473cef91 builtin/pack-objects.c 2086) die(_("object %s inconsistent
object length (%"PRIuMAX" vs %"PRIuMAX")"),
ca473cef91 builtin/pack-objects.c 2087) oid_to_hex(&trg_entry->idx.oid),
(uintmax_t)sz,
ca473cef91 builtin/pack-objects.c 2113) die(_("object %s inconsistent
object length (%"PRIuMAX" vs %"PRIuMAX")"),
ca473cef91 builtin/pack-objects.c 2114) oid_to_hex(&src_entry->idx.oid),
(uintmax_t)sz,
builtin/rebase--interactive.c
005af339c9 builtin/rebase--interactive.c 262) ret =
rearrange_squash(the_repository);
005af339c9 builtin/rebase--interactive.c 265) ret =
sequencer_add_exec_commands(the_repository, cmd);
builtin/rebase.c
3249c1251e 544) ret = -1;
3249c1251e 545) goto leave_reset_head;
bac2a1e36f 549) ret = error(_("could not determine HEAD revision"));
bac2a1e36f 550) goto leave_reset_head;
3249c1251e 568) ret = error(_("could not read index"));
3249c1251e 569) goto leave_reset_head;
bac2a1e36f 573) ret = error(_("failed to find tree of %s"),
oid_to_hex(oid));
bac2a1e36f 574) goto leave_reset_head;
3249c1251e 578) ret = error(_("failed to find tree of %s"),
oid_to_hex(oid));
3249c1251e 579) goto leave_reset_head;
3249c1251e 592) goto leave_reset_head;
builtin/reflog.c
dd509db342 builtin/reflog.c 592) usage(_(reflog_expire_usage));
dd509db342 builtin/reflog.c 643) status |= error(_("%s points
nowhere!"), argv[i]);
dd509db342 builtin/reflog.c 689) usage(_(reflog_delete_usage));
dd509db342 builtin/reflog.c 695) return error(_("no reflog specified to
delete"));
dd509db342 builtin/reflog.c 704) status |= error(_("not a reflog: %s"),
argv[i]);
dd509db342 builtin/reflog.c 709) status |= error(_("no reflog for
'%s'"), argv[i]);
dd509db342 builtin/reflog.c 744) usage(_(reflog_exists_usage));
dd509db342 builtin/reflog.c 752) usage(_(reflog_exists_usage));
dd509db342 builtin/reflog.c 755) die(_("invalid ref format: %s"),
argv[start]);
builtin/repack.c
c83d950e59 200) die(_("could not start pack-objects to repack promisor
objects"));
287d68a44b 239) die(_("repack: Expecting full hex object ID lines only
from pack-objects."));
c83d950e59 250) die_errno(_("unable to create '%s'"), promisor_name);
287d68a44b 411) die(_("repack: Expecting full hex object ID lines only
from pack-objects."));
builtin/stash.c
3d5ec65ce8 builtin/stash--helper.c 126) error(_("'%s' is not a
stash-like commit"), revision);
3d5ec65ce8 builtin/stash--helper.c 127) free_stash_info(info);
3d5ec65ce8 builtin/stash--helper.c 128) exit(128);
3d5ec65ce8 builtin/stash--helper.c 161) free_stash_info(info);
3d5ec65ce8 builtin/stash--helper.c 162) fprintf_ln(stderr, _("No stash
entries found."));
3d5ec65ce8 builtin/stash--helper.c 163) return -1;
3d5ec65ce8 builtin/stash--helper.c 198) free_stash_info(info);
7005771171 builtin/stash--helper.c 225) return error(_("git stash clear
with parameters is "
3d5ec65ce8 builtin/stash--helper.c 241) return -1;
3d5ec65ce8 builtin/stash--helper.c 249) return -1;
3d5ec65ce8 builtin/stash--helper.c 262) return -1;
3d5ec65ce8 builtin/stash--helper.c 265) return error(_("unable to write
new index file"));
3d5ec65ce8 builtin/stash--helper.c 377) remove_path(stash_index_path.buf);
3d5ec65ce8 builtin/stash--helper.c 378) return -1;
3d5ec65ce8 builtin/stash--helper.c 405) return -1;
3d5ec65ce8 builtin/stash--helper.c 408) return error(_("cannot apply a
stash in the middle of a merge"));
3d5ec65ce8 builtin/stash--helper.c 418) strbuf_release(&out);
3d5ec65ce8 builtin/stash--helper.c 419) return error(_("Could not
generate diff %s^!."),
3d5ec65ce8 builtin/stash--helper.c 426) return error(_("Conflicts in
index."
3d5ec65ce8 builtin/stash--helper.c 432) return error(_("Could not save
index tree"));
3d5ec65ce8 builtin/stash--helper.c 439) return error(_("could not
restore untracked files from stash"));
3d5ec65ce8 builtin/stash--helper.c 470) return -1;
3d5ec65ce8 builtin/stash--helper.c 475) strbuf_release(&out);
3d5ec65ce8 builtin/stash--helper.c 480) strbuf_release(&out);
3d5ec65ce8 builtin/stash--helper.c 481) return -1;
7005771171 builtin/stash--helper.c 557) return error(_("%s: Could not
drop stash entry"),
5bf62a19c0 builtin/stash--helper.c 632) printf_ln(_("The stash entry is
kept in case "
104eb50d14 builtin/stash--helper.c 766) free_stash_info(&info);
193c3e3516 builtin/stash.c 767)
usage_with_options(git_stash_show_usage, options);
813904a0ce builtin/stash--helper.c 783) stash_msg = "Created via \"git
stash store\".";
813904a0ce builtin/stash--helper.c 789) if (!quiet) {
813904a0ce builtin/stash--helper.c 790) fprintf_ln(stderr, _("Cannot
update %s with %s"),
813904a0ce builtin/stash--helper.c 793) return -1;
813904a0ce builtin/stash--helper.c 817) if (!quiet)
813904a0ce builtin/stash--helper.c 818) fprintf_ln(stderr, _("\"git
stash store\" requires one "
813904a0ce builtin/stash--helper.c 820) return -1;
9f630e7480 builtin/stash--helper.c 902) return -1;
9f630e7480 builtin/stash--helper.c 962) ret = -1;
9f630e7480 builtin/stash--helper.c 963) goto done;
9f630e7480 builtin/stash--helper.c 968) ret = -1;
9f630e7480 builtin/stash--helper.c 969) goto done;
9f630e7480 builtin/stash--helper.c 974) ret = -1;
9f630e7480 builtin/stash--helper.c 975) goto done;
9f630e7480 builtin/stash--helper.c 1001) ret = -1;
9f630e7480 builtin/stash--helper.c 1002) goto done;
9f630e7480 builtin/stash--helper.c 1013) ret = -1;
9f630e7480 builtin/stash--helper.c 1014) goto done;
9f630e7480 builtin/stash--helper.c 1020) ret = -1;
9f630e7480 builtin/stash--helper.c 1021) goto done;
9f630e7480 builtin/stash--helper.c 1028) ret = -1;
9f630e7480 builtin/stash--helper.c 1029) goto done;
9f630e7480 builtin/stash--helper.c 1054) ret = -1;
9f630e7480 builtin/stash--helper.c 1055) goto done;
9f630e7480 builtin/stash--helper.c 1067) ret = -1;
9f630e7480 builtin/stash--helper.c 1068) goto done;
9f630e7480 builtin/stash--helper.c 1074) ret = -1;
9f630e7480 builtin/stash--helper.c 1075) goto done;
9f630e7480 builtin/stash--helper.c 1086) ret = -1;
9f630e7480 builtin/stash--helper.c 1087) goto done;
9f630e7480 builtin/stash--helper.c 1092) ret = -1;
9f630e7480 builtin/stash--helper.c 1093) goto done;
c2cc69f192 builtin/stash--helper.c 1128) fprintf_ln(stderr, _("You do
not have "
9f630e7480 builtin/stash--helper.c 1137) ret = 1;
9f630e7480 builtin/stash--helper.c 1138) goto done;
c2cc69f192 builtin/stash--helper.c 1154) if (!quiet)
c2cc69f192 builtin/stash--helper.c 1155) fprintf_ln(stderr, _("Cannot
save the current "
9f630e7480 builtin/stash--helper.c 1157) ret = -1;
9f630e7480 builtin/stash--helper.c 1158) goto done;
c2cc69f192 builtin/stash--helper.c 1163) if (!quiet)
c2cc69f192 builtin/stash--helper.c 1164) fprintf_ln(stderr, _("Cannot save "
9f630e7480 builtin/stash--helper.c 1166) ret = -1;
9f630e7480 builtin/stash--helper.c 1167) goto done;
c2cc69f192 builtin/stash--helper.c 1174) if (!quiet)
c2cc69f192 builtin/stash--helper.c 1175) fprintf_ln(stderr, _("Cannot
save the current "
9f630e7480 builtin/stash--helper.c 1177) goto done;
c2cc69f192 builtin/stash--helper.c 1183) if (!quiet)
c2cc69f192 builtin/stash--helper.c 1184) fprintf_ln(stderr, _("Cannot
save the current "
9f630e7480 builtin/stash--helper.c 1186) ret = -1;
9f630e7480 builtin/stash--helper.c 1187) goto done;
c2cc69f192 builtin/stash--helper.c 1213) if (!quiet)
c2cc69f192 builtin/stash--helper.c 1214) fprintf_ln(stderr, _("Cannot
record "
9f630e7480 builtin/stash--helper.c 1216) ret = -1;
9f630e7480 builtin/stash--helper.c 1217) goto done;
1a0f0409a7 builtin/stash--helper.c 1289) ret = -1;
1a0f0409a7 builtin/stash--helper.c 1290) goto done;
1a0f0409a7 builtin/stash--helper.c 1300) ret = -1;
c2cc69f192 builtin/stash--helper.c 1301) if (!quiet)
c2cc69f192 builtin/stash--helper.c 1302) fprintf_ln(stderr, _("Cannot
initialize stash"));
1a0f0409a7 builtin/stash--helper.c 1303) goto done;
1a0f0409a7 builtin/stash--helper.c 1313) ret = -1;
c2cc69f192 builtin/stash--helper.c 1314) if (!quiet)
c2cc69f192 builtin/stash--helper.c 1315) fprintf_ln(stderr, _("Cannot
save the current status"));
1a0f0409a7 builtin/stash--helper.c 1316) goto done;
1a0f0409a7 builtin/stash--helper.c 1333) ret = -1;
1a0f0409a7 builtin/stash--helper.c 1352) ret = -1;
1a0f0409a7 builtin/stash--helper.c 1353) goto done;
1a0f0409a7 builtin/stash--helper.c 1362) ret = -1;
1a0f0409a7 builtin/stash--helper.c 1363) goto done;
1a0f0409a7 builtin/stash--helper.c 1371) ret = -1;
1a0f0409a7 builtin/stash--helper.c 1380) ret = -1;
1a0f0409a7 builtin/stash--helper.c 1391) ret = -1;
1a0f0409a7 builtin/stash--helper.c 1392) goto done;
1a0f0409a7 builtin/stash--helper.c 1401) ret = -1;
1a0f0409a7 builtin/stash--helper.c 1402) goto done;
1a0f0409a7 builtin/stash--helper.c 1410) ret = -1;
1a0f0409a7 builtin/stash--helper.c 1436) ret = -1;
193c3e3516 builtin/stash.c 1568)
usage_msg_opt(xstrfmt(_("unknown subcommand: %s"), argv[0]),
193c3e3516 builtin/stash.c 1596) continue;
bundle.c
74ae4b638d 380) struct commit *one = lookup_commit_reference(revs->repo,
&oid);
delta-islands.c
385cb64ff3 216) parse_object(r, &obj->oid);
fast-import.c
ca473cef91 2958) strbuf_addf(&line, "%s %s %"PRIuMAX"\n", oid_to_hex(oid),
git.c
8aa8c14097 341) die_errno(_("while expanding alias '%s': '%s'"),
8aa8c14097 350) die(_("alias '%s' changes environment variables.\n"
8aa8c14097 358) die(_("empty alias for %s"), alias_command);
8aa8c14097 361) die(_("recursive alias: %s"), alias_command);
8aa8c14097 412) die(_("%s doesn't support --super-prefix"), p->cmd);
8aa8c14097 436) die_errno(_("write failure on standard output"));
8aa8c14097 438) die(_("unknown write failure on standard output"));
8aa8c14097 440) die_errno(_("close failed on standard output"));
8aa8c14097 658) die(_("%s doesn't support --super-prefix"), argv[0]);
8aa8c14097 770) die(_("cannot handle %s as a builtin"), cmd);
hex.c
b3a41547ce 93) char *sha1_to_hex_r(char *buffer, const unsigned char *sha1)
b3a41547ce 95) return hash_to_hex_algop_r(buffer, sha1,
&hash_algos[GIT_HASH_SHA1]);
b3a41547ce 116) char *hash_to_hex(const unsigned char *hash)
b3a41547ce 118) return hash_to_hex_algop(hash, the_hash_algo);
http-walker.c
b69fb867b4 http-walker.c 550) loose_object_path(the_repository, &buf,
req->sha1);
http.c
d73019feb4 289) return git_config_string(&curl_http_version, var, value);
d73019feb4 797) static int get_curl_http_version_opt(const char
*version_string, long *opt)
d73019feb4 808) for (i = 0; i < ARRAY_SIZE(choice); i++) {
d73019feb4 809) if (!strcmp(version_string, choice[i].name)) {
d73019feb4 810) *opt = choice[i].opt_token;
d73019feb4 811) return 0;
d73019feb4 815) warning("unknown value given to http.version: '%s'",
version_string);
d73019feb4 816) return -1; /* not found */
d73019feb4 841) if (!get_curl_http_version_opt(curl_http_version, &opt)) {
d73019feb4 843) curl_easy_setopt(result, CURLOPT_HTTP_VERSION, opt);
merge-recursive.c
37b65ce36b 1584) return -1;
37b65ce36b 1587) return -1;
37b65ce36b 1593) return -1;
37b65ce36b 1596) return -1;
37b65ce36b 1663) return -1;
37b65ce36b 1666) return -1;
37b65ce36b 1669) return -1;
7f8671656f 1702) return -1;
48c9cb9d6d 1758) return -1;
48c9cb9d6d 1806) return -1;
48c9cb9d6d 1812) return -1;
48c9cb9d6d 1815) return -1;
48c9cb9d6d 1825) return -1;
48c9cb9d6d 1831) return -1;
48c9cb9d6d 1834) return -1;
parse-options-cb.c
9440b831ad 21) return error(_("option `%s' expects a numerical value"),
9440b831ad 51) return error(_("option `%s' expects \"always\",
\"auto\", or \"never\""),
parse-options.c
9440b831ad 88) return error(_("%s takes no value"), optname(opt, flags));
9440b831ad 90) return error(_("%s isn't available"), optname(opt, flags));
9440b831ad 92) return error(_("%s takes no value"), optname(opt, flags));
9440b831ad 178) return error(_("%s expects a numerical value"),
9440b831ad 194) return error(_("%s expects a non-negative integer value"
8900342628 356) error(_("did you mean `--%s` (with two dashes ?)"), arg);
8900342628 651) error(_("unknown non-ascii option in string: `%s'"),
9440b831ad 785) strbuf_addf(&sb, "option `no-%s'", opt->long_name);
protocol.c
c95f252809 37) die(_("Unrecognized protocol version"));
c95f252809 39) die(_("Unrecognized protocol_version"));
read-cache.c
9d0a9e9089 675) die(_("will not add file alias '%s' ('%s' already
exists in index)"),
9d0a9e9089 676) ce->name, alias->name);
9d0a9e9089 691) die(_("cannot create an empty blob in the object
database"));
9d0a9e9089 712) return error(_("%s: can only add regular files,
symbolic links or git-directories"), path);
9d0a9e9089 786) return error(_("unable to add '%s' to index"), path);
9d0a9e9089 822) error(_("invalid path '%s'"), path);
9d0a9e9089 848) error(_("invalid path '%s'"), path);
9d0a9e9089 1686) return error(_("bad signature 0x%08x"),
hdr->hdr_signature);
9d0a9e9089 1689) return error(_("bad index version %d"), hdr_version);
9d0a9e9089 1728) return error(_("index uses %.4s extension, which we do
not understand"),
9d0a9e9089 1730) fprintf_ln(stderr, _("ignoring %.4s extension"), ext);
9d0a9e9089 1777) die(_("unknown index entry format 0x%08x"),
extended_flags);
9d0a9e9089 1848) die(_("unordered stage entries in index"));
9d0a9e9089 1851) die(_("multiple stage entries for merged file '%s'"),
9d0a9e9089 1854) die(_("unordered stage entries for '%s'"),
9d0a9e9089 2148) die_errno(_("%s: index file open failed"), path);
9d0a9e9089 2152) die_errno(_("%s: cannot stat the open index"), path);
9d0a9e9089 2156) die(_("%s: index file smaller than expected"), path);
9d0a9e9089 2160) die_errno(_("%s: unable to map index file"), path);
9d0a9e9089 2250) warning(_("could not freshen shared index '%s'"),
shared_index);
9d0a9e9089 2285) die(_("broken index, expect %s in %s, got %s"),
9d0a9e9089 3071) error(_("cannot fix permission bits on '%s'"),
get_tempfile_path(*temp));
9d0a9e9089 3217) return error(_("%s: cannot drop to stage #0"),
ref-filter.c
bbfc042ef9 238) oi_deref.info.sizep = &oi_deref.size;
bbfc042ef9 247) return strbuf_addf_ret(err, -1, _("unrecognized
%%(objectsize) argument: %s"), arg);
ab0e367154 255) return strbuf_addf_ret(err, -1, _("%%(deltabase) does
not take arguments"));
9440b831ad 2380) return error(_("option `%s' is incompatible with
--no-merged"),
remote.c
0b9c3afdbf 362) warning(_("config remote shorthand cannot begin with
'/': %s"),
0b9c3afdbf 417) error(_("more than one uploadpack given, using the
first"));
0b9c3afdbf 683) die(_("key '%s' of pattern had no '*'"), key);
0b9c3afdbf 693) die(_("value '%s' of pattern has no '*'"), value);
0b9c3afdbf 1044) error(_("unable to delete '%s': remote ref does not
exist"),
0b9c3afdbf 1066) return error(_("dst ref %s receives from more than one
src"),
0b9c3afdbf 1785) die(_("couldn't find remote ref %s"), name);
0b9c3afdbf 1798) error(_("* Ignoring funny ref '%s' locally"),
0b9c3afdbf 1893) die(_("revision walk setup failed"));
0b9c3afdbf 2166) return error(_("cannot parse expected object name '%s'"),
sequencer.c
f11c958054 593) istate->cache_tree = cache_tree();
18e711a162 2387) opts->quiet = 1;
f11c958054 3977) res = error_dirty_index(r->index, opts);
sha1-file.c
2f90b9d9b4 sha1-file.c 172) int hash_algo_by_name(const char *name)
2f90b9d9b4 sha1-file.c 175) if (!name)
2f90b9d9b4 sha1-file.c 176) return GIT_HASH_UNKNOWN;
2f90b9d9b4 sha1-file.c 177) for (i = 1; i < GIT_HASH_NALGOS; i++)
2f90b9d9b4 sha1-file.c 178) if (!strcmp(name, hash_algos[i].name))
2f90b9d9b4 sha1-file.c 179) return i;
2f90b9d9b4 sha1-file.c 180) return GIT_HASH_UNKNOWN;
2f90b9d9b4 sha1-file.c 183) int hash_algo_by_id(uint32_t format_id)
2f90b9d9b4 sha1-file.c 186) for (i = 1; i < GIT_HASH_NALGOS; i++)
2f90b9d9b4 sha1-file.c 187) if (format_id == hash_algos[i].format_id)
2f90b9d9b4 sha1-file.c 188) return i;
2f90b9d9b4 sha1-file.c 189) return GIT_HASH_UNKNOWN;
f0eaf63819 sha1-file.c 2207) return r;
Commits introducing uncovered code:
brian m. carlson 2f90b9d9b: sha1-file: provide functions to look up
hash algorithms
brian m. carlson b3a41547c: hex: introduce functions to print
arbitrary hashes
Daniels Umanovskis 0ecb1fc72: branch: introduce --show-current
display option
Elijah Newren 18e711a16: git-rebase, sequencer: extend --quiet
option for the interactive machinery
Elijah Newren 37b65ce36: merge-recursive: new function for better
colliding conflict resolutions
Elijah Newren 48c9cb9d6: merge-recursive: improve
rename/rename(1to2)/add[/add] handling
Elijah Newren 7f8671656: merge-recursive: fix rename/add conflict
handling
Force Charlie d73019feb: http: add support selecting http version
Jeff King b69fb867b: sha1_file_name(): overwrite buffer instead of
appending
Jeff King f0eaf6381: sha1-file: use an object_directory for the
main object dir
Joel Teichroeb 3d5ec65ce: stash: convert apply to builtin
Joel Teichroeb 5bf62a19c: stash: convert pop to builtin
Joel Teichroeb 700577117: stash: convert drop and clear to builtin
Johannes Schindelin 3249c1251: rebase: consolidate clean-up code
before leaving reset_head()
Johannes Schindelin bac2a1e36: built-in rebase: reinstate `checkout
-q` behavior where appropriate
Josh Steadmon c95f25280: protocol: advertise multiple supported
versions
Junio C Hamano 287d68a44: Merge branch 'nd/i18n' into jch
Nguyễn Thái Ngọc Duy 005af339c: sequencer.c: remove implicit
dependency on the_repository
Nguyễn Thái Ngọc Duy 0b9c3afdb: remote.c: mark messages for translation
Nguyễn Thái Ngọc Duy 385cb64ff: delta-islands.c: remove
the_repository references
Nguyễn Thái Ngọc Duy 674ba3403: fsck: mark strings for translation
Nguyễn Thái Ngọc Duy 74ae4b638: bundle.c: remove the_repository
references
Nguyễn Thái Ngọc Duy 890034262: parse-options.c: mark more strings
for translation
Nguyễn Thái Ngọc Duy 8aa8c1409: git.c: mark more strings for
translation
Nguyễn Thái Ngọc Duy 9440b831a: parse-options: replace opterror()
with optname()
Nguyễn Thái Ngọc Duy 9d0a9e908: read-cache.c: mark more strings for
translation
Nguyễn Thái Ngọc Duy ad8f8f4ae: attr.c: mark more string for
translation
Nguyễn Thái Ngọc Duy c6e7965dd: archive.c: mark more strings for
translation
Nguyễn Thái Ngọc Duy c83d950e5: repack: mark more strings for
translation
Nguyễn Thái Ngọc Duy dd509db34: reflog: mark strings for translation
Nguyễn Thái Ngọc Duy f11c95805: sequencer.c: remove implicit
dependency on the_index
Nguyễn Thái Ngọc Duy fb998eae6: blame.c: remove implicit dependency
the_repository
Olga Telezhnaya ab0e36715: ref-filter: add deltabase option
Olga Telezhnaya bbfc042ef: ref-filter: add objectsize:disk option
Paul-Sebastian Ungureanu 104eb50d1: stash: convert show to builtin
Paul-Sebastian Ungureanu 193c3e351: stash: convert
`stash--helper.c` into `stash.c`
Paul-Sebastian Ungureanu 1a0f0409a: stash: convert push to builtin
Paul-Sebastian Ungureanu 813904a0c: stash: convert store to builtin
Paul-Sebastian Ungureanu 9f630e748: stash: convert create to builtin
Paul-Sebastian Ungureanu c2cc69f19: stash: make push -q quiet
Torsten Bögershausen ca473cef9: Upcast size_t variables to
uintmax_t when printing
Uncovered code in 'next' not in 'master'
--------------------------------------------
apply.c
517fe807d6 4776) BUG_ON_OPT_NEG(unset);
735ca208c5 4830) return -1;
builtin/am.c
fce5664805 2117) *opt_value = PATCH_FORMAT_UNKNOWN;
builtin/archive.c
e001fd3a50 builtin/archive.c 78) die(_("git archive: expected ACK/NAK,
got a flush packet"));
e001fd3a50 builtin/archive.c 80) if (starts_with(reader.line, "NACK "))
e001fd3a50 builtin/archive.c 81) die(_("git archive: NACK %s"),
reader.line + 5);
e001fd3a50 builtin/archive.c 82) if (starts_with(reader.line, "ERR "))
e001fd3a50 builtin/archive.c 83) die(_("remote error: %s"), reader.line
+ 4);
e001fd3a50 builtin/archive.c 84) die(_("git archive: protocol error"));
e001fd3a50 builtin/archive.c 89) die(_("git archive: expected a flush"));
fb19d32f05 builtin/archive.c 99) if (version != discover_version(&reader))
fb19d32f05 builtin/archive.c 100) die(_("git archive: received different
protocol versions in subsequent requests"));
builtin/blame.c
517fe807d6 builtin/blame.c 759) BUG_ON_OPT_NEG(unset);
builtin/cat-file.c
0eb8d3767c builtin/cat-file.c 609) return error(_("only one batch option
may be specified"));
builtin/grep.c
fd6263fb73 builtin/grep.c 1051) warning(_("invalid option combination,
ignoring --threads"));
fd6263fb73 builtin/grep.c 1057) die(_("invalid number of threads
specified (%d)"), num_threads);
builtin/log.c
517fe807d6 builtin/log.c 1196) BUG_ON_OPT_NEG(unset);
builtin/pull.c
01a31f3bca 565) die(_("unable to access commit %s"),
builtin/show-branch.c
517fe807d6 builtin/show-branch.c 607) BUG_ON_OPT_NEG(unset);
builtin/show-ref.c
517fe807d6 builtin/show-ref.c 154) BUG_ON_OPT_NEG(unset);
builtin/upload-archive.c
e001fd3a50 builtin/upload-archive.c 113) if (version == protocol_v0 ||
version == protocol_v1)
e001fd3a50 builtin/upload-archive.c 114) packet_write_fmt(1, "NACK
unable to spawn subprocess\n");
e001fd3a50 builtin/upload-archive.c 115) else if (version == protocol_v2)
e001fd3a50 builtin/upload-archive.c 116) error_clnt("unable to spawn
subprocess\n");
http-backend.c
fb19d32f05 646) argv[1] = ".";
fb19d32f05 647) argv[2] = NULL;
midx.c
name-hash.c
2179045fd0 532) die(_("unable to create lazy_dir thread: %s"),
strerror(err));
2179045fd0 554) die(_("unable to create lazy_name thread: %s"),
strerror(err));
2179045fd0 560) die(_("unable to join lazy_name thread: %s"),
strerror(err));
preload-index.c
2179045fd0 137) die(_("unable to create threaded lstat: %s"),
strerror(err));
revision.c
b45424181e 2942) return;
b45424181e 2945) return;
b45424181e 2951) c->object.flags |= UNINTERESTING;
b45424181e 2954) return;
b45424181e 2957) mark_parents_uninteresting(c);
b45424181e 2980) return;
b45424181e 2983) return;
b45424181e 3048) continue;
f0d9cc4196 3097) if (!revs->ignore_missing_links)
f0d9cc4196 3098) die("Failed to traverse parents of commit %s",
f0d9cc4196 3099) oid_to_hex(&commit->object.oid));
b45424181e 3107) continue;
run-command.c
2179045fd0 1229) error(_("cannot create async thread: %s"), strerror(err));
send-pack.c
c0e40a2d66 207) close(fd[1]);
transport-helper.c
fb19d32f05 643) if (!data->connect && !data->stateless_connect)
Commits introducing uncovered code:
Derrick Stolee b45424181: revision.c: generation-based topo-order
algorithm
Derrick Stolee f0d9cc419: revision.c: begin refactoring
--topo-order logic
Jeff King 01a31f3bc: pull: handle --verify-signatures for unborn branch
Jeff King 0eb8d3767: cat-file: report an error on multiple --batch
options
Jeff King 517fe807d: assert NOARG/NONEG behavior of parse-options
callbacks
Jeff King 735ca208c: apply: return -1 from option callback instead
of calling exit(1)
Jeff King fce566480: am: handle --no-patch-format option
Josh Steadmon e001fd3a5: archive: implement protocol v2 archive command
Josh Steadmon fb19d32f0: archive: allow archive over HTTP(S) with
proto v2
Nguyễn Thái Ngọc Duy 2179045fd: Clean up pthread_create() error
handling
Nguyễn Thái Ngọc Duy c0e40a2d6: send-pack.c: move async's #ifdef
NO_PTHREADS back to run-command.c
Nguyễn Thái Ngọc Duy fd6263fb7: grep: clean up num_threads handling
Uncovered code in 'master' not in 'master@{1}'
----------------------------------------------------
builtin/add.c
d1664e73ad builtin/add.c 458) die(_("index file corrupt"));
builtin/cat-file.c
98f425b453 builtin/cat-file.c 56) die("unable to stream %s to stdout",
oid_to_hex(oid));
builtin/fetch.c
builtin/fsck.c
b29759d89a builtin/fsck.c 613) fprintf(stderr, "Checking %s link\n",
head_ref_name);
b29759d89a builtin/fsck.c 618) return error("Invalid %s", head_ref_name);
builtin/grep.c
76e9bdc437 builtin/grep.c 439) grep_read_unlock();
builtin/reflog.c
c9ef0d95eb builtin/reflog.c 580) all_worktrees = 0;
c9ef0d95eb builtin/reflog.c 616) continue;
combine-diff.c
0074c9110d 377) state->sline[state->nb-1].p_lno =
0074c9110d 378) xcalloc(state->num_parent, sizeof(unsigned long));
date.c
c27cc94fad 904) tm->tm_mon = number-1;
c27cc94fad 908) else if (number > 69 && number < 100)
c27cc94fad 909) tm->tm_year = number;
c27cc94fad 910) else if (number < 38)
c27cc94fad 911) tm->tm_year = 100 + number;
c27cc94fad 952) pending_number(tm, num);
dir.c
8a2c174677 287) name = to_free = xmemdupz(name, namelen);
midx.c
1dcd9f2043 184) return;
refs.c
3a3b9d8cde 657) return 0;
refs/files-backend.c
remote.c
85daa01f6b 1219) continue;
85daa01f6b 1225) continue;
sequencer.c
bcd33ec25f 683) np = strchrnul(buf, '\n');
bcd33ec25f 684) return error(_("no key present in '%.*s'"),
bcd33ec25f 695) return error(_("unable to dequote value of '%s'"),
bcd33ec25f 737) goto finish;
bcd33ec25f 742) name_i = error(_("'GIT_AUTHOR_NAME' already given"));
bcd33ec25f 747) email_i = error(_("'GIT_AUTHOR_EMAIL' already given"));
bcd33ec25f 752) date_i = error(_("'GIT_AUTHOR_DATE' already given"));
bcd33ec25f 756) err = error(_("unknown variable '%s'"),
bcd33ec25f 761) error(_("missing 'GIT_AUTHOR_NAME'"));
bcd33ec25f 763) error(_("missing 'GIT_AUTHOR_EMAIL'"));
bcd33ec25f 765) error(_("missing 'GIT_AUTHOR_DATE'"));
setup.c
58b284a2e9 413) return config_error_nonbool(var);
submodule-config.c
bcbc780d14 739) return CONFIG_INVALID_KEY;
45f5ef3d77 754) warning(_("Could not update .gitmodules entry %s"), key);
worktree.c
3a3b9d8cde 495) return -1;
3a3b9d8cde 508) return -1;
3a3b9d8cde 517) return -1;
ab3e1f78ae 537) break;
xdiff-interface.c
xdiff/xutils.c
611e42a598 405) return -1;
Commits introducing uncovered code:
Antonio Ospite 45f5ef3d7: submodule: factor out a
config_set_in_gitmodules_file_gently function
Antonio Ospite 76e9bdc43: submodule: support reading .gitmodules
when it's not in the working tree
Antonio Ospite bcbc780d1: submodule: add a
print_config_from_gitmodules() helper
Ben Peart d1664e73a: add: speed up cmd_add() by utilizing
read_cache_preload()
Derrick Stolee 1dcd9f204: midx: close multi-pack-index on repack
Derrick Stolee 85daa01f6: remote: make add_missing_tags() linear
Jeff King 0074c9110: combine-diff: use an xdiff hunk callback
Jeff King 611e42a59: xdiff: provide a separate emit callback for hunks
Jeff King 8a2c17467: pathspec: handle non-terminated strings with
:(attr)
Jeff King 98f425b45: cat-file: handle streaming failures consistently
Jeff King c27cc94fa: approxidate: handle pending number for "specials"
Nguyễn Thái Ngọc Duy 3a3b9d8cd: refs: new ref types to make
per-worktree refs visible to all worktrees
Nguyễn Thái Ngọc Duy 58b284a2e: worktree: add per-worktree config files
Nguyễn Thái Ngọc Duy ab3e1f78a: revision.c: better error reporting
on ref from different worktrees
Nguyễn Thái Ngọc Duy b29759d89: fsck: check HEAD and reflog from
other worktrees
Nguyễn Thái Ngọc Duy c9ef0d95e: reflog expire: cover reflog from
all worktrees
Phillip Wood bcd33ec25: add read_author_script() to libgit
^ permalink raw reply [relevance 1%]
* Re: What's cooking in git.git (Nov 2018, #03; Wed, 7)
2018-11-07 22:09 2% ` Junio C Hamano
@ 2018-11-08 6:09 1% ` Junio C Hamano
0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2018-11-08 6:09 UTC (permalink / raw)
To: Duy Nguyen; +Cc: SZEDER Gábor, Git Mailing List
Junio C Hamano <gitster@pobox.com> writes:
>> Not surprising. The i18n series makes fsck output localized strings
>> and without updating grep to test_i18ngrep, new tests will fail. If
>> 'pu' was passing before, I'm ok with just ejecting this series for
>> now. Then I wait for the other to land, rebase, fixup and resubmit.
>
> Let me first see if I can come up with a merge-fix that can be
> carried around during the time this topic cooks, before talking
> about dropping and reattempting the series.
>
> For a change like this, a time-window in which the codebase is
> quiescent enough may never come, and because the changes go all over
> the place, mostly but not entirely repetitive, it costs a lot, not
> just to write but also to review them.
I have configured the machinery used to rebuild integration branches
so that the following is squashed in when the nd/i18n topic is
merged.
The part that touches t1450 needs to be split out and squashed when
nd/per-worktree-ref-iteration gets merged, *if* the nd/i18n topic
needs to jump over the other topic, but I'll worry about it when it
happens---I think per-worktree ref iteration series that is in next
should be ready enough that we do not mind having nd/i18n waiting
for it.
Anyway, here is what is in refs/merge-fix/nd/i18n, which gets
cherry-picked and squashed into the merge when nd/i18n is merged.
t/t1450-fsck.sh | 8 ++++----
t/t5616-partial-clone.sh | 2 +-
t/t5703-upload-pack-ref-in-want.sh | 4 ++--
3 files changed, 7 insertions(+), 7 deletions(-)
diff --git a/t/t1450-fsck.sh b/t/t1450-fsck.sh
index 8a5f4c7189..2e5e979336 100755
--- a/t/t1450-fsck.sh
+++ b/t/t1450-fsck.sh
@@ -109,7 +109,7 @@ test_expect_success 'HEAD link pointing at a funny object (from different wt)' '
echo $ZERO_OID >.git/HEAD &&
# avoid corrupt/broken HEAD from interfering with repo discovery
test_must_fail git -C wt fsck 2>out &&
- grep "main-worktree/HEAD: detached HEAD points" out
+ test_i18ngrep "main-worktree/HEAD: detached HEAD points" out
'
test_expect_success 'other worktree HEAD link pointing at a funny object' '
@@ -117,7 +117,7 @@ test_expect_success 'other worktree HEAD link pointing at a funny object' '
git worktree add other &&
echo $ZERO_OID >.git/worktrees/other/HEAD &&
test_must_fail git fsck 2>out &&
- grep "worktrees/other/HEAD: detached HEAD points" out
+ test_i18ngrep "worktrees/other/HEAD: detached HEAD points" out
'
test_expect_success 'other worktree HEAD link pointing at missing object' '
@@ -125,7 +125,7 @@ test_expect_success 'other worktree HEAD link pointing at missing object' '
git worktree add other &&
echo "Contents missing from repo" | git hash-object --stdin >.git/worktrees/other/HEAD &&
test_must_fail git fsck 2>out &&
- grep "worktrees/other/HEAD: invalid sha1 pointer" out
+ test_i18ngrep "worktrees/other/HEAD: invalid sha1 pointer" out
'
test_expect_success 'other worktree HEAD link pointing at a funny place' '
@@ -133,7 +133,7 @@ test_expect_success 'other worktree HEAD link pointing at a funny place' '
git worktree add other &&
echo "ref: refs/funny/place" >.git/worktrees/other/HEAD &&
test_must_fail git fsck 2>out &&
- grep "worktrees/other/HEAD points to something strange" out
+ test_i18ngrep "worktrees/other/HEAD points to something strange" out
'
test_expect_success 'email without @ is okay' '
diff --git a/t/t5616-partial-clone.sh b/t/t5616-partial-clone.sh
index 336f02a41a..9643acb161 100755
--- a/t/t5616-partial-clone.sh
+++ b/t/t5616-partial-clone.sh
@@ -281,7 +281,7 @@ test_expect_success 'upon cloning, check that all refs point to objects' '
test_must_fail git -c protocol.version=2 clone \
--filter=blob:none $HTTPD_URL/one_time_sed/server repo 2>err &&
- grep "did not send all necessary objects" err &&
+ test_i18ngrep "did not send all necessary objects" err &&
# Ensure that the one-time-sed script was used.
! test -e "$HTTPD_ROOT_PATH/one-time-sed"
diff --git a/t/t5703-upload-pack-ref-in-want.sh b/t/t5703-upload-pack-ref-in-want.sh
index 3f58f05cbb..7053899cb5 100755
--- a/t/t5703-upload-pack-ref-in-want.sh
+++ b/t/t5703-upload-pack-ref-in-want.sh
@@ -208,7 +208,7 @@ test_expect_success 'server is initially ahead - no ref in want' '
cp -r "$LOCAL_PRISTINE" local &&
inconsistency master 1234567890123456789012345678901234567890 &&
test_must_fail git -C local fetch 2>err &&
- grep "ERR upload-pack: not our ref" err
+ test_i18ngrep "ERR upload-pack: not our ref" err
'
test_expect_success 'server is initially ahead - ref in want' '
@@ -254,7 +254,7 @@ test_expect_success 'server loses a ref - ref in want' '
echo "s/master/raster/" >"$HTTPD_ROOT_PATH/one-time-sed" &&
test_must_fail git -C local fetch 2>err &&
- grep "ERR unknown ref refs/heads/raster" err
+ test_i18ngrep "ERR unknown ref refs/heads/raster" err
'
stop_httpd
--
2.19.1-856-g8858448bb4
^ permalink raw reply related [relevance 1%]
* Re: What's cooking in git.git (Nov 2018, #03; Wed, 7)
@ 2018-11-07 22:09 2% ` Junio C Hamano
2018-11-08 6:09 1% ` Junio C Hamano
0 siblings, 1 reply; 200+ results
From: Junio C Hamano @ 2018-11-07 22:09 UTC (permalink / raw)
To: Duy Nguyen; +Cc: SZEDER Gábor, Git Mailing List
Duy Nguyen <pclouds@gmail.com> writes:
> On Wed, Nov 7, 2018 at 2:09 PM SZEDER Gábor <szeder.dev@gmail.com> wrote:
>>
>> On Wed, Nov 07, 2018 at 06:41:45PM +0900, Junio C Hamano wrote:
>> > * nd/i18n (2018-11-06) 16 commits
>> > - fsck: mark strings for translation
>> > - fsck: reduce word legos to help i18n
>> > ...
>> > More _("i18n") markings.
>>
>> When this patch is merged into 'pu' all four tests added to
>> 't1450-fsck.sh' in b29759d89a (fsck: check HEAD and reflog from other
>> worktrees, 2018-10-21) as part of 'nd/per-worktree-ref-iteration'
>> below fail when run with GETTEXT_POISON=y. The test suite passes in
>> both of these topics on their own, even with GETTEXT_POISON, it's
>> their merge that is somehow problematic.
>
> Not surprising. The i18n series makes fsck output localized strings
> and without updating grep to test_i18ngrep, new tests will fail. If
> 'pu' was passing before, I'm ok with just ejecting this series for
> now. Then I wait for the other to land, rebase, fixup and resubmit.
Let me first see if I can come up with a merge-fix that can be
carried around during the time this topic cooks, before talking
about dropping and reattempting the series.
For a change like this, a time-window in which the codebase is
quiescent enough may never come, and because the changes go all over
the place, mostly but not entirely repetitive, it costs a lot, not
just to write but also to review them.
^ permalink raw reply [relevance 2%]
* Re: [PATCH v2 1/2] commit-graph write: add progress output
@ 2018-09-21 21:57 2% ` Junio C Hamano
0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2018-09-21 21:57 UTC (permalink / raw)
To: Derrick Stolee
Cc: Ævar Arnfjörð Bjarmason, git, Jeff King,
Eric Sunshine, Nguyễn Thái Ngọc Duy
Junio C Hamano <gitster@pobox.com> writes:
>> The above prototype change seems to have created a semantic conflict
>> with ds/commit-graph-tests (859fdc "commit-graph: define
>> GIT_TEST_COMMIT_GRAPH") because when GIT_TEST_COMMIT_GRAPH is set, we
>> call write_commit_graph_reachable() but the final parameter was
>> resolved to be "1" instead of "0".
>
> Hmph. That's unfortunate.
>
> Perhaps one of the topics should have yielded and waited until the
> other one passes through.
Nah, I see where things went wrong. I'll queue a single-liner
"mismerge fix" to 'next', and then correct the seed for the evil
merge kept in merge-fix/ab/commit-graph-progress, and rebuild 'pu'.
Things will straighten out by themselves after that happens.
Thanks for noticing.
^ permalink raw reply [relevance 2%]
* Re: What's cooking in git.git (Sep 2018, #04; Thu, 20)
@ 2018-09-21 17:17 3% ` Junio C Hamano
0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2018-09-21 17:17 UTC (permalink / raw)
To: Johannes Sixt; +Cc: git
Johannes Sixt <j6t@kdbg.org> writes:
> Am 21.09.18 um 07:22 schrieb Junio C Hamano:
>> The tip of 'next' hasn't been rewound yet. The three GSoC "rewrite
>> in C" topics are still unclassified in this "What's cooking" report,
>> but I am hoping that we can have them in 'next' sooner rather than
>> later. I got an impression that Dscho wanted a chance for the final
>> clean-up on some of them, so I am not doing anything hasty yet at
>> this moment, though.
>
> While playing around with those topics in my own build on Windows, I
> noticed a small glitch in your merge commits.
>
> When I compile 59085279e6, which is today's jch~11, I see
>
> CC builtin/rebase.o
> builtin/rebase.c: In function 'can_fast_forward':
> builtin/rebase.c:443:2: warning: implicit declaration of function 'get_merge_bases' [-Wimplicit-function-declaration]
> merge_bases = get_merge_bases(onto, head);
> ^
> builtin/rebase.c:443:14: warning: assignment makes pointer from integer without a cast [enabled by default]
> merge_bases = get_merge_bases(onto, head);
> ^
>
> I notice that you fixed it in the next merge, jch~10 aka d311e29abe,
> by adding
>
> #include "commit-reach.h"
>
> in builtin/rebase.c; this line is obviously required one merge
> commit earlier, jch~11.
Thanks. Near the problematic merges are
41e89b1c02 Merge branch 'pk/rebase-in-c-6-final' into jch
a9794eb0fe Merge branch 'js/rebase-in-c-5.5-work-with-rebase-i-in-c' into jch
d348159563 Merge branch 'pk/rebase-in-c-5-test' into jch
d311e29abe Merge branch 'pk/rebase-in-c-4-opts' into jch
59085279e6 Merge branch 'pk/rebase-in-c-3-acts' into jch
88091f8941 Merge branch 'pk/rebase-in-c-2-basic' into jch
38a693a042 Merge branch 'ps/stash-in-c' into jch
488f36e338 Merge branch 'ag/rebase-i-in-c' into jch
Actually 88091f8941 is already broken. The merge-fix must go there.
Thanks for letting me know (even though it is very unlikely that
2-basic would graduate without any of these other topics---in a
sense there is not much point for these patches to be spread across
this many topics).
commit a581ba92f4f4e112a7d7e0c84c0ced1af271b7dc
Author: Junio C Hamano <gitster@pobox.com>
Date: Fri Sep 21 10:14:43 2018 -0700
merge-fix/pk/rebase-in-c-2-basic
diff --git a/builtin/rebase.c b/builtin/rebase.c
index e817956d96..71367c8530 100644
--- a/builtin/rebase.c
+++ b/builtin/rebase.c
@@ -21,6 +21,7 @@
#include "diff.h"
#include "wt-status.h"
#include "revision.h"
+#include "commit-reach.h"
static char const * const builtin_rebase_usage[] = {
N_("git rebase [-i] [options] [--exec <cmd>] [--onto <newbase>] "
^ permalink raw reply related [relevance 3%]
* [ANNOUNCE] Git v2.19.0
@ 2018-09-10 20:11 3% Junio C Hamano
0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2018-09-10 20:11 UTC (permalink / raw)
To: git; +Cc: Linux Kernel, git-packagers
The latest feature release Git v2.19.0 is now available at the
usual places. It is comprised of 769 non-merge commits since
v2.18.0, contributed by 72 people, 16 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.19.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.18.0 are as follows.
Welcome to the Git development community!
Aleksandr Makarov, Andrei Rybak, Chen Bin, Henning Schild,
Isabella Stephens, Josh Steadmon, Jules Maselbas, Kana Natsuno,
Marc Strapetz, Masaya Suzuki, Nicholas Guriev, Raphaël Hertzog,
Samuel Maftoul, Sebastian Kisela, Vladimir Parfinenko, and
William Chargin.
Returning contributors who helped this release are as follows.
Thanks for your continued support.
Aaron Schrab, Ævar Arnfjörð Bjarmason, Alban Gruin, Alejandro
R. Sedeño, Alexander Shopov, Anthony Sottile, Antonio Ospite,
Beat Bolli, Ben Peart, Brandon Williams, brian m. carlson,
Christian Couder, Christopher Díaz Riveros, Derrick Stolee,
Dimitriy Ryazantcev, Elia Pinto, Elijah Newren, Eric Sunshine,
Han-Wen Nienhuys, Jameson Miller, Jean-Noël Avila, Jeff
Hostetler, Jeff King, Jiang Xin, Johannes Schindelin, Johannes
Sixt, Jonathan Nieder, Jonathan Tan, Junio C Hamano, Kim Gybels,
Kirill Smelkov, Kyle Meyer, Luis Marsano, Łukasz Stelmach,
Luke Diamand, Martin Ågren, Max Kirillov, Michael Barabanov,
Mike Hommey, Nguyễn Thái Ngọc Duy, Olga Telezhnaya, Peter
Krefting, Phillip Wood, Prathamesh Chavan, Ralf Thielow, Ramsay
Jones, René Scharfe, Stefan Beller, SZEDER Gábor, Taylor Blau,
Thomas Rast, Tobias Klauser, Todd Zullinger, Trần Ngọc Quân,
Ville Skyttä, and Xiaolong Ye.
----------------------------------------------------------------
Git 2.19 Release Notes
======================
Updates since v2.18
-------------------
UI, Workflows & Features
* "git diff" compares the index and the working tree. For paths
added with intent-to-add bit, the command shows the full contents
of them as added, but the paths themselves were not marked as new
files. They are now shown as new by default.
"git apply" learned the "--intent-to-add" option so that an
otherwise working-tree-only application of a patch will add new
paths to the index marked with the "intent-to-add" bit.
* "git grep" learned the "--column" option that gives not just the
line number but the column number of the hit.
* The "-l" option in "git branch -l" is an unfortunate short-hand for
"--create-reflog", but many users, both old and new, somehow expect
it to be something else, perhaps "--list". This step warns when "-l"
is used as a short-hand for "--create-reflog" and warns about the
future repurposing of the it when it is used.
* The userdiff pattern for .php has been updated.
* The content-transfer-encoding of the message "git send-email" sends
out by default was 8bit, which can cause trouble when there is an
overlong line to bust RFC 5322/2822 limit. A new option 'auto' to
automatically switch to quoted-printable when there is such a line
in the payload has been introduced and is made the default.
* "git checkout" and "git worktree add" learned to honor
checkout.defaultRemote when auto-vivifying a local branch out of a
remote tracking branch in a repository with multiple remotes that
have tracking branches that share the same names.
(merge 8d7b558bae ab/checkout-default-remote later to maint).
* "git grep" learned the "--only-matching" option.
* "git rebase --rebase-merges" mode now handles octopus merges as
well.
* Add a server-side knob to skip commits in exponential/fibbonacci
stride in an attempt to cover wider swath of history with a smaller
number of iterations, potentially accepting a larger packfile
transfer, instead of going back one commit a time during common
ancestor discovery during the "git fetch" transaction.
(merge 42cc7485a2 jt/fetch-negotiator-skipping later to maint).
* A new configuration variable core.usereplacerefs has been added,
primarily to help server installations that want to ignore the
replace mechanism altogether.
* Teach "git tag -s" etc. a few configuration variables (gpg.format
that can be set to "openpgp" or "x509", and gpg.<format>.program
that is used to specify what program to use to deal with the format)
to allow x.509 certs with CMS via "gpgsm" to be used instead of
openpgp via "gnupg".
* Many more strings are prepared for l10n.
* "git p4 submit" learns to ask its own pre-submit hook if it should
continue with submitting.
* The test performed at the receiving end of "git push" to prevent
bad objects from entering repository can be customized via
receive.fsck.* configuration variables; we now have gained a
counterpart to do the same on the "git fetch" side, with
fetch.fsck.* configuration variables.
* "git pull --rebase=interactive" learned "i" as a short-hand for
"interactive".
* "git instaweb" has been adjusted to run better with newer Apache on
RedHat based distros.
* "git range-diff" is a reimplementation of "git tbdiff" that lets us
compare individual patches in two iterations of a topic.
* The sideband code learned to optionally paint selected keywords at
the beginning of incoming lines on the receiving end.
* "git branch --list" learned to take the default sort order from the
'branch.sort' configuration variable, just like "git tag --list"
pays attention to 'tag.sort'.
* "git worktree" command learned "--quiet" option to make it less
verbose.
Performance, Internal Implementation, Development Support etc.
* The bulk of "git submodule foreach" has been rewritten in C.
* The in-core "commit" object had an all-purpose "void *util" field,
which was tricky to use especially in library-ish part of the
code. All of the existing uses of the field has been migrated to a
more dedicated "commit-slab" mechanism and the field is eliminated.
* A less often used command "git show-index" has been modernized.
(merge fb3010c31f jk/show-index later to maint).
* The conversion to pass "the_repository" and then "a_repository"
throughout the object access API continues.
* Continuing with the idea to programatically enumerate various
pieces of data required for command line completion, teach the
codebase to report the list of configuration variables
subcommands care about to help complete them.
* Separate "rebase -p" codepath out of "rebase -i" implementation to
slim down the latter and make it easier to manage.
* Make refspec parsing codepath more robust.
* Some flaky tests have been fixed.
* Continuing with the idea to programmatically enumerate various
pieces of data required for command line completion, the codebase
has been taught to enumerate options prefixed with "--no-" to
negate them.
* Build and test procedure for netrc credential helper (in contrib/)
has been updated.
* Remove unused function definitions and declarations from ewah
bitmap subsystem.
* Code preparation to make "git p4" closer to be usable with Python 3.
* Tighten the API to make it harder to misuse in-tree .gitmodules
file, even though it shares the same syntax with configuration
files, to read random configuration items from it.
* "git fast-import" has been updated to avoid attempting to create
delta against a zero-byte-long string, which is pointless.
* The codebase has been updated to compile cleanly with -pedantic
option.
(merge 2b647a05d7 bb/pedantic later to maint).
* The character display width table has been updated to match the
latest Unicode standard.
(merge 570951eea2 bb/unicode-11-width later to maint).
* test-lint now looks for broken use of "VAR=VAL shell_func" in test
scripts.
* Conversion from uchar[40] to struct object_id continues.
* Recent "security fix" to pay attention to contents of ".gitmodules"
while accepting "git push" was a bit overly strict than necessary,
which has been adjusted.
* "git fsck" learns to make sure the optional commit-graph file is in
a sane state.
* "git diff --color-moved" feature has further been tweaked.
* Code restructuring and a small fix to transport protocol v2 during
fetching.
* Parsing of -L[<N>][,[<M>]] parameters "git blame" and "git log"
take has been tweaked.
* lookup_commit_reference() and friends have been updated to find
in-core object for a specific in-core repository instance.
* Various glitches in the heuristics of merge-recursive strategy have
been documented in new tests.
* "git fetch" learned a new option "--negotiation-tip" to limit the
set of commits it tells the other end as "have", to reduce wasted
bandwidth and cycles, which would be helpful when the receiving
repository has a lot of refs that have little to do with the
history at the remote it is fetching from.
* For a large tree, the index needs to hold many cache entries
allocated on heap. These cache entries are now allocated out of a
dedicated memory pool to amortize malloc(3) overhead.
* Tests to cover various conflicting cases have been added for
merge-recursive.
* Tests to cover conflict cases that involve submodules have been
added for merge-recursive.
* Look for broken "&&" chains that are hidden in subshell, many of
which have been found and corrected.
* The singleton commit-graph in-core instance is made per in-core
repository instance.
* "make DEVELOPER=1 DEVOPTS=pedantic" allows developers to compile
with -pedantic option, which may catch more problematic program
constructs and potential bugs.
* Preparatory code to later add json output for telemetry data has
been added.
* Update the way we use Coccinelle to find out-of-style code that
need to be modernised.
* It is too easy to misuse system API functions such as strcat();
these selected functions are now forbidden in this codebase and
will cause a compilation failure.
* Add a script (in contrib/) to help users of VSCode work better with
our codebase.
* The Travis CI scripts were taught to ship back the test data from
failed tests.
(merge aea8879a6a sg/travis-retrieve-trash-upon-failure later to maint).
* The parse-options machinery learned to refrain from enclosing
placeholder string inside a "<bra" and "ket>" pair automatically
without PARSE_OPT_LITERAL_ARGHELP. Existing help text for option
arguments that are not formatted correctly have been identified and
fixed.
(merge 5f0df44cd7 rs/parse-opt-lithelp later to maint).
* Noiseword "extern" has been removed from function decls in the
header files.
* A few atoms like %(objecttype) and %(objectsize) in the format
specifier of "for-each-ref --format=<format>" can be filled without
getting the full contents of the object, but just with the object
header. These cases have been optimized by calling
oid_object_info() API (instead of reading and inspecting the data).
* The end result of documentation update has been made to be
inspected more easily to help developers.
* The API to iterate over all objects learned to optionally list
objects in the order they appear in packfiles, which helps locality
of access if the caller accesses these objects while as objects are
enumerated.
* Improve built-in facility to catch broken &&-chain in the tests.
* The more library-ish parts of the codebase learned to work on the
in-core index-state instance that is passed in by their callers,
instead of always working on the singleton "the_index" instance.
* A test prerequisite defined by various test scripts with slightly
different semantics has been consolidated into a single copy and
made into a lazily defined one.
(merge 6ec633059a wc/make-funnynames-shared-lazy-prereq later to maint).
* After a partial clone, repeated fetches from promisor remote would
have accumulated many packfiles marked with .promisor bit without
getting them coalesced into fewer packfiles, hurting performance.
"git repack" now learned to repack them.
* Partially revert the support for multiple hash functions to regain
hash comparison performance; we'd think of a way to do this better
in the next cycle.
* "git help --config" (which is used in command line completion)
missed the configuration variables not described in the main
config.txt file but are described in another file that is included
by it, which has been corrected.
* The test linter code has learned that the end of here-doc mark
"EOF" can be quoted in a double-quote pair, not just in a
single-quote pair.
Fixes since v2.18
-----------------
* "git remote update" can take both a single remote nickname and a
nickname for remote groups, and the completion script (in contrib/)
has been taught about it.
(merge 9cd4382ad5 ls/complete-remote-update-names later to maint).
* "git fetch --shallow-since=<cutoff>" that specifies the cut-off
point that is newer than the existing history used to end up
grabbing the entire history. Such a request now errors out.
(merge e34de73c56 nd/reject-empty-shallow-request later to maint).
* Fix for 2.17-era regression around `core.safecrlf`.
(merge 6cb09125be as/safecrlf-quiet-fix later to maint).
* The recent addition of "partial clone" experimental feature kicked
in when it shouldn't, namely, when there is no partial-clone filter
defined even if extensions.partialclone is set.
(merge cac1137dc4 jh/partial-clone later to maint).
* "git send-pack --signed" (hence "git push --signed" over the http
transport) did not read user ident from the config mechanism to
determine whom to sign the push certificate as, which has been
corrected.
(merge d067d98887 ms/send-pack-honor-config later to maint).
* "git fetch-pack --all" used to unnecessarily fail upon seeing an
annotated tag that points at an object other than a commit.
(merge c12c9df527 jk/fetch-all-peeled-fix later to maint).
* When user edits the patch in "git add -p" and the user's editor is
set to strip trailing whitespaces indiscriminately, an empty line
that is unchanged in the patch would become completely empty
(instead of a line with a sole SP on it). The code introduced in
Git 2.17 timeframe failed to parse such a patch, but now it learned
to notice the situation and cope with it.
(merge f4d35a6b49 pw/add-p-recount later to maint).
* The code to try seeing if a fetch is necessary in a submodule
during a fetch with --recurse-submodules got confused when the path
to the submodule was changed in the range of commits in the
superproject, sometimes showing "(null)". This has been corrected.
* Bugfix for "rebase -i" corner case regression.
(merge a9279c6785 pw/rebase-i-keep-reword-after-conflict later to maint).
* Recently added "--base" option to "git format-patch" command did
not correctly generate prereq patch ids.
(merge 15b76c1fb3 xy/format-patch-prereq-patch-id-fix later to maint).
* POSIX portability fix in Makefile to fix a glitch introduced a few
releases ago.
(merge 6600054e9b dj/runtime-prefix later to maint).
* "git filter-branch" when used with the "--state-branch" option
still attempted to rewrite the commits whose filtered result is
known from the previous attempt (which is recorded on the state
branch); the command has been corrected not to waste cycles doing
so.
(merge 709cfe848a mb/filter-branch-optim later to maint).
* Clarify that setting core.ignoreCase to deviate from reality would
not turn a case-incapable filesystem into a case-capable one.
(merge 48294b512a ms/core-icase-doc later to maint).
* "fsck.skipList" did not prevent a blob object listed there from
being inspected for is contents (e.g. we recently started to
inspect the contents of ".gitmodules" for certain malicious
patterns), which has been corrected.
(merge fb16287719 rj/submodule-fsck-skip later to maint).
* "git checkout --recurse-submodules another-branch" did not report
in which submodule it failed to update the working tree, which
resulted in an unhelpful error message.
(merge ba95d4e4bd sb/submodule-move-head-error-msg later to maint).
* "git rebase" behaved slightly differently depending on which one of
the three backends gets used; this has been documented and an
effort to make them more uniform has begun.
(merge b00bf1c9a8 en/rebase-consistency later to maint).
* The "--ignore-case" option of "git for-each-ref" (and its friends)
did not work correctly, which has been fixed.
(merge e674eb2528 jk/for-each-ref-icase later to maint).
* "git fetch" failed to correctly validate the set of objects it
received when making a shallow history deeper, which has been
corrected.
(merge cf1e7c0770 jt/connectivity-check-after-unshallow later to maint).
* Partial clone support of "git clone" has been updated to correctly
validate the objects it receives from the other side. The server
side has been corrected to send objects that are directly
requested, even if they may match the filtering criteria (e.g. when
doing a "lazy blob" partial clone).
(merge a7e67c11b8 jt/partial-clone-fsck-connectivity later to maint).
* Handling of an empty range by "git cherry-pick" was inconsistent
depending on how the range ended up to be empty, which has been
corrected.
(merge c5e358d073 jk/empty-pick-fix later to maint).
* "git reset --merge" (hence "git merge ---abort") and "git reset --hard"
had trouble working correctly in a sparsely checked out working
tree after a conflict, which has been corrected.
(merge b33fdfc34c mk/merge-in-sparse-checkout later to maint).
* Correct a broken use of "VAR=VAL shell_func" in a test.
(merge 650161a277 jc/t3404-one-shot-export-fix later to maint).
* "git rev-parse ':/substring'" did not consider the history leading
only to HEAD when looking for a commit with the given substring,
when the HEAD is detached. This has been fixed.
(merge 6b3351e799 wc/find-commit-with-pattern-on-detached-head later to maint).
* Build doc update for Windows.
(merge ede8d89bb1 nd/command-list later to maint).
* core.commentchar is now honored when preparing the list of commits
to replay in "rebase -i".
* "git pull --rebase" on a corrupt HEAD caused a segfault. In
general we substitute an empty tree object when running the in-core
equivalent of the diff-index command, and the codepath has been
corrected to do so as well to fix this issue.
(merge 3506dc9445 jk/has-uncommitted-changes-fix later to maint).
* httpd tests saw occasional breakage due to the way its access log
gets inspected by the tests, which has been updated to make them
less flaky.
(merge e8b3b2e275 sg/httpd-test-unflake later to maint).
* Tests to cover more D/F conflict cases have been added for
merge-recursive.
* "git gc --auto" opens file descriptors for the packfiles before
spawning "git repack/prune", which would upset Windows that does
not want a process to work on a file that is open by another
process. The issue has been worked around.
(merge 12e73a3ce4 kg/gc-auto-windows-workaround later to maint).
* The recursive merge strategy did not properly ensure there was no
change between HEAD and the index before performing its operation,
which has been corrected.
(merge 55f39cf755 en/dirty-merge-fixes later to maint).
* "git rebase" started exporting GIT_DIR environment variable and
exposing it to hook scripts when part of it got rewritten in C.
Instead of matching the old scripted Porcelains' behaviour,
compensate by also exporting GIT_WORK_TREE environment as well to
lessen the damage. This can harm existing hooks that want to
operate on different repository, but the current behaviour is
already broken for them anyway.
(merge ab5e67d751 bc/sequencer-export-work-tree-as-well later to maint).
* "git send-email" when using in a batched mode that limits the
number of messages sent in a single SMTP session lost the contents
of the variable used to choose between tls/ssl, unable to send the
second and later batches, which has been fixed.
(merge 636f3d7ac5 jm/send-email-tls-auth-on-batch later to maint).
* The lazy clone support had a few places where missing but promised
objects were not correctly tolerated, which have been fixed.
* One of the "diff --color-moved" mode "dimmed_zebra" that was named
in an unusual way has been deprecated and replaced by
"dimmed-zebra".
(merge e3f2f5f9cd es/diff-color-moved-fix later to maint).
* The wire-protocol v2 relies on the client to send "ref prefixes" to
limit the bandwidth spent on the initial ref advertisement. "git
clone" when learned to speak v2 forgot to do so, which has been
corrected.
(merge 402c47d939 bw/clone-ref-prefixes later to maint).
* "git diff --histogram" had a bad memory usage pattern, which has
been rearranged to reduce the peak usage.
(merge 79cb2ebb92 sb/histogram-less-memory later to maint).
* Code clean-up to use size_t/ssize_t when they are the right type.
(merge 7726d360b5 jk/size-t later to maint).
* The wire-protocol v2 relies on the client to send "ref prefixes" to
limit the bandwidth spent on the initial ref advertisement. "git
fetch $remote branch:branch" that asks tags that point into the
history leading to the "branch" automatically followed sent to
narrow prefix and broke the tag following, which has been fixed.
(merge 2b554353a5 jt/tag-following-with-proto-v2-fix later to maint).
* When the sparse checkout feature is in use, "git cherry-pick" and
other mergy operations lost the skip_worktree bit when a path that
is excluded from checkout requires content level merge, which is
resolved as the same as the HEAD version, without materializing the
merge result in the working tree, which made the path appear as
deleted. This has been corrected by preserving the skip_worktree
bit (and not materializing the file in the working tree).
(merge 2b75fb601c en/merge-recursive-skip-fix later to maint).
* The "author-script" file "git rebase -i" creates got broken when
we started to move the command away from shell script, which is
getting fixed now.
(merge 5522bbac20 es/rebase-i-author-script-fix later to maint).
* The automatic tree-matching in "git merge -s subtree" was broken 5
years ago and nobody has noticed since then, which is now fixed.
(merge 2ec4150713 jk/merge-subtree-heuristics later to maint).
* "git fetch $there refs/heads/s" ought to fetch the tip of the
branch 's', but when "refs/heads/refs/heads/s", i.e. a branch whose
name is "refs/heads/s" exists at the same time, fetched that one
instead by mistake. This has been corrected to honor the usual
disambiguation rules for abbreviated refnames.
(merge 60650a48c0 jt/refspec-dwim-precedence-fix later to maint).
* Futureproofing a helper function that can easily be misused.
(merge 65bb21e77e es/want-color-fd-defensive later to maint).
* The http-backend (used for smart-http transport) used to slurp the
whole input until EOF, without paying attention to CONTENT_LENGTH
that is supplied in the environment and instead expecting the Web
server to close the input stream. This has been fixed.
(merge eebfe40962 mk/http-backend-content-length later to maint).
* "git merge --abort" etc. did not clean things up properly when
there were conflicted entries in the index in certain order that
are involved in D/F conflicts. This has been corrected.
(merge ad3762042a en/abort-df-conflict-fixes later to maint).
* "git diff --indent-heuristic" had a bad corner case performance.
(merge 301ef85401 sb/indent-heuristic-optim later to maint).
* The "--exec" option to "git rebase --rebase-merges" placed the exec
commands at wrong places, which has been corrected.
* "git verify-tag" and "git verify-commit" have been taught to use
the exit status of underlying "gpg --verify" to signal bad or
untrusted signature they found.
(merge 4e5dc9ca17 jc/gpg-status later to maint).
* "git mergetool" stopped and gave an extra prompt to continue after
the last path has been handled, which did not make much sense.
(merge d651a54b8a ng/mergetool-lose-final-prompt later to maint).
* Among the three codepaths we use O_APPEND to open a file for
appending, one used for writing GIT_TRACE output requires O_APPEND
implementation that behaves sensibly when multiple processes are
writing to the same file. POSIX emulation used in the Windows port
has been updated to improve in this area.
(merge d641097589 js/mingw-o-append later to maint).
* "git pull --rebase -v" in a repository with a submodule barfed as
an intermediate process did not understand what "-v(erbose)" flag
meant, which has been fixed.
(merge e84c3cf3dc sb/pull-rebase-submodule later to maint).
* Recent update to "git config" broke updating variable in a
subsection, which has been corrected.
(merge bff7df7a87 sb/config-write-fix later to maint).
* When "git rebase -i" is told to squash two or more commits into
one, it labeled the log message for each commit with its number.
It correctly called the first one "1st commit", but the next one
was "commit #1", which was off-by-one. This has been corrected.
(merge dd2e36ebac pw/rebase-i-squash-number-fix later to maint).
* "git rebase -i", when a 'merge <branch>' insn in its todo list
fails, segfaulted, which has been (minimally) corrected.
(merge bc9238bb09 pw/rebase-i-merge-segv-fix later to maint).
* "git cherry-pick --quit" failed to remove CHERRY_PICK_HEAD even
though we won't be in a cherry-pick session after it returns, which
has been corrected.
(merge 3e7dd99208 nd/cherry-pick-quit-fix later to maint).
* In a recent update in 2.18 era, "git pack-objects" started
producing a larger than necessary packfiles by missing
opportunities to use large deltas. This has been corrected.
* The meaning of the possible values the "core.checkStat"
configuration variable can take were not adequately documented,
which has been fixed.
(merge 9bf5d4c4e2 nd/config-core-checkstat-doc later to maint).
* Recent "git rebase -i" update started to write bogusly formatted
author-script, with a matching broken reading code. These are
fixed.
* Recent addition of "directory rename" heuristics to the
merge-recursive backend makes the command susceptible to false
positives and false negatives. In the context of "git am -3",
which does not know about surrounding unmodified paths and thus
cannot inform the merge machinery about the full trees involved,
this risk is particularly severe. As such, the heuristic is
disabled for "git am -3" to keep the machinery "more stupid but
predictable".
* "git merge-base" in 2.19-rc1 has performance regression when the
(experimental) commit-graph feature is in use, which has been
mitigated.
* Code cleanup, docfix, build fix, etc.
(merge aee9be2ebe sg/update-ref-stdin-cleanup later to maint).
(merge 037714252f jc/clean-after-sanity-tests later to maint).
(merge 5b26c3c941 en/merge-recursive-cleanup later to maint).
(merge 0dcbc0392e bw/config-refer-to-gitsubmodules-doc later to maint).
(merge bb4d000e87 bw/protocol-v2 later to maint).
(merge 928f0ab4ba vs/typofixes later to maint).
(merge d7f590be84 en/rebase-i-microfixes later to maint).
(merge 81d395cc85 js/rebase-recreate-merge later to maint).
(merge 51d1863168 tz/exclude-doc-smallfixes later to maint).
(merge a9aa3c0927 ds/commit-graph later to maint).
(merge 5cf8e06474 js/enhanced-version-info later to maint).
(merge 6aaded5509 tb/config-default later to maint).
(merge 022d2ac1f3 sb/blame-color later to maint).
(merge 5a06a20e0c bp/test-drop-caches-for-windows later to maint).
(merge dd61cc1c2e jk/ui-color-always-to-auto later to maint).
(merge 1e83b9bfdd sb/trailers-docfix later to maint).
(merge ab29f1b329 sg/fast-import-dump-refs-on-checkpoint-fix later to maint).
(merge 6a8ad880f0 jn/subtree-test-fixes later to maint).
(merge ffbd51cc60 nd/pack-objects-threading-doc later to maint).
(merge e9dac7be60 es/mw-to-git-chain-fix later to maint).
(merge fe583c6c7a rs/remote-mv-leakfix later to maint).
(merge 69885ab015 en/t3031-title-fix later to maint).
(merge 8578037bed nd/config-blame-sort later to maint).
(merge 8ad169c4ba hn/config-in-code-comment later to maint).
(merge b7446fcfdf ar/t4150-am-scissors-test-fix later to maint).
(merge a8132410ee js/typofixes later to maint).
(merge 388d0ff6e5 en/update-index-doc later to maint).
(merge e05aa688dd jc/update-index-doc later to maint).
(merge 10c600172c sg/t5310-empty-input-fix later to maint).
(merge 5641eb9465 jh/partial-clone-doc later to maint).
(merge 2711b1ad5e ab/submodule-relative-url-tests later to maint).
(merge ce528de023 ab/unconditional-free-and-null later to maint).
(merge bbc072f5d8 rs/opt-updates later to maint).
(merge 69d846f053 jk/use-compat-util-in-test-tool later to maint).
(merge 1820703045 js/larger-timestamps later to maint).
(merge c8b35b95e1 sg/t4051-fix later to maint).
(merge 30612cb670 sg/t0020-conversion-fix later to maint).
(merge 15da753709 sg/t7501-thinkofix later to maint).
(merge 79b04f9b60 sg/t3903-missing-fix later to maint).
(merge 2745817028 sg/t3420-autostash-fix later to maint).
(merge 7afb0d6777 sg/test-rebase-editor-fix later to maint).
(merge 6c6ce21baa es/freebsd-iconv-portability later to maint).
----------------------------------------------------------------
Changes since v2.18.0 are as follows:
Aaron Schrab (1):
sequencer: use configured comment character
Alban Gruin (4):
rebase: introduce a dedicated backend for --preserve-merges
rebase: strip unused code in git-rebase--preserve-merges.sh
rebase: use the new git-rebase--preserve-merges.sh
rebase: remove -p code from git-rebase--interactive.sh
Alejandro R. Sedeño (1):
Makefile: tweak sed invocation
Aleksandr Makarov (1):
for-each-ref: consistently pass WM_IGNORECASE flag
Alexander Shopov (1):
l10n: bg.po: Updated Bulgarian translation (3958t)
Andrei Rybak (2):
Documentation: fix --color option formatting
t4150: fix broken test for am --scissors
Anthony Sottile (1):
config.c: fix regression for core.safecrlf false
Antonio Ospite (6):
config: move config_from_gitmodules to submodule-config.c
submodule-config: add helper function to get 'fetch' config from .gitmodules
submodule-config: add helper to get 'update-clone' config from .gitmodules
submodule-config: make 'config_from_gitmodules' private
submodule-config: pass repository as argument to config_from_gitmodules
submodule-config: reuse config_from_gitmodules in repo_read_gitmodules
Beat Bolli (10):
builtin/config: work around an unsized array forward declaration
unicode: update the width tables to Unicode 11
connect.h: avoid forward declaration of an enum
refs/refs-internal.h: avoid forward declaration of an enum
convert.c: replace "\e" escapes with "\033".
sequencer.c: avoid empty statements at top level
string-list.c: avoid conversion from void * to function pointer
utf8.c: avoid char overflow
Makefile: add a DEVOPTS flag to get pedantic compilation
packfile: ensure that enum object_type is defined
Ben Peart (3):
convert log_ref_write_fd() to use strbuf
handle lower case drive letters on Windows
t3507: add a testcase showing failure with sparse checkout
Brandon Williams (15):
commit: convert commit_graft_pos() to handle arbitrary repositories
commit: convert register_commit_graft to handle arbitrary repositories
commit: convert read_graft_file to handle arbitrary repositories
test-pkt-line: add unpack-sideband subcommand
docs: link to gitsubmodules
upload-pack: implement ref-in-want
upload-pack: test negotiation with changing repository
fetch: refactor the population of peer ref OIDs
fetch: refactor fetch_refs into two functions
fetch: refactor to make function args narrower
fetch-pack: put shallow info in output parameter
fetch-pack: implement ref-in-want
clone: send ref-prefixes when using protocol v2
fetch-pack: mark die strings for translation
pack-protocol: mention and point to docs for protocol v2
Chen Bin (1):
git-p4: add the `p4-pre-submit` hook
Christian Couder (1):
t9104: kosherly remove remote refs
Christopher Díaz Riveros (1):
l10n: es.po v2.19.0 round 2
Derrick Stolee (46):
ref-filter: fix outdated comment on in_commit_list
commit: add generation number to struct commit
commit-graph: compute generation numbers
commit: use generations in paint_down_to_common()
commit-graph: always load commit-graph information
ref-filter: use generation number for --contains
commit: use generation numbers for in_merge_bases()
commit: add short-circuit to paint_down_to_common()
commit: use generation number in remove_redundant()
merge: check config before loading commits
commit-graph.txt: update design document
commit-graph: fix UX issue when .lock file exists
ewah/bitmap.c: delete unused 'bitmap_clear()'
ewah/bitmap.c: delete unused 'bitmap_each_bit()'
ewah_bitmap: delete unused 'ewah_and()'
ewah_bitmap: delete unused 'ewah_and_not()'
ewah_bitmap: delete unused 'ewah_not()'
ewah_bitmap: delete unused 'ewah_or()'
ewah_io: delete unused 'ewah_serialize()'
t5318-commit-graph.sh: use core.commitGraph
commit-graph: UNLEAK before die()
commit-graph: fix GRAPH_MIN_SIZE
commit-graph: parse commit from chosen graph
commit: force commit to parse from object database
commit-graph: load a root tree from specific graph
commit-graph: add 'verify' subcommand
commit-graph: verify catches corrupt signature
commit-graph: verify required chunks are present
commit-graph: verify corrupt OID fanout and lookup
commit-graph: verify objects exist
commit-graph: verify root tree OIDs
commit-graph: verify parent list
commit-graph: verify generation number
commit-graph: verify commit date
commit-graph: test for corrupted octopus edge
commit-graph: verify contents match checksum
fsck: verify commit-graph
commit-graph: use string-list API for input
commit-graph: add '--reachable' option
gc: automatically write commit-graph files
commit-graph: update design document
commit-graph: fix documentation inconsistencies
coccinelle: update commit.cocci
commit: use timestamp_t for author_date_slab
config: fix commit-graph related config docs
commit: don't use generation numbers if not needed
Dimitriy Ryazantcev (1):
l10n: ru.po: update Russian translation
Elia Pinto (1):
worktree: add --quiet option
Elijah Newren (66):
t6036, t6042: use test_create_repo to keep tests independent
t6036, t6042: use test_line_count instead of wc -l
t6036, t6042: prefer test_path_is_file, test_path_is_missing
t6036, t6042: prefer test_cmp to sequences of test
t6036: prefer test_when_finished to manual cleanup in following test
merge-recursive: fix miscellaneous grammar error in comment
merge-recursive: fix numerous argument alignment issues
merge-recursive: align labels with their respective code blocks
merge-recursive: clarify the rename_dir/RENAME_DIR meaning
merge-recursive: rename conflict_rename_*() family of functions
merge-recursive: add pointer about unduly complex looking code
git-rebase.txt: document incompatible options
git-rebase.sh: update help messages a bit
t3422: new testcases for checking when incompatible options passed
git-rebase: error out when incompatible options passed
git-rebase.txt: address confusion between --no-ff vs --force-rebase
directory-rename-detection.txt: technical docs on abilities and limitations
git-rebase.txt: document behavioral differences between modes
t3401: add directory rename testcases for rebase and am
git-rebase: make --allow-empty-message the default
t3418: add testcase showing problems with rebase -i and strategy options
Fix use of strategy options with interactive rebases
git-rebase--merge: modernize "git-$cmd" to "git $cmd"
apply: fix grammar error in comment
t5407: fix test to cover intended arguments
read-cache.c: move index_has_changes() from merge.c
index_has_changes(): avoid assuming operating on the_index
t6044: verify that merges expected to abort actually abort
t6036: add a failed conflict detection case with symlink modify/modify
t6036: add a failed conflict detection case with symlink add/add
t6036: add a failed conflict detection case with submodule modify/modify
t6036: add a failed conflict detection case with submodule add/add
t6036: add a failed conflict detection case with conflicting types
t6042: add testcase covering rename/add/delete conflict type
t6042: add testcase covering rename/rename(2to1)/delete/delete conflict
t6042: add testcase covering long chains of rename conflicts
t6036: add lots of detail for directory/file conflicts in recursive case
t6036: add a failed conflict detection case: regular files, different modes
t6044: add a testcase for index matching head, when head doesn't match HEAD
merge-recursive: make sure when we say we abort that we actually abort
merge-recursive: fix assumption that head tree being merged is HEAD
t6044: add more testcases with staged changes before a merge is invoked
merge-recursive: enforce rule that index matches head before merging
merge: fix misleading pre-merge check documentation
t7405: add a file/submodule conflict
t7405: add a directory/submodule conflict
t7405: verify 'merge --abort' works after submodule/path conflicts
merge-recursive: preserve skip_worktree bit when necessary
t1015: demonstrate directory/file conflict recovery failures
read-cache: fix directory/file conflict handling in read_index_unmerged()
t3031: update test description to mention desired behavior
t7406: fix call that was failing for the wrong reason
t7406: simplify by using diff --name-only instead of diff --raw
t7406: avoid having git commands upstream of a pipe
t7406: prefer test_* helper functions to test -[feds]
t7406: avoid using test_must_fail for commands other than git
git-update-index.txt: reword possibly confusing example
Add missing includes and forward declarations
alloc: make allocate_alloc_state and clear_alloc_state more consistent
Move definition of enum branch_track from cache.h to branch.h
urlmatch.h: fix include guard
compat/precompose_utf8.h: use more common include guard style
Remove forward declaration of an enum
t3401: add another directory rename testcase for rebase and am
merge-recursive: add ability to turn off directory rename detection
am: avoid directory rename detection when calling recursive merge machinery
Eric Sunshine (55):
t: use test_might_fail() instead of manipulating exit code manually
t: use test_write_lines() instead of series of 'echo' commands
t: use sane_unset() rather than 'unset' with broken &&-chain
t: drop unnecessary terminating semicolon in subshell
t/lib-submodule-update: fix "absorbing" test
t5405: use test_must_fail() instead of checking exit code manually
t5406: use write_script() instead of birthing shell script manually
t5505: modernize and simplify hard-to-digest test
t6036: fix broken "merge fails but has appropriate contents" tests
t7201: drop pointless "exit 0" at end of subshell
t7400: fix broken "submodule add/reconfigure --force" test
t7810: use test_expect_code() instead of hand-rolled comparison
t9001: fix broken "invoke hook" test
t9814: simplify convoluted check that command correctly errors out
t0000-t0999: fix broken &&-chains
t1000-t1999: fix broken &&-chains
t2000-t2999: fix broken &&-chains
t3000-t3999: fix broken &&-chains
t3030: fix broken &&-chains
t4000-t4999: fix broken &&-chains
t5000-t5999: fix broken &&-chains
t6000-t6999: fix broken &&-chains
t7000-t7999: fix broken &&-chains
t9000-t9999: fix broken &&-chains
t9119: fix broken &&-chains
t6046/t9833: fix use of "VAR=VAL cmd" with a shell function
t/check-non-portable-shell: stop being so polite
t/check-non-portable-shell: make error messages more compact
t/check-non-portable-shell: detect "FOO=bar shell_func"
t/test-lib: teach --chain-lint to detect broken &&-chains in subshells
t/Makefile: add machinery to check correctness of chainlint.sed
t/chainlint: add chainlint "basic" test cases
t/chainlint: add chainlint "whitespace" test cases
t/chainlint: add chainlint "one-liner" test cases
t/chainlint: add chainlint "nested subshell" test cases
t/chainlint: add chainlint "loop" and "conditional" test cases
t/chainlint: add chainlint "cuddled" test cases
t/chainlint: add chainlint "complex" test cases
t/chainlint: add chainlint "specialized" test cases
diff: --color-moved: rename "dimmed_zebra" to "dimmed-zebra"
mw-to-git/t9360: fix broken &&-chain
t/chainlint.sed: drop extra spaces from regex character class
sequencer: fix "rebase -i --root" corrupting author header
sequencer: fix "rebase -i --root" corrupting author header timezone
sequencer: fix "rebase -i --root" corrupting author header timestamp
sequencer: don't die() on bogus user-edited timestamp
color: protect against out-of-bounds reads and writes
chainlint: match arbitrary here-docs tags rather than hard-coded names
chainlint: match 'quoted' here-doc tags
chainlint: recognize multi-line $(...) when command cuddled with "$("
chainlint: let here-doc and multi-line string commence on same line
chainlint: recognize multi-line quoted strings more robustly
chainlint: add test of pathological case which triggered false positive
chainlint: match "quoted" here-doc tags
config.mak.uname: resolve FreeBSD iconv-related compilation warning
Han-Wen Nienhuys (2):
config: document git config getter return value
sideband: highlight keywords in remote sideband output
Henning Schild (9):
builtin/receive-pack: use check_signature from gpg-interface
gpg-interface: make parse_gpg_output static and remove from interface header
gpg-interface: add new config to select how to sign a commit
t/t7510: check the validation of the new config gpg.format
gpg-interface: introduce an abstraction for multiple gpg formats
gpg-interface: do not hardcode the key string len anymore
gpg-interface: introduce new config to select per gpg format program
gpg-interface: introduce new signature format "x509" using gpgsm
gpg-interface t: extend the existing GPG tests with GPGSM
Isabella Stephens (2):
blame: prevent error if range ends past end of file
log: prevent error if line range ends past end of file
Jameson Miller (8):
read-cache: teach refresh_cache_entry to take istate
read-cache: teach make_cache_entry to take object_id
block alloc: add lifecycle APIs for cache_entry structs
mem-pool: only search head block for available space
mem-pool: add life cycle management functions
mem-pool: fill out functionality
block alloc: allocate cache entries from mem_pool
block alloc: add validations around cache_entry lifecyle
Jean-Noël Avila (3):
i18n: fix mistakes in translated strings
l10n: fr.po v2.19.0 rnd 1
l10n: fr.po v2.19.0 rnd 2
Jeff Hostetler (1):
json_writer: new routines to create JSON data
Jeff King (50):
make show-index a builtin
show-index: update documentation for index v2
fetch-pack: don't try to fetch peel values with --all
ewah: drop ewah_deserialize function
ewah: drop ewah_serialize_native function
t3200: unset core.logallrefupdates when testing reflog creation
t: switch "branch -l" to "branch --create-reflog"
branch: deprecate "-l" option
config: turn die_on_error into caller-facing enum
config: add CONFIG_ERROR_SILENT handler
config: add options parameter to git_config_from_mem
fsck: silence stderr when parsing .gitmodules
t6300: add a test for --ignore-case
ref-filter: avoid backend filtering with --ignore-case
t5500: prettify non-commit tag tests
sequencer: handle empty-set cases consistently
sequencer: don't say BUG on bogus input
has_uncommitted_changes(): fall back to empty tree
fsck: split ".gitmodules too large" error from parse failure
fsck: downgrade gitmodulesParse default to "info"
blame: prefer xsnprintf to strcpy for colors
check_replace_refs: fix outdated comment
check_replace_refs: rename to read_replace_refs
add core.usereplacerefs config option
reencode_string: use st_add/st_mult helpers
reencode_string: use size_t for string lengths
strbuf: use size_t for length in intermediate variables
strbuf_readlink: use ssize_t
pass st.st_size as hint for strbuf_readlink()
strbuf_humanise: use unsigned variables
automatically ban strcpy()
banned.h: mark strcat() as banned
banned.h: mark sprintf() as banned
banned.h: mark strncpy() as banned
score_trees(): fix iteration over trees with missing entries
add a script to diff rendered documentation
t5552: suppress upload-pack trace output
for_each_*_object: store flag definitions in a single location
for_each_*_object: take flag arguments as enum
for_each_*_object: give more comprehensive docstrings
for_each_packed_object: support iterating in pack-order
t1006: test cat-file --batch-all-objects with duplicates
cat-file: rename batch_{loose,packed}_object callbacks
cat-file: support "unordered" output for --batch-all-objects
cat-file: use oidset check-and-insert
cat-file: split batch "buf" into two variables
cat-file: use a single strbuf for all output
for_each_*_object: move declarations to object-store.h
test-tool.h: include git-compat-util.h
hashcmp: assert constant hash size
Jiang Xin (4):
l10n: zh_CN: review for git 2.18.0
l10n: git.pot: v2.19.0 round 1 (382 new, 30 removed)
l10n: git.pot: v2.19.0 round 2 (3 new, 5 removed)
l10n: zh_CN: for git v2.19.0 l10n round 1 to 2
Johannes Schindelin (41):
Makefile: fix the "built from commit" code
merge: allow reading the merge commit message from a file
rebase --rebase-merges: add support for octopus merges
rebase --rebase-merges: adjust man page for octopus support
vcbuild/README: update to accommodate for missing common-cmds.h
t7406: avoid failures solely due to timing issues
contrib: add a script to initialize VS Code configuration
vscode: hard-code a couple defines
cache.h: extract enum declaration from inside a struct declaration
mingw: define WIN32 explicitly
vscode: only overwrite C/C++ settings
vscode: wrap commit messages at column 72 by default
vscode: use 8-space tabs, no trailing ws, etc for Git's source code
vscode: add a dictionary for cSpell
vscode: let cSpell work on commit messages, too
pull --rebase=<type>: allow single-letter abbreviations for the type
t3430: demonstrate what -r, --autosquash & --exec should do
git-compat-util.h: fix typo
remote-curl: remove spurious period
rebase --exec: make it work with --rebase-merges
linear-assignment: a function to solve least-cost assignment problems
Introduce `range-diff` to compare iterations of a topic branch
range-diff: first rudimentary implementation
range-diff: improve the order of the shown commits
range-diff: also show the diff between patches
range-diff: right-trim commit messages
range-diff: indent the diffs just like tbdiff
range-diff: suppress the diff headers
range-diff: adjust the output of the commit pairs
range-diff: do not show "function names" in hunk headers
range-diff: use color for the commit pairs
color: add the meta color GIT_COLOR_REVERSE
diff: add an internal option to dual-color diffs of diffs
range-diff: offer to dual-color the diffs
range-diff --dual-color: skip white-space warnings
range-diff: populate the man page
completion: support `git range-diff`
range-diff: left-pad patch numbers
range-diff: make --dual-color the default mode
range-diff: use dim/bold cues to improve dual color mode
chainlint: fix for core.autocrlf=true
Johannes Sixt (1):
mingw: enable atomic O_APPEND
Jonathan Nieder (12):
object: add repository argument to grow_object_hash
object: move grafts to object parser
commit: add repository argument to commit_graft_pos
commit: add repository argument to register_commit_graft
commit: add repository argument to read_graft_file
commit: add repository argument to prepare_commit_graft
commit: add repository argument to lookup_commit_graft
subtree test: add missing && to &&-chain
subtree test: simplify preparation of expected results
doc hash-function-transition: pick SHA-256 as NewHash
partial-clone: render design doc using asciidoc
Revert "Merge branch 'sb/submodule-core-worktree'"
Jonathan Tan (28):
list-objects: check if filter is NULL before using
fetch-pack: split up everything_local()
fetch-pack: clear marks before re-marking
fetch-pack: directly end negotiation if ACK ready
fetch-pack: use ref adv. to prune "have" sent
fetch-pack: make negotiation-related vars local
fetch-pack: move common check and marking together
fetch-pack: introduce negotiator API
pack-bitmap: remove bitmap_git global variable
pack-bitmap: add free function
fetch-pack: write shallow, then check connectivity
fetch-pack: support negotiation tip whitelist
upload-pack: send refs' objects despite "filter"
clone: check connectivity even if clone is partial
revision: tolerate promised targets of tags
tag: don't warn if target is missing but promised
negotiator/skipping: skip commits during fetch
commit-graph: refactor preparing commit graph
object-store: add missing include
commit-graph: add missing forward declaration
commit-graph: add free_commit_graph
commit-graph: store graph in struct object_store
commit-graph: add repo arg to graph readers
t5702: test fetch with multiple refspecs at a time
fetch: send "refs/tags/" prefix upon CLI refspecs
fetch-pack: unify ref in and out param
repack: refactor setup of pack-objects cmd
repack: repack promisor objects if -a or -A is set
Josh Steadmon (1):
protocol-v2 doc: put HTTP headers after request
Jules Maselbas (1):
send-email: fix tls AUTH when sending batch
Junio C Hamano (23):
tests: clean after SANITY tests
ewah: delete unused 'rlwit_discharge_empty()'
Prepare to start 2.19 cycle
First batch for 2.19 cycle
Second batch for 2.19 cycle
fixup! connect.h: avoid forward declaration of an enum
fixup! refs/refs-internal.h: avoid forward declaration of an enum
t3404: fix use of "VAR=VAL cmd" with a shell function
Third batch for 2.19 cycle
Fourth batch for 2.19 cycle
remote: make refspec follow the same disambiguation rule as local refs
Fifth batch for 2.19 cycle
update-index: there no longer is `apply --index-info`
gpg-interface: propagate exit status from gpg back to the callers
Sixth batch for 2.19 cycle
config.txt: clarify core.checkStat
Seventh batch for 2.19 cycle
sideband: do not read beyond the end of input
Git 2.19-rc0
Getting ready for -rc1
Git 2.19-rc1
Git 2.19-rc2
Git 2.19
Kana Natsuno (2):
t4018: add missing test cases for PHP
userdiff: support new keywords in PHP hunk header
Kim Gybels (1):
gc --auto: release pack files before auto packing
Kirill Smelkov (1):
fetch-pack: test explicitly that --all can fetch tag references pointing to non-commits
Kyle Meyer (1):
range-diff: update stale summary of --no-dual-color
Luis Marsano (2):
git-credential-netrc: use in-tree Git.pm for tests
git-credential-netrc: fix exit status when tests fail
Luke Diamand (6):
git-p4: python3: replace <> with !=
git-p4: python3: replace dict.has_key(k) with "k in dict"
git-p4: python3: remove backticks
git-p4: python3: basestring workaround
git-p4: python3: use print() function
git-p4: python3: fix octal constants
Marc Strapetz (1):
Documentation: declare "core.ignoreCase" as internal variable
Martin Ågren (1):
refspec: initalize `refspec_item` in `valid_fetch_refspec()`
Masaya Suzuki (2):
builtin/send-pack: populate the default configs
doc: fix want-capability separator
Max Kirillov (5):
http-backend: cleanup writing to child process
http-backend: respect CONTENT_LENGTH as specified by rfc3875
unpack-trees: do not fail reset because of unmerged skipped entry
http-backend: respect CONTENT_LENGTH for receive-pack
http-backend: allow empty CONTENT_LENGTH
Michael Barabanov (1):
filter-branch: skip commits present on --state-branch
Mike Hommey (1):
fast-import: do not call diff_delta() with empty buffer
Nguyễn Thái Ngọc Duy (100):
commit-slab.h: code split
commit-slab: support shared commit-slab
blame: use commit-slab for blame suspects instead of commit->util
describe: use commit-slab for commit names instead of commit->util
shallow.c: use commit-slab for commit depth instead of commit->util
sequencer.c: use commit-slab to mark seen commits
sequencer.c: use commit-slab to associate todo items to commits
revision.c: use commit-slab for show_source
bisect.c: use commit-slab for commit weight instead of commit->util
name-rev: use commit-slab for rev-name instead of commit->util
show-branch: use commit-slab for commit-name instead of commit->util
show-branch: note about its object flags usage
log: use commit-slab in prepare_bases() instead of commit->util
merge: use commit-slab in merge remote desc instead of commit->util
commit.h: delete 'util' field in struct commit
diff: ignore --ita-[in]visible-in-index when diffing worktree-to-tree
diff: turn --ita-invisible-in-index on by default
t2203: add a test about "diff HEAD" case
apply: add --intent-to-add
parse-options: option to let --git-completion-helper show negative form
completion: suppress some -no- options
Add and use generic name->id mapping code for color slot parsing
grep: keep all colors in an array
fsck: factor out msg_id_info[] lazy initialization code
help: add --config to list all available config
fsck: produce camelCase config key names
advice: keep config name in camelCase in advice_config[]
am: move advice.amWorkDir parsing back to advice.c
completion: drop the hard coded list of config vars
completion: keep other config var completion in camelCase
completion: support case-insensitive config vars
log-tree: allow to customize 'grafted' color
completion: complete general config vars in two steps
upload-pack: reject shallow requests that would return nothing
completion: collapse extra --no-.. options
pack-objects: fix performance issues on packing large deltas
Update messages in preparation for i18n
archive-tar.c: mark more strings for translation
archive-zip.c: mark more strings for translation
builtin/config.c: mark more strings for translation
builtin/grep.c: mark strings for translation
builtin/pack-objects.c: mark more strings for translation
builtin/replace.c: mark more strings for translation
commit-graph.c: mark more strings for translation
config.c: mark more strings for translation
connect.c: mark more strings for translation
convert.c: mark more strings for translation
dir.c: mark more strings for translation
environment.c: mark more strings for translation
exec-cmd.c: mark more strings for translation
object.c: mark more strings for translation
pkt-line.c: mark more strings for translation
refs.c: mark more strings for translation
refspec.c: mark more strings for translation
replace-object.c: mark more strings for translation
sequencer.c: mark more strings for translation
sha1-file.c: mark more strings for translation
transport.c: mark more strings for translation
transport-helper.c: mark more strings for translation
pack-objects: document about thread synchronization
apply.h: drop extern on func declaration
attr.h: drop extern from function declaration
blame.h: drop extern on func declaration
cache-tree.h: drop extern from function declaration
convert.h: drop 'extern' from function declaration
diffcore.h: drop extern from function declaration
diff.h: remove extern from function declaration
line-range.h: drop extern from function declaration
rerere.h: drop extern from function declaration
repository.h: drop extern from function declaration
revision.h: drop extern from function declaration
submodule.h: drop extern from function declaration
config.txt: reorder blame stuff to keep config keys sorted
Makefile: add missing dependency for command-list.h
diff.c: move read_index() code back to the caller
cache-tree: wrap the_index based wrappers with #ifdef
attr: remove an implicit dependency on the_index
convert.c: remove an implicit dependency on the_index
dir.c: remove an implicit dependency on the_index in pathspec code
preload-index.c: use the right index instead of the_index
ls-files: correct index argument to get_convert_attr_ascii()
unpack-trees: remove 'extern' on function declaration
unpack-trees: add a note about path invalidation
unpack-trees: don't shadow global var the_index
unpack-trees: convert clear_ce_flags* to avoid the_index
unpack-trees: avoid the_index in verify_absent()
pathspec.c: use the right index instead of the_index
submodule.c: use the right index instead of the_index
entry.c: use the right index instead of the_index
attr: remove index from git_attr_set_direction()
grep: use the right index instead of the_index
archive.c: avoid access to the_index
archive-*.c: use the right repository
resolve-undo.c: use the right index instead of the_index
apply.c: pass struct apply_state to more functions
apply.c: make init_apply_state() take a struct repository
apply.c: remove implicit dependency on the_index
blame.c: remove implicit dependency on the_index
cherry-pick: fix --quit not deleting CHERRY_PICK_HEAD
generate-cmdlist.sh: collect config from all config.txt files
Nicholas Guriev (1):
mergetool: don't suggest to continue after last file
Olga Telezhnaya (5):
ref-filter: add info_source to valid_atom
ref-filter: fill empty fields with empty values
ref-filter: initialize eaten variable
ref-filter: merge get_obj and get_object
ref-filter: use oid_object_info() to get object
Peter Krefting (2):
l10n: sv.po: Update Swedish translation(3608t0f0u)
l10n: sv.po: Update Swedish translation (3958t0f0u)
Phillip Wood (7):
add -p: fix counting empty context lines in edited patches
sequencer: do not squash 'reword' commits when we hit conflicts
sequencer: handle errors from read_author_ident()
sequencer: fix quoting in write_author_script
rebase -i: fix numbering in squash message
t3430: add conflicting commit
rebase -i: fix SIGSEGV when 'merge <branch>' fails
Prathamesh Chavan (4):
submodule foreach: correct '$path' in nested submodules from a subdirectory
submodule foreach: document '$sm_path' instead of '$path'
submodule foreach: document variable '$displaypath'
submodule: port submodule subcommand 'foreach' from shell to C
Ralf Thielow (1):
l10n: de.po: translate 108 new messages
Ramsay Jones (3):
fsck: check skiplist for object in fsck_blob()
t6036: fix broken && chain in sub-shell
t5562: avoid non-portable "export FOO=bar" construct
Raphaël Hertzog (1):
l10n: fr: fix a message seen in git bisect
René Scharfe (10):
remote: clear string_list after use in mv()
add, update-index: fix --chmod argument help
difftool: remove angular brackets from argument help
pack-objects: specify --index-version argument help explicitly
send-pack: specify --force-with-lease argument help explicitly
shortlog: correct option help for -w
parse-options: automatically infer PARSE_OPT_LITERAL_ARGHELP
checkout-index: improve argument help for --stage
remote: improve argument help for add --mirror
parseopt: group literal string alternatives in argument help
SZEDER Gábor (30):
update-ref --stdin: use skip_prefix()
t7510-signed-commit: use 'test_must_fail'
tests: make forging GPG signed commits and tags more robust
t5541: clean up truncating access log
t/lib-httpd: add the strip_access_log() helper function
t/lib-httpd: avoid occasional failures when checking access.log
t5608: fix broken &&-chain
t9300: wait for background fast-import process to die after killing it
travis-ci: run Coccinelle static analysis with two parallel jobs
travis-ci: fail if Coccinelle static analysis found something to transform
coccinelle: mark the 'coccicheck' make target as .PHONY
coccinelle: use $(addsuffix) in 'coccicheck' make target
coccinelle: exclude sha1dc source files from static analysis
coccinelle: put sane filenames into output patches
coccinelle: extract dedicated make target to clean Coccinelle's results
travis-ci: include the trash directories of failed tests in the trace log
t5318: use 'test_cmp_bin' to compare commit-graph files
t5318: avoid unnecessary command substitutions
t5310-pack-bitmaps: fix bogus 'pack-objects to file can use bitmap' test
tests: use 'test_must_be_empty' instead of '! test -s'
tests: use 'test_must_be_empty' instead of 'test ! -s'
tests: use 'test_must_be_empty' instead of 'test_cmp /dev/null <out>'
tests: use 'test_must_be_empty' instead of 'test_cmp <empty> <out>'
t7501-commit: drop silly command substitution
t0020-crlf: check the right file
t4051-diff-function-context: read the right file
t6018-rev-list-glob: fix 'empty stdin' test
t3903-stash: don't try to grep non-existing file
t3420-rebase-autostash: don't try to grep non-existing files
t/lib-rebase.sh: support explicit 'pick' commands in 'fake_editor.sh'
Samuel Maftoul (1):
branch: support configuring --sort via .gitconfig
Sebastian Kisela (2):
git-instaweb: support Fedora/Red Hat apache module path
git-instaweb: fix apache2 config with apache >= 2.4
Stefan Beller (87):
repository: introduce parsed objects field
object: add repository argument to create_object
alloc: add repository argument to alloc_blob_node
alloc: add repository argument to alloc_tree_node
alloc: add repository argument to alloc_commit_node
alloc: add repository argument to alloc_tag_node
alloc: add repository argument to alloc_object_node
alloc: add repository argument to alloc_report
alloc: add repository argument to alloc_commit_index
object: allow grow_object_hash to handle arbitrary repositories
object: allow create_object to handle arbitrary repositories
alloc: allow arbitrary repositories for alloc functions
object-store: move object access functions to object-store.h
shallow: add repository argument to set_alternate_shallow_file
shallow: add repository argument to register_shallow
shallow: add repository argument to check_shallow_file_for_update
shallow: add repository argument to is_repository_shallow
cache: convert get_graft_file to handle arbitrary repositories
path.c: migrate global git_path_* to take a repository argument
shallow: migrate shallow information into the object parser
commit: allow prepare_commit_graft to handle arbitrary repositories
commit: allow lookup_commit_graft to handle arbitrary repositories
refs/packed-backend.c: close fd of empty file
submodule--helper: plug mem leak in print_default_remote
sequencer.c: plug leaks in do_pick_commit
submodule: fix NULL correctness in renamed broken submodules
t5526: test recursive submodules when fetching moved submodules
submodule: unset core.worktree if no working tree is present
submodule: ensure core.worktree is set after update
submodule deinit: unset core.worktree
submodule.c: report the submodule that an error occurs in
sequencer.c: plug mem leak in git_sequencer_config
.mailmap: merge different spellings of names
object: add repository argument to parse_object
object: add repository argument to lookup_object
object: add repository argument to parse_object_buffer
object: add repository argument to object_as_type
blob: add repository argument to lookup_blob
tree: add repository argument to lookup_tree
commit: add repository argument to lookup_commit_reference_gently
commit: add repository argument to lookup_commit_reference
commit: add repository argument to lookup_commit
commit: add repository argument to parse_commit_buffer
commit: add repository argument to set_commit_buffer
commit: add repository argument to get_cached_commit_buffer
tag: add repository argument to lookup_tag
tag: add repository argument to parse_tag_buffer
tag: add repository argument to deref_tag
object: allow object_as_type to handle arbitrary repositories
object: allow lookup_object to handle arbitrary repositories
blob: allow lookup_blob to handle arbitrary repositories
tree: allow lookup_tree to handle arbitrary repositories
commit: allow lookup_commit to handle arbitrary repositories
tag: allow lookup_tag to handle arbitrary repositories
tag: allow parse_tag_buffer to handle arbitrary repositories
commit.c: allow parse_commit_buffer to handle arbitrary repositories
commit-slabs: remove realloc counter outside of slab struct
commit.c: migrate the commit buffer to the parsed object store
commit.c: allow set_commit_buffer to handle arbitrary repositories
commit.c: allow get_cached_commit_buffer to handle arbitrary repositories
object.c: allow parse_object_buffer to handle arbitrary repositories
object.c: allow parse_object to handle arbitrary repositories
tag.c: allow deref_tag to handle arbitrary repositories
commit.c: allow lookup_commit_reference_gently to handle arbitrary repositories
commit.c: allow lookup_commit_reference to handle arbitrary repositories
xdiff/xdiff.h: remove unused flags
xdiff/xdiffi.c: remove unneeded function declarations
t4015: avoid git as a pipe input
diff.c: do not pass diff options as keydata to hashmap
diff.c: adjust hash function signature to match hashmap expectation
diff.c: add a blocks mode for moved code detection
diff.c: decouple white space treatment from move detection algorithm
diff.c: factor advance_or_nullify out of mark_color_as_moved
diff.c: add white space mode to move detection that allows indent changes
diff.c: offer config option to control ws handling in move detection
xdiff/xhistogram: pass arguments directly to fall_back_to_classic_diff
xdiff/xhistogram: factor out memory cleanup into free_index()
xdiff/xhistogram: move index allocation into find_lcs
Documentation/git-interpret-trailers: explain possible values
xdiff/histogram: remove tail recursion
t1300: document current behavior of setting options
xdiff: reduce indent heuristic overhead
config: fix case sensitive subsection names on writing
git-config: document accidental multi-line setting in deprecated syntax
git-submodule.sh: accept verbose flag in cmd_update to be non-quiet
t7410: update to new style
builtin/submodule--helper: remove stray new line
Taylor Blau (9):
Documentation/config.txt: camel-case lineNumber for consistency
grep.c: expose {,inverted} match column in match_line()
grep.[ch]: extend grep_opt to allow showing matched column
grep.c: display column number of first match
builtin/grep.c: add '--column' option to 'git-grep(1)'
grep.c: add configuration variables to show matched option
contrib/git-jump/git-jump: jump to exact location
grep.c: extract show_line_header()
grep.c: teach 'git grep --only-matching'
Thomas Rast (1):
range-diff: add tests
Tobias Klauser (1):
git-rebase--preserve-merges: fix formatting of todo help message
Todd Zullinger (4):
git-credential-netrc: minor whitespace cleanup in test script
git-credential-netrc: make "all" default target of Makefile
gitignore.txt: clarify default core.excludesfile path
dir.c: fix typos in core.excludesfile comment
Trần Ngọc Quân (1):
l10n: vi.po(3958t): updated Vietnamese translation v2.19.0 round 2
Ville Skyttä (1):
Documentation: spelling and grammar fixes
Vladimir Parfinenko (1):
rebase: fix documentation formatting
William Chargin (2):
sha1-name.c: for ":/", find detached HEAD commits
t: factor out FUNNYNAMES as shared lazy prereq
Xiaolong Ye (1):
format-patch: clear UNINTERESTING flag before prepare_bases
brian m. carlson (21):
send-email: add an auto option for transfer encoding
send-email: accept long lines with suitable transfer encoding
send-email: automatically determine transfer-encoding
docs: correct RFC specifying email line length
sequencer: pass absolute GIT_WORK_TREE to exec commands
cache: update object ID functions for the_hash_algo
tree-walk: replace hard-coded constants with the_hash_algo
hex: switch to using the_hash_algo
commit: express tree entry constants in terms of the_hash_algo
strbuf: allocate space with GIT_MAX_HEXSZ
sha1-name: use the_hash_algo when parsing object names
refs/files-backend: use the_hash_algo for writing refs
builtin/update-index: convert to using the_hash_algo
builtin/update-index: simplify parsing of cacheinfo
builtin/fmt-merge-msg: make hash independent
builtin/merge: switch to use the_hash_algo
builtin/merge-recursive: make hash independent
diff: switch GIT_SHA1_HEXSZ to use the_hash_algo
log-tree: switch GIT_SHA1_HEXSZ to the_hash_algo->hexsz
sha1-file: convert constants to uses of the_hash_algo
pretty: switch hard-coded constants to the_hash_algo
Ævar Arnfjörð Bjarmason (45):
checkout tests: index should be clean after dwim checkout
checkout.h: wrap the arguments to unique_tracking_name()
checkout.c: introduce an *_INIT macro
checkout.c: change "unique" member to "num_matches"
checkout: pass the "num_matches" up to callers
builtin/checkout.c: use "ret" variable for return
checkout: add advice for ambiguous "checkout <branch>"
checkout & worktree: introduce checkout.defaultRemote
refspec: s/refspec_item_init/&_or_die/g
refspec: add back a refspec_item_init() function
doc hash-function-transition: note the lack of a changelog
receive.fsck.<msg-id> tests: remove dead code
config doc: don't describe *.fetchObjects twice
config doc: unify the description of fsck.* and receive.fsck.*
config doc: elaborate on what transfer.fsckObjects does
config doc: elaborate on fetch.fsckObjects security
transfer.fsckObjects tests: untangle confusing setup
fetch: implement fetch.fsck.*
fsck: test & document {fetch,receive}.fsck.* config fallback
fsck: add stress tests for fsck.skipList
fsck: test and document unknown fsck.<msg-id> values
tests: make use of the test_must_be_empty function
tests: make use of the test_must_be_empty function
fetch tests: change "Tag" test tag to "testTag"
push tests: remove redundant 'git push' invocation
push tests: fix logic error in "push" test assertion
push tests: add more testing for forced tag pushing
push tests: assert re-pushing annotated tags
negotiator: unknown fetch.negotiationAlgorithm should error out
fetch doc: cross-link two new negotiation options
sha1dc: update from upstream
push: use PARSE_OPT_LITERAL_ARGHELP instead of unbalanced brackets
fetch tests: correct a comment "remove it" -> "remove them"
pull doc: fix a long-standing grammar error
submodule: add more exhaustive up-path testing
refactor various if (x) FREE_AND_NULL(x) to just FREE_AND_NULL(x)
t2024: mark test using "checkout -p" with PERL prerequisite
tests: fix and add lint for non-portable head -c N
tests: fix and add lint for non-portable seq
tests: fix comment syntax in chainlint.sed for AIX sed
tests: use shorter labels in chainlint.sed for AIX sed
tests: fix version-specific portability issue in Perl JSON
tests: fix and add lint for non-portable grep --file
tests: fix non-portable "${var:-"str"}" construct
tests: fix non-portable iconv invocation
Łukasz Stelmach (1):
completion: complete remote names too
^ permalink raw reply [relevance 3%]
* [ANNOUNCE] Git v2.19.0-rc0
@ 2018-08-20 22:13 3% Junio C Hamano
0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2018-08-20 22:13 UTC (permalink / raw)
To: git; +Cc: Linux Kernel, git-packagers
An early preview release Git v2.19.0-rc0 is now available for
testing at the usual places. It is comprised of 707 non-merge
commits since v2.18.0, contributed by 60 people, 14 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.19.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.18.0 are as follows.
Welcome to the Git development community!
Aleksandr Makarov, Andrei Rybak, Chen Bin, Henning Schild,
Isabella Stephens, Josh Steadmon, Jules Maselbas, Kana Natsuno,
Marc Strapetz, Masaya Suzuki, Nicholas Guriev, Sebastian Kisela,
Vladimir Parfinenko, and William Chargin.
Returning contributors who helped this release are as follows.
Thanks for your continued support.
Aaron Schrab, Ævar Arnfjörð Bjarmason, Alban Gruin, Alejandro
R. Sedeño, Anthony Sottile, Antonio Ospite, Beat Bolli, Ben
Peart, Brandon Williams, brian m. carlson, Christian Couder,
Derrick Stolee, Elijah Newren, Eric Sunshine, Han-Wen Nienhuys,
Jameson Miller, Jeff Hostetler, Jeff King, Johannes Schindelin,
Johannes Sixt, Jonathan Nieder, Jonathan Tan, Junio C Hamano,
Kim Gybels, Kirill Smelkov, Luis Marsano, Łukasz Stelmach,
Luke Diamand, Martin Ågren, Max Kirillov, Michael Barabanov,
Mike Hommey, Nguyễn Thái Ngọc Duy, Olga Telezhnaya,
Phillip Wood, Prathamesh Chavan, Ramsay Jones, René Scharfe,
Stefan Beller, SZEDER Gábor, Taylor Blau, Thomas Rast, Tobias
Klauser, Todd Zullinger, Ville Skyttä, and Xiaolong Ye.
----------------------------------------------------------------
Git 2.19 Release Notes (draft)
==============================
Updates since v2.18
-------------------
UI, Workflows & Features
* "git diff" compares the index and the working tree. For paths
added with intent-to-add bit, the command shows the full contents
of them as added, but the paths themselves were not marked as new
files. They are now shown as new by default.
"git apply" learned the "--intent-to-add" option so that an
otherwise working-tree-only application of a patch will add new
paths to the index marked with the "intent-to-add" bit.
* "git grep" learned the "--column" option that gives not just the
line number but the column number of the hit.
* The "-l" option in "git branch -l" is an unfortunate short-hand for
"--create-reflog", but many users, both old and new, somehow expect
it to be something else, perhaps "--list". This step warns when "-l"
is used as a short-hand for "--create-reflog" and warns about the
future repurposing of the it when it is used.
* The userdiff pattern for .php has been updated.
* The content-transfer-encoding of the message "git send-email" sends
out by default was 8bit, which can cause trouble when there is an
overlong line to bust RFC 5322/2822 limit. A new option 'auto' to
automatically switch to quoted-printable when there is such a line
in the payload has been introduced and is made the default.
* "git checkout" and "git worktree add" learned to honor
checkout.defaultRemote when auto-vivifying a local branch out of a
remote tracking branch in a repository with multiple remotes that
have tracking branches that share the same names.
(merge 8d7b558bae ab/checkout-default-remote later to maint).
* "git grep" learned the "--only-matching" option.
* "git rebase --rebase-merges" mode now handles octopus merges as
well.
* Add a server-side knob to skip commits in exponential/fibbonacci
stride in an attempt to cover wider swath of history with a smaller
number of iterations, potentially accepting a larger packfile
transfer, instead of going back one commit a time during common
ancestor discovery during the "git fetch" transaction.
(merge 42cc7485a2 jt/fetch-negotiator-skipping later to maint).
* A new configuration variable core.usereplacerefs has been added,
primarily to help server installations that want to ignore the
replace mechanism altogether.
* Teach "git tag -s" etc. a few configuration variables (gpg.format
that can be set to "openpgp" or "x509", and gpg.<format>.program
that is used to specify what program to use to deal with the format)
to allow x.509 certs with CMS via "gpgsm" to be used instead of
openpgp via "gnupg".
* Many more strings are prepared for l10n.
* "git p4 submit" learns to ask its own pre-submit hook if it should
continue with submitting.
* The test performed at the receiving end of "git push" to prevent
bad objects from entering repository can be customized via
receive.fsck.* configuration variables; we now have gained a
counterpart to do the same on the "git fetch" side, with
fetch.fsck.* configuration variables.
* "git pull --rebase=interactive" learned "i" as a short-hand for
"interactive".
* "git instaweb" has been adjusted to run better with newer Apache on
RedHat based distros.
* "git range-diff" is a reimplementation of "git tbdiff" that lets us
compare individual patches in two iterations of a topic.
* The sideband code learned to optionally paint selected keywords at
the beginning of incoming lines on the receiving end.
Performance, Internal Implementation, Development Support etc.
* The bulk of "git submodule foreach" has been rewritten in C.
* The in-core "commit" object had an all-purpose "void *util" field,
which was tricky to use especially in library-ish part of the
code. All of the existing uses of the field has been migrated to a
more dedicated "commit-slab" mechanism and the field is eliminated.
* A less often used command "git show-index" has been modernized.
(merge fb3010c31f jk/show-index later to maint).
* The conversion to pass "the_repository" and then "a_repository"
throughout the object access API continues.
* Continuing with the idea to programatically enumerate various
pieces of data required for command line completion, teach the
codebase to report the list of configuration variables
subcommands care about to help complete them.
* Separate "rebase -p" codepath out of "rebase -i" implementation to
slim down the latter and make it easier to manage.
* Make refspec parsing codepath more robust.
* Some flaky tests have been fixed.
* Continuing with the idea to programmatically enumerate various
pieces of data required for command line completion, the codebase
has been taught to enumerate options prefixed with "--no-" to
negate them.
* Build and test procedure for netrc credential helper (in contrib/)
has been updated.
* The conversion to pass "the_repository" and then "a_repository"
throughout the object access API continues.
* Remove unused function definitions and declarations from ewah
bitmap subsystem.
* Code preparation to make "git p4" closer to be usable with Python 3.
* Tighten the API to make it harder to misuse in-tree .gitmodules
file, even though it shares the same syntax with configuration
files, to read random configuration items from it.
* "git fast-import" has been updated to avoid attempting to create
delta against a zero-byte-long string, which is pointless.
* The codebase has been updated to compile cleanly with -pedantic
option.
(merge 2b647a05d7 bb/pedantic later to maint).
* The character display width table has been updated to match the
latest Unicode standard.
(merge 570951eea2 bb/unicode-11-width later to maint).
* test-lint now looks for broken use of "VAR=VAL shell_func" in test
scripts.
* Conversion from uchar[40] to struct object_id continues.
* Recent "security fix" to pay attention to contents of ".gitmodules"
while accepting "git push" was a bit overly strict than necessary,
which has been adjusted.
* "git fsck" learns to make sure the optional commit-graph file is in
a sane state.
* "git diff --color-moved" feature has further been tweaked.
* Code restructuring and a small fix to transport protocol v2 during
fetching.
* Parsing of -L[<N>][,[<M>]] parameters "git blame" and "git log"
take has been tweaked.
* lookup_commit_reference() and friends have been updated to find
in-core object for a specific in-core repository instance.
* Various glitches in the heuristics of merge-recursive strategy have
been documented in new tests.
* "git fetch" learned a new option "--negotiation-tip" to limit the
set of commits it tells the other end as "have", to reduce wasted
bandwidth and cycles, which would be helpful when the receiving
repository has a lot of refs that have little to do with the
history at the remote it is fetching from.
* For a large tree, the index needs to hold many cache entries
allocated on heap. These cache entries are now allocated out of a
dedicated memory pool to amortize malloc(3) overhead.
* Tests to cover various conflicting cases have been added for
merge-recursive.
* Tests to cover conflict cases that involve submodules have been
added for merge-recursive.
* Look for broken "&&" chains that are hidden in subshell, many of
which have been found and corrected.
* The singleton commit-graph in-core instance is made per in-core
repository instance.
* "make DEVELOPER=1 DEVOPTS=pedantic" allows developers to compile
with -pedantic option, which may catch more problematic program
constructs and potential bugs.
* Preparatory code to later add json output for telemetry data has
been added.
* Update the way we use Coccinelle to find out-of-style code that
need to be modernised.
* It is too easy to misuse system API functions such as strcat();
these selected functions are now forbidden in this codebase and
will cause a compilation failure.
* Add a script (in contrib/) to help users of VSCode work better with
our codebase.
* The Travis CI scripts were taught to ship back the test data from
failed tests.
(merge aea8879a6a sg/travis-retrieve-trash-upon-failure later to maint).
* The parse-options machinery learned to refrain from enclosing
placeholder string inside a "<bra" and "ket>" pair automatically
without PARSE_OPT_LITERAL_ARGHELP. Existing help text for option
arguments that are not formatted correctly have been identified and
fixed.
(merge 5f0df44cd7 rs/parse-opt-lithelp later to maint).
* Noiseword "extern" has been removed from function decls in the
header files.
* A few atoms like %(objecttype) and %(objectsize) in the format
specifier of "for-each-ref --format=<format>" can be filled without
getting the full contents of the object, but just with the object
header. These cases have been optimized by calling
oid_object_info() API (instead of reading and inspecting the data).
* The end result of documentation update has been made to be
inspected more easily to help developers.
* The API to iterate over all objects learned to optionally list
objects in the order they appear in packfiles, which helps locality
of access if the caller accesses these objects while as objects are
enumerated.
* Improve built-in facility to catch broken &&-chain in the tests.
* The more library-ish parts of the codebase learned to work on the
in-core index-state instance that is passed in by their callers,
instead of always working on the singleton "the_index" instance.
* A test prerequisite defined by various test scripts with slightly
different semantics has been consolidated into a single copy and
made into a lazily defined one.
(merge 6ec633059a wc/make-funnynames-shared-lazy-prereq later to maint).
* After a partial clone, repeated fetches from promisor remote would
have accumulated many packfiles marked with .promisor bit without
getting them coalesced into fewer packfiles, hurting performance.
"git repack" now learned to repack them.
Fixes since v2.18
-----------------
* "git remote update" can take both a single remote nickname and a
nickname for remote groups, and the completion script (in contrib/)
has been taught about it.
(merge 9cd4382ad5 ls/complete-remote-update-names later to maint).
* "git fetch --shallow-since=<cutoff>" that specifies the cut-off
point that is newer than the existing history used to end up
grabbing the entire history. Such a request now errors out.
(merge e34de73c56 nd/reject-empty-shallow-request later to maint).
* Fix for 2.17-era regression around `core.safecrlf`.
(merge 6cb09125be as/safecrlf-quiet-fix later to maint).
* The recent addition of "partial clone" experimental feature kicked
in when it shouldn't, namely, when there is no partial-clone filter
defined even if extensions.partialclone is set.
(merge cac1137dc4 jh/partial-clone later to maint).
* "git send-pack --signed" (hence "git push --signed" over the http
transport) did not read user ident from the config mechanism to
determine whom to sign the push certificate as, which has been
corrected.
(merge d067d98887 ms/send-pack-honor-config later to maint).
* "git fetch-pack --all" used to unnecessarily fail upon seeing an
annotated tag that points at an object other than a commit.
(merge c12c9df527 jk/fetch-all-peeled-fix later to maint).
* When user edits the patch in "git add -p" and the user's editor is
set to strip trailing whitespaces indiscriminately, an empty line
that is unchanged in the patch would become completely empty
(instead of a line with a sole SP on it). The code introduced in
Git 2.17 timeframe failed to parse such a patch, but now it learned
to notice the situation and cope with it.
(merge f4d35a6b49 pw/add-p-recount later to maint).
* The code to try seeing if a fetch is necessary in a submodule
during a fetch with --recurse-submodules got confused when the path
to the submodule was changed in the range of commits in the
superproject, sometimes showing "(null)". This has been corrected.
* "git submodule" did not correctly adjust core.worktree setting that
indicates whether/where a submodule repository has its associated
working tree across various state transitions, which has been
corrected.
(merge 984cd77ddb sb/submodule-core-worktree later to maint).
* Bugfix for "rebase -i" corner case regression.
(merge a9279c6785 pw/rebase-i-keep-reword-after-conflict later to maint).
* Recently added "--base" option to "git format-patch" command did
not correctly generate prereq patch ids.
(merge 15b76c1fb3 xy/format-patch-prereq-patch-id-fix later to maint).
* POSIX portability fix in Makefile to fix a glitch introduced a few
releases ago.
(merge 6600054e9b dj/runtime-prefix later to maint).
* "git filter-branch" when used with the "--state-branch" option
still attempted to rewrite the commits whose filtered result is
known from the previous attempt (which is recorded on the state
branch); the command has been corrected not to waste cycles doing
so.
(merge 709cfe848a mb/filter-branch-optim later to maint).
* Clarify that setting core.ignoreCase to deviate from reality would
not turn a case-incapable filesystem into a case-capable one.
(merge 48294b512a ms/core-icase-doc later to maint).
* "fsck.skipList" did not prevent a blob object listed there from
being inspected for is contents (e.g. we recently started to
inspect the contents of ".gitmodules" for certain malicious
patterns), which has been corrected.
(merge fb16287719 rj/submodule-fsck-skip later to maint).
* "git checkout --recurse-submodules another-branch" did not report
in which submodule it failed to update the working tree, which
resulted in an unhelpful error message.
(merge ba95d4e4bd sb/submodule-move-head-error-msg later to maint).
* "git rebase" behaved slightly differently depending on which one of
the three backends gets used; this has been documented and an
effort to make them more uniform has begun.
(merge b00bf1c9a8 en/rebase-consistency later to maint).
* The "--ignore-case" option of "git for-each-ref" (and its friends)
did not work correctly, which has been fixed.
(merge e674eb2528 jk/for-each-ref-icase later to maint).
* "git fetch" failed to correctly validate the set of objects it
received when making a shallow history deeper, which has been
corrected.
(merge cf1e7c0770 jt/connectivity-check-after-unshallow later to maint).
* Partial clone support of "git clone" has been updated to correctly
validate the objects it receives from the other side. The server
side has been corrected to send objects that are directly
requested, even if they may match the filtering criteria (e.g. when
doing a "lazy blob" partial clone).
(merge a7e67c11b8 jt/partial-clone-fsck-connectivity later to maint).
* Handling of an empty range by "git cherry-pick" was inconsistent
depending on how the range ended up to be empty, which has been
corrected.
(merge c5e358d073 jk/empty-pick-fix later to maint).
* "git reset --merge" (hence "git merge ---abort") and "git reset --hard"
had trouble working correctly in a sparsely checked out working
tree after a conflict, which has been corrected.
(merge b33fdfc34c mk/merge-in-sparse-checkout later to maint).
* Correct a broken use of "VAR=VAL shell_func" in a test.
(merge 650161a277 jc/t3404-one-shot-export-fix later to maint).
* "git rev-parse ':/substring'" did not consider the history leading
only to HEAD when looking for a commit with the given substring,
when the HEAD is detached. This has been fixed.
(merge 6b3351e799 wc/find-commit-with-pattern-on-detached-head later to maint).
* Build doc update for Windows.
(merge ede8d89bb1 nd/command-list later to maint).
* core.commentchar is now honored when preparing the list of commits
to replay in "rebase -i".
* "git pull --rebase" on a corrupt HEAD caused a segfault. In
general we substitute an empty tree object when running the in-core
equivalent of the diff-index command, and the codepath has been
corrected to do so as well to fix this issue.
(merge 3506dc9445 jk/has-uncommitted-changes-fix later to maint).
* httpd tests saw occasional breakage due to the way its access log
gets inspected by the tests, which has been updated to make them
less flaky.
(merge e8b3b2e275 sg/httpd-test-unflake later to maint).
* Tests to cover more D/F conflict cases have been added for
merge-recursive.
* "git gc --auto" opens file descriptors for the packfiles before
spawning "git repack/prune", which would upset Windows that does
not want a process to work on a file that is open by another
process. The issue has been worked around.
(merge 12e73a3ce4 kg/gc-auto-windows-workaround later to maint).
* The recursive merge strategy did not properly ensure there was no
change between HEAD and the index before performing its operation,
which has been corrected.
(merge 55f39cf755 en/dirty-merge-fixes later to maint).
* "git rebase" started exporting GIT_DIR environment variable and
exposing it to hook scripts when part of it got rewritten in C.
Instead of matching the old scripted Porcelains' behaviour,
compensate by also exporting GIT_WORK_TREE environment as well to
lessen the damage. This can harm existing hooks that want to
operate on different repository, but the current behaviour is
already broken for them anyway.
(merge ab5e67d751 bc/sequencer-export-work-tree-as-well later to maint).
* "git send-email" when using in a batched mode that limits the
number of messages sent in a single SMTP session lost the contents
of the variable used to choose between tls/ssl, unable to send the
second and later batches, which has been fixed.
(merge 636f3d7ac5 jm/send-email-tls-auth-on-batch later to maint).
* The lazy clone support had a few places where missing but promised
objects were not correctly tolerated, which have been fixed.
* One of the "diff --color-moved" mode "dimmed_zebra" that was named
in an unusual way has been deprecated and replaced by
"dimmed-zebra".
(merge e3f2f5f9cd es/diff-color-moved-fix later to maint).
* The wire-protocol v2 relies on the client to send "ref prefixes" to
limit the bandwidth spent on the initial ref advertisement. "git
clone" when learned to speak v2 forgot to do so, which has been
corrected.
(merge 402c47d939 bw/clone-ref-prefixes later to maint).
* "git diff --histogram" had a bad memory usage pattern, which has
been rearranged to reduce the peak usage.
(merge 79cb2ebb92 sb/histogram-less-memory later to maint).
* Code clean-up to use size_t/ssize_t when they are the right type.
(merge 7726d360b5 jk/size-t later to maint).
* The wire-protocol v2 relies on the client to send "ref prefixes" to
limit the bandwidth spent on the initial ref advertisement. "git
fetch $remote branch:branch" that asks tags that point into the
history leading to the "branch" automatically followed sent to
narrow prefix and broke the tag following, which has been fixed.
(merge 2b554353a5 jt/tag-following-with-proto-v2-fix later to maint).
* When the sparse checkout feature is in use, "git cherry-pick" and
other mergy operations lost the skip_worktree bit when a path that
is excluded from checkout requires content level merge, which is
resolved as the same as the HEAD version, without materializing the
merge result in the working tree, which made the path appear as
deleted. This has been corrected by preserving the skip_worktree
bit (and not materializing the file in the working tree).
(merge 2b75fb601c en/merge-recursive-skip-fix later to maint).
* The "author-script" file "git rebase -i" creates got broken when
we started to move the command away from shell script, which is
getting fixed now.
(merge 5522bbac20 es/rebase-i-author-script-fix later to maint).
* The automatic tree-matching in "git merge -s subtree" was broken 5
years ago and nobody has noticed since then, which is now fixed.
(merge 2ec4150713 jk/merge-subtree-heuristics later to maint).
* "git fetch $there refs/heads/s" ought to fetch the tip of the
branch 's', but when "refs/heads/refs/heads/s", i.e. a branch whose
name is "refs/heads/s" exists at the same time, fetched that one
instead by mistake. This has been corrected to honor the usual
disambiguation rules for abbreviated refnames.
(merge 60650a48c0 jt/refspec-dwim-precedence-fix later to maint).
* Futureproofing a helper function that can easily be misused.
(merge 65bb21e77e es/want-color-fd-defensive later to maint).
* The http-backend (used for smart-http transport) used to slurp the
whole input until EOF, without paying attention to CONTENT_LENGTH
that is supplied in the environment and instead expecting the Web
server to close the input stream. This has been fixed.
(merge eebfe40962 mk/http-backend-content-length later to maint).
* "git merge --abort" etc. did not clean things up properly when
there were conflicted entries in the index in certain order that
are involved in D/F conflicts. This has been corrected.
(merge ad3762042a en/abort-df-conflict-fixes later to maint).
* "git diff --indent-heuristic" had a bad corner case performance.
(merge 301ef85401 sb/indent-heuristic-optim later to maint).
* The "--exec" option to "git rebase --rebase-merges" placed the exec
commands at wrong places, which has been corrected.
* "git verify-tag" and "git verify-commit" have been taught to use
the exit status of underlying "gpg --verify" to signal bad or
untrusted signature they found.
(merge 4e5dc9ca17 jc/gpg-status later to maint).
* "git mergetool" stopped and gave an extra prompt to continue after
the last path has been handled, which did not make much sense.
(merge d651a54b8a ng/mergetool-lose-final-prompt later to maint).
* Among the three codepaths we use O_APPEND to open a file for
appending, one used for writing GIT_TRACE output requires O_APPEND
implementation that behaves sensibly when multiple processes are
writing to the same file. POSIX emulation used in the Windows port
has been updated to improve in this area.
(merge d641097589 js/mingw-o-append later to maint).
* "git pull --rebase -v" in a repository with a submodule barfed as
an intermediate process did not understand what "-v(erbose)" flag
meant, which has been fixed.
(merge e84c3cf3dc sb/pull-rebase-submodule later to maint).
* Recent update to "git config" broke updating variable in a
subsection, which has been corrected.
(merge bff7df7a87 sb/config-write-fix later to maint).
* When "git rebase -i" is told to squash two or more commits into
one, it labeled the log message for each commit with its number.
It correctly called the first one "1st commit", but the next one
was "commit #1", which was off-by-one. This has been corrected.
(merge dd2e36ebac pw/rebase-i-squash-number-fix later to maint).
* "git rebase -i", when a 'merge <branch>' insn in its todo list
fails, segfaulted, which has been (minimally) corrected.
(merge bc9238bb09 pw/rebase-i-merge-segv-fix later to maint).
* "git cherry-pick --quit" failed to remove CHERRY_PICK_HEAD even
though we won't be in a cherry-pick session after it returns, which
has been corrected.
(merge 3e7dd99208 nd/cherry-pick-quit-fix later to maint).
* Code cleanup, docfix, build fix, etc.
(merge aee9be2ebe sg/update-ref-stdin-cleanup later to maint).
(merge 037714252f jc/clean-after-sanity-tests later to maint).
(merge 5b26c3c941 en/merge-recursive-cleanup later to maint).
(merge 0dcbc0392e bw/config-refer-to-gitsubmodules-doc later to maint).
(merge bb4d000e87 bw/protocol-v2 later to maint).
(merge 928f0ab4ba vs/typofixes later to maint).
(merge d7f590be84 en/rebase-i-microfixes later to maint).
(merge 81d395cc85 js/rebase-recreate-merge later to maint).
(merge 51d1863168 tz/exclude-doc-smallfixes later to maint).
(merge a9aa3c0927 ds/commit-graph later to maint).
(merge 5cf8e06474 js/enhanced-version-info later to maint).
(merge 6aaded5509 tb/config-default later to maint).
(merge 022d2ac1f3 sb/blame-color later to maint).
(merge 5a06a20e0c bp/test-drop-caches-for-windows later to maint).
(merge dd61cc1c2e jk/ui-color-always-to-auto later to maint).
(merge 1e83b9bfdd sb/trailers-docfix later to maint).
(merge ab29f1b329 sg/fast-import-dump-refs-on-checkpoint-fix later to maint).
(merge 6a8ad880f0 jn/subtree-test-fixes later to maint).
(merge ffbd51cc60 nd/pack-objects-threading-doc later to maint).
(merge e9dac7be60 es/mw-to-git-chain-fix later to maint).
(merge fe583c6c7a rs/remote-mv-leakfix later to maint).
(merge 69885ab015 en/t3031-title-fix later to maint).
(merge 8578037bed nd/config-blame-sort later to maint).
(merge 8ad169c4ba hn/config-in-code-comment later to maint).
(merge b7446fcfdf ar/t4150-am-scissors-test-fix later to maint).
(merge a8132410ee js/typofixes later to maint).
(merge 388d0ff6e5 en/update-index-doc later to maint).
(merge e05aa688dd jc/update-index-doc later to maint).
(merge 10c600172c sg/t5310-empty-input-fix later to maint).
(merge 5641eb9465 jh/partial-clone-doc later to maint).
(merge 2711b1ad5e ab/submodule-relative-url-tests later to maint).
----------------------------------------------------------------
Changes since v2.18.0 are as follows:
Aaron Schrab (1):
sequencer: use configured comment character
Alban Gruin (4):
rebase: introduce a dedicated backend for --preserve-merges
rebase: strip unused code in git-rebase--preserve-merges.sh
rebase: use the new git-rebase--preserve-merges.sh
rebase: remove -p code from git-rebase--interactive.sh
Alejandro R. Sedeño (1):
Makefile: tweak sed invocation
Aleksandr Makarov (1):
for-each-ref: consistently pass WM_IGNORECASE flag
Andrei Rybak (2):
Documentation: fix --color option formatting
t4150: fix broken test for am --scissors
Anthony Sottile (1):
config.c: fix regression for core.safecrlf false
Antonio Ospite (6):
config: move config_from_gitmodules to submodule-config.c
submodule-config: add helper function to get 'fetch' config from .gitmodules
submodule-config: add helper to get 'update-clone' config from .gitmodules
submodule-config: make 'config_from_gitmodules' private
submodule-config: pass repository as argument to config_from_gitmodules
submodule-config: reuse config_from_gitmodules in repo_read_gitmodules
Beat Bolli (10):
builtin/config: work around an unsized array forward declaration
unicode: update the width tables to Unicode 11
connect.h: avoid forward declaration of an enum
refs/refs-internal.h: avoid forward declaration of an enum
convert.c: replace "\e" escapes with "\033".
sequencer.c: avoid empty statements at top level
string-list.c: avoid conversion from void * to function pointer
utf8.c: avoid char overflow
Makefile: add a DEVOPTS flag to get pedantic compilation
packfile: ensure that enum object_type is defined
Ben Peart (3):
convert log_ref_write_fd() to use strbuf
handle lower case drive letters on Windows
t3507: add a testcase showing failure with sparse checkout
Brandon Williams (15):
commit: convert commit_graft_pos() to handle arbitrary repositories
commit: convert register_commit_graft to handle arbitrary repositories
commit: convert read_graft_file to handle arbitrary repositories
test-pkt-line: add unpack-sideband subcommand
docs: link to gitsubmodules
upload-pack: implement ref-in-want
upload-pack: test negotiation with changing repository
fetch: refactor the population of peer ref OIDs
fetch: refactor fetch_refs into two functions
fetch: refactor to make function args narrower
fetch-pack: put shallow info in output parameter
fetch-pack: implement ref-in-want
clone: send ref-prefixes when using protocol v2
fetch-pack: mark die strings for translation
pack-protocol: mention and point to docs for protocol v2
Chen Bin (1):
git-p4: add the `p4-pre-submit` hook
Christian Couder (1):
t9104: kosherly remove remote refs
Derrick Stolee (43):
ref-filter: fix outdated comment on in_commit_list
commit: add generation number to struct commit
commit-graph: compute generation numbers
commit: use generations in paint_down_to_common()
commit-graph: always load commit-graph information
ref-filter: use generation number for --contains
commit: use generation numbers for in_merge_bases()
commit: add short-circuit to paint_down_to_common()
commit: use generation number in remove_redundant()
merge: check config before loading commits
commit-graph.txt: update design document
commit-graph: fix UX issue when .lock file exists
ewah/bitmap.c: delete unused 'bitmap_clear()'
ewah/bitmap.c: delete unused 'bitmap_each_bit()'
ewah_bitmap: delete unused 'ewah_and()'
ewah_bitmap: delete unused 'ewah_and_not()'
ewah_bitmap: delete unused 'ewah_not()'
ewah_bitmap: delete unused 'ewah_or()'
ewah_io: delete unused 'ewah_serialize()'
t5318-commit-graph.sh: use core.commitGraph
commit-graph: UNLEAK before die()
commit-graph: fix GRAPH_MIN_SIZE
commit-graph: parse commit from chosen graph
commit: force commit to parse from object database
commit-graph: load a root tree from specific graph
commit-graph: add 'verify' subcommand
commit-graph: verify catches corrupt signature
commit-graph: verify required chunks are present
commit-graph: verify corrupt OID fanout and lookup
commit-graph: verify objects exist
commit-graph: verify root tree OIDs
commit-graph: verify parent list
commit-graph: verify generation number
commit-graph: verify commit date
commit-graph: test for corrupted octopus edge
commit-graph: verify contents match checksum
fsck: verify commit-graph
commit-graph: use string-list API for input
commit-graph: add '--reachable' option
gc: automatically write commit-graph files
commit-graph: update design document
commit-graph: fix documentation inconsistencies
coccinelle: update commit.cocci
Elijah Newren (63):
t6036, t6042: use test_create_repo to keep tests independent
t6036, t6042: use test_line_count instead of wc -l
t6036, t6042: prefer test_path_is_file, test_path_is_missing
t6036, t6042: prefer test_cmp to sequences of test
t6036: prefer test_when_finished to manual cleanup in following test
merge-recursive: fix miscellaneous grammar error in comment
merge-recursive: fix numerous argument alignment issues
merge-recursive: align labels with their respective code blocks
merge-recursive: clarify the rename_dir/RENAME_DIR meaning
merge-recursive: rename conflict_rename_*() family of functions
merge-recursive: add pointer about unduly complex looking code
git-rebase.txt: document incompatible options
git-rebase.sh: update help messages a bit
t3422: new testcases for checking when incompatible options passed
git-rebase: error out when incompatible options passed
git-rebase.txt: address confusion between --no-ff vs --force-rebase
directory-rename-detection.txt: technical docs on abilities and limitations
git-rebase.txt: document behavioral differences between modes
t3401: add directory rename testcases for rebase and am
git-rebase: make --allow-empty-message the default
t3418: add testcase showing problems with rebase -i and strategy options
Fix use of strategy options with interactive rebases
git-rebase--merge: modernize "git-$cmd" to "git $cmd"
apply: fix grammar error in comment
t5407: fix test to cover intended arguments
read-cache.c: move index_has_changes() from merge.c
index_has_changes(): avoid assuming operating on the_index
t6044: verify that merges expected to abort actually abort
t6036: add a failed conflict detection case with symlink modify/modify
t6036: add a failed conflict detection case with symlink add/add
t6036: add a failed conflict detection case with submodule modify/modify
t6036: add a failed conflict detection case with submodule add/add
t6036: add a failed conflict detection case with conflicting types
t6042: add testcase covering rename/add/delete conflict type
t6042: add testcase covering rename/rename(2to1)/delete/delete conflict
t6042: add testcase covering long chains of rename conflicts
t6036: add lots of detail for directory/file conflicts in recursive case
t6036: add a failed conflict detection case: regular files, different modes
t6044: add a testcase for index matching head, when head doesn't match HEAD
merge-recursive: make sure when we say we abort that we actually abort
merge-recursive: fix assumption that head tree being merged is HEAD
t6044: add more testcases with staged changes before a merge is invoked
merge-recursive: enforce rule that index matches head before merging
merge: fix misleading pre-merge check documentation
t7405: add a file/submodule conflict
t7405: add a directory/submodule conflict
t7405: verify 'merge --abort' works after submodule/path conflicts
merge-recursive: preserve skip_worktree bit when necessary
t1015: demonstrate directory/file conflict recovery failures
read-cache: fix directory/file conflict handling in read_index_unmerged()
t3031: update test description to mention desired behavior
t7406: fix call that was failing for the wrong reason
t7406: simplify by using diff --name-only instead of diff --raw
t7406: avoid having git commands upstream of a pipe
t7406: prefer test_* helper functions to test -[feds]
t7406: avoid using test_must_fail for commands other than git
git-update-index.txt: reword possibly confusing example
Add missing includes and forward declarations
alloc: make allocate_alloc_state and clear_alloc_state more consistent
Move definition of enum branch_track from cache.h to branch.h
urlmatch.h: fix include guard
compat/precompose_utf8.h: use more common include guard style
Remove forward declaration of an enum
Eric Sunshine (53):
t: use test_might_fail() instead of manipulating exit code manually
t: use test_write_lines() instead of series of 'echo' commands
t: use sane_unset() rather than 'unset' with broken &&-chain
t: drop unnecessary terminating semicolon in subshell
t/lib-submodule-update: fix "absorbing" test
t5405: use test_must_fail() instead of checking exit code manually
t5406: use write_script() instead of birthing shell script manually
t5505: modernize and simplify hard-to-digest test
t6036: fix broken "merge fails but has appropriate contents" tests
t7201: drop pointless "exit 0" at end of subshell
t7400: fix broken "submodule add/reconfigure --force" test
t7810: use test_expect_code() instead of hand-rolled comparison
t9001: fix broken "invoke hook" test
t9814: simplify convoluted check that command correctly errors out
t0000-t0999: fix broken &&-chains
t1000-t1999: fix broken &&-chains
t2000-t2999: fix broken &&-chains
t3000-t3999: fix broken &&-chains
t3030: fix broken &&-chains
t4000-t4999: fix broken &&-chains
t5000-t5999: fix broken &&-chains
t6000-t6999: fix broken &&-chains
t7000-t7999: fix broken &&-chains
t9000-t9999: fix broken &&-chains
t9119: fix broken &&-chains
t6046/t9833: fix use of "VAR=VAL cmd" with a shell function
t/check-non-portable-shell: stop being so polite
t/check-non-portable-shell: make error messages more compact
t/check-non-portable-shell: detect "FOO=bar shell_func"
t/test-lib: teach --chain-lint to detect broken &&-chains in subshells
t/Makefile: add machinery to check correctness of chainlint.sed
t/chainlint: add chainlint "basic" test cases
t/chainlint: add chainlint "whitespace" test cases
t/chainlint: add chainlint "one-liner" test cases
t/chainlint: add chainlint "nested subshell" test cases
t/chainlint: add chainlint "loop" and "conditional" test cases
t/chainlint: add chainlint "cuddled" test cases
t/chainlint: add chainlint "complex" test cases
t/chainlint: add chainlint "specialized" test cases
diff: --color-moved: rename "dimmed_zebra" to "dimmed-zebra"
mw-to-git/t9360: fix broken &&-chain
t/chainlint.sed: drop extra spaces from regex character class
sequencer: fix "rebase -i --root" corrupting author header
sequencer: fix "rebase -i --root" corrupting author header timezone
sequencer: fix "rebase -i --root" corrupting author header timestamp
sequencer: don't die() on bogus user-edited timestamp
color: protect against out-of-bounds reads and writes
chainlint: match arbitrary here-docs tags rather than hard-coded names
chainlint: match 'quoted' here-doc tags
chainlint: recognize multi-line $(...) when command cuddled with "$("
chainlint: let here-doc and multi-line string commence on same line
chainlint: recognize multi-line quoted strings more robustly
chainlint: add test of pathological case which triggered false positive
Han-Wen Nienhuys (2):
config: document git config getter return value
sideband: highlight keywords in remote sideband output
Henning Schild (9):
builtin/receive-pack: use check_signature from gpg-interface
gpg-interface: make parse_gpg_output static and remove from interface header
gpg-interface: add new config to select how to sign a commit
t/t7510: check the validation of the new config gpg.format
gpg-interface: introduce an abstraction for multiple gpg formats
gpg-interface: do not hardcode the key string len anymore
gpg-interface: introduce new config to select per gpg format program
gpg-interface: introduce new signature format "x509" using gpgsm
gpg-interface t: extend the existing GPG tests with GPGSM
Isabella Stephens (2):
blame: prevent error if range ends past end of file
log: prevent error if line range ends past end of file
Jameson Miller (8):
read-cache: teach refresh_cache_entry to take istate
read-cache: teach make_cache_entry to take object_id
block alloc: add lifecycle APIs for cache_entry structs
mem-pool: only search head block for available space
mem-pool: add life cycle management functions
mem-pool: fill out functionality
block alloc: allocate cache entries from mem_pool
block alloc: add validations around cache_entry lifecyle
Jeff Hostetler (1):
json_writer: new routines to create JSON data
Jeff King (48):
make show-index a builtin
show-index: update documentation for index v2
fetch-pack: don't try to fetch peel values with --all
ewah: drop ewah_deserialize function
ewah: drop ewah_serialize_native function
t3200: unset core.logallrefupdates when testing reflog creation
t: switch "branch -l" to "branch --create-reflog"
branch: deprecate "-l" option
config: turn die_on_error into caller-facing enum
config: add CONFIG_ERROR_SILENT handler
config: add options parameter to git_config_from_mem
fsck: silence stderr when parsing .gitmodules
t6300: add a test for --ignore-case
ref-filter: avoid backend filtering with --ignore-case
t5500: prettify non-commit tag tests
sequencer: handle empty-set cases consistently
sequencer: don't say BUG on bogus input
has_uncommitted_changes(): fall back to empty tree
fsck: split ".gitmodules too large" error from parse failure
fsck: downgrade gitmodulesParse default to "info"
blame: prefer xsnprintf to strcpy for colors
check_replace_refs: fix outdated comment
check_replace_refs: rename to read_replace_refs
add core.usereplacerefs config option
reencode_string: use st_add/st_mult helpers
reencode_string: use size_t for string lengths
strbuf: use size_t for length in intermediate variables
strbuf_readlink: use ssize_t
pass st.st_size as hint for strbuf_readlink()
strbuf_humanise: use unsigned variables
automatically ban strcpy()
banned.h: mark strcat() as banned
banned.h: mark sprintf() as banned
banned.h: mark strncpy() as banned
score_trees(): fix iteration over trees with missing entries
add a script to diff rendered documentation
t5552: suppress upload-pack trace output
for_each_*_object: store flag definitions in a single location
for_each_*_object: take flag arguments as enum
for_each_*_object: give more comprehensive docstrings
for_each_packed_object: support iterating in pack-order
t1006: test cat-file --batch-all-objects with duplicates
cat-file: rename batch_{loose,packed}_object callbacks
cat-file: support "unordered" output for --batch-all-objects
cat-file: use oidset check-and-insert
cat-file: split batch "buf" into two variables
cat-file: use a single strbuf for all output
for_each_*_object: move declarations to object-store.h
Johannes Schindelin (41):
Makefile: fix the "built from commit" code
merge: allow reading the merge commit message from a file
rebase --rebase-merges: add support for octopus merges
rebase --rebase-merges: adjust man page for octopus support
vcbuild/README: update to accommodate for missing common-cmds.h
t7406: avoid failures solely due to timing issues
contrib: add a script to initialize VS Code configuration
vscode: hard-code a couple defines
cache.h: extract enum declaration from inside a struct declaration
mingw: define WIN32 explicitly
vscode: only overwrite C/C++ settings
vscode: wrap commit messages at column 72 by default
vscode: use 8-space tabs, no trailing ws, etc for Git's source code
vscode: add a dictionary for cSpell
vscode: let cSpell work on commit messages, too
pull --rebase=<type>: allow single-letter abbreviations for the type
t3430: demonstrate what -r, --autosquash & --exec should do
git-compat-util.h: fix typo
remote-curl: remove spurious period
rebase --exec: make it work with --rebase-merges
linear-assignment: a function to solve least-cost assignment problems
Introduce `range-diff` to compare iterations of a topic branch
range-diff: first rudimentary implementation
range-diff: improve the order of the shown commits
range-diff: also show the diff between patches
range-diff: right-trim commit messages
range-diff: indent the diffs just like tbdiff
range-diff: suppress the diff headers
range-diff: adjust the output of the commit pairs
range-diff: do not show "function names" in hunk headers
range-diff: use color for the commit pairs
color: add the meta color GIT_COLOR_REVERSE
diff: add an internal option to dual-color diffs of diffs
range-diff: offer to dual-color the diffs
range-diff --dual-color: skip white-space warnings
range-diff: populate the man page
completion: support `git range-diff`
range-diff: left-pad patch numbers
range-diff: make --dual-color the default mode
range-diff: use dim/bold cues to improve dual color mode
chainlint: fix for core.autocrlf=true
Johannes Sixt (1):
mingw: enable atomic O_APPEND
Jonathan Nieder (11):
object: add repository argument to grow_object_hash
object: move grafts to object parser
commit: add repository argument to commit_graft_pos
commit: add repository argument to register_commit_graft
commit: add repository argument to read_graft_file
commit: add repository argument to prepare_commit_graft
commit: add repository argument to lookup_commit_graft
subtree test: add missing && to &&-chain
subtree test: simplify preparation of expected results
doc hash-function-transition: pick SHA-256 as NewHash
partial-clone: render design doc using asciidoc
Jonathan Tan (28):
list-objects: check if filter is NULL before using
fetch-pack: split up everything_local()
fetch-pack: clear marks before re-marking
fetch-pack: directly end negotiation if ACK ready
fetch-pack: use ref adv. to prune "have" sent
fetch-pack: make negotiation-related vars local
fetch-pack: move common check and marking together
fetch-pack: introduce negotiator API
pack-bitmap: remove bitmap_git global variable
pack-bitmap: add free function
fetch-pack: write shallow, then check connectivity
fetch-pack: support negotiation tip whitelist
upload-pack: send refs' objects despite "filter"
clone: check connectivity even if clone is partial
revision: tolerate promised targets of tags
tag: don't warn if target is missing but promised
negotiator/skipping: skip commits during fetch
commit-graph: refactor preparing commit graph
object-store: add missing include
commit-graph: add missing forward declaration
commit-graph: add free_commit_graph
commit-graph: store graph in struct object_store
commit-graph: add repo arg to graph readers
t5702: test fetch with multiple refspecs at a time
fetch: send "refs/tags/" prefix upon CLI refspecs
fetch-pack: unify ref in and out param
repack: refactor setup of pack-objects cmd
repack: repack promisor objects if -a or -A is set
Josh Steadmon (1):
protocol-v2 doc: put HTTP headers after request
Jules Maselbas (1):
send-email: fix tls AUTH when sending batch
Junio C Hamano (18):
tests: clean after SANITY tests
ewah: delete unused 'rlwit_discharge_empty()'
Prepare to start 2.19 cycle
First batch for 2.19 cycle
Second batch for 2.19 cycle
fixup! connect.h: avoid forward declaration of an enum
fixup! refs/refs-internal.h: avoid forward declaration of an enum
t3404: fix use of "VAR=VAL cmd" with a shell function
Third batch for 2.19 cycle
Fourth batch for 2.19 cycle
remote: make refspec follow the same disambiguation rule as local refs
Fifth batch for 2.19 cycle
update-index: there no longer is `apply --index-info`
gpg-interface: propagate exit status from gpg back to the callers
Sixth batch for 2.19 cycle
Seventh batch for 2.19 cycle
sideband: do not read beyond the end of input
Git 2.19-rc0
Kana Natsuno (2):
t4018: add missing test cases for PHP
userdiff: support new keywords in PHP hunk header
Kim Gybels (1):
gc --auto: release pack files before auto packing
Kirill Smelkov (1):
fetch-pack: test explicitly that --all can fetch tag references pointing to non-commits
Luis Marsano (2):
git-credential-netrc: use in-tree Git.pm for tests
git-credential-netrc: fix exit status when tests fail
Luke Diamand (6):
git-p4: python3: replace <> with !=
git-p4: python3: replace dict.has_key(k) with "k in dict"
git-p4: python3: remove backticks
git-p4: python3: basestring workaround
git-p4: python3: use print() function
git-p4: python3: fix octal constants
Marc Strapetz (1):
Documentation: declare "core.ignoreCase" as internal variable
Martin Ågren (1):
refspec: initalize `refspec_item` in `valid_fetch_refspec()`
Masaya Suzuki (2):
builtin/send-pack: populate the default configs
doc: fix want-capability separator
Max Kirillov (4):
http-backend: cleanup writing to child process
http-backend: respect CONTENT_LENGTH as specified by rfc3875
unpack-trees: do not fail reset because of unmerged skipped entry
http-backend: respect CONTENT_LENGTH for receive-pack
Michael Barabanov (1):
filter-branch: skip commits present on --state-branch
Mike Hommey (1):
fast-import: do not call diff_delta() with empty buffer
Nguyễn Thái Ngọc Duy (98):
commit-slab.h: code split
commit-slab: support shared commit-slab
blame: use commit-slab for blame suspects instead of commit->util
describe: use commit-slab for commit names instead of commit->util
shallow.c: use commit-slab for commit depth instead of commit->util
sequencer.c: use commit-slab to mark seen commits
sequencer.c: use commit-slab to associate todo items to commits
revision.c: use commit-slab for show_source
bisect.c: use commit-slab for commit weight instead of commit->util
name-rev: use commit-slab for rev-name instead of commit->util
show-branch: use commit-slab for commit-name instead of commit->util
show-branch: note about its object flags usage
log: use commit-slab in prepare_bases() instead of commit->util
merge: use commit-slab in merge remote desc instead of commit->util
commit.h: delete 'util' field in struct commit
diff: ignore --ita-[in]visible-in-index when diffing worktree-to-tree
diff: turn --ita-invisible-in-index on by default
t2203: add a test about "diff HEAD" case
apply: add --intent-to-add
parse-options: option to let --git-completion-helper show negative form
completion: suppress some -no- options
Add and use generic name->id mapping code for color slot parsing
grep: keep all colors in an array
fsck: factor out msg_id_info[] lazy initialization code
help: add --config to list all available config
fsck: produce camelCase config key names
advice: keep config name in camelCase in advice_config[]
am: move advice.amWorkDir parsing back to advice.c
completion: drop the hard coded list of config vars
completion: keep other config var completion in camelCase
completion: support case-insensitive config vars
log-tree: allow to customize 'grafted' color
completion: complete general config vars in two steps
upload-pack: reject shallow requests that would return nothing
completion: collapse extra --no-.. options
Update messages in preparation for i18n
archive-tar.c: mark more strings for translation
archive-zip.c: mark more strings for translation
builtin/config.c: mark more strings for translation
builtin/grep.c: mark strings for translation
builtin/pack-objects.c: mark more strings for translation
builtin/replace.c: mark more strings for translation
commit-graph.c: mark more strings for translation
config.c: mark more strings for translation
connect.c: mark more strings for translation
convert.c: mark more strings for translation
dir.c: mark more strings for translation
environment.c: mark more strings for translation
exec-cmd.c: mark more strings for translation
object.c: mark more strings for translation
pkt-line.c: mark more strings for translation
refs.c: mark more strings for translation
refspec.c: mark more strings for translation
replace-object.c: mark more strings for translation
sequencer.c: mark more strings for translation
sha1-file.c: mark more strings for translation
transport.c: mark more strings for translation
transport-helper.c: mark more strings for translation
pack-objects: document about thread synchronization
apply.h: drop extern on func declaration
attr.h: drop extern from function declaration
blame.h: drop extern on func declaration
cache-tree.h: drop extern from function declaration
convert.h: drop 'extern' from function declaration
diffcore.h: drop extern from function declaration
diff.h: remove extern from function declaration
line-range.h: drop extern from function declaration
rerere.h: drop extern from function declaration
repository.h: drop extern from function declaration
revision.h: drop extern from function declaration
submodule.h: drop extern from function declaration
config.txt: reorder blame stuff to keep config keys sorted
Makefile: add missing dependency for command-list.h
diff.c: move read_index() code back to the caller
cache-tree: wrap the_index based wrappers with #ifdef
attr: remove an implicit dependency on the_index
convert.c: remove an implicit dependency on the_index
dir.c: remove an implicit dependency on the_index in pathspec code
preload-index.c: use the right index instead of the_index
ls-files: correct index argument to get_convert_attr_ascii()
unpack-trees: remove 'extern' on function declaration
unpack-trees: add a note about path invalidation
unpack-trees: don't shadow global var the_index
unpack-trees: convert clear_ce_flags* to avoid the_index
unpack-trees: avoid the_index in verify_absent()
pathspec.c: use the right index instead of the_index
submodule.c: use the right index instead of the_index
entry.c: use the right index instead of the_index
attr: remove index from git_attr_set_direction()
grep: use the right index instead of the_index
archive.c: avoid access to the_index
archive-*.c: use the right repository
resolve-undo.c: use the right index instead of the_index
apply.c: pass struct apply_state to more functions
apply.c: make init_apply_state() take a struct repository
apply.c: remove implicit dependency on the_index
blame.c: remove implicit dependency on the_index
cherry-pick: fix --quit not deleting CHERRY_PICK_HEAD
Nicholas Guriev (1):
mergetool: don't suggest to continue after last file
Olga Telezhnaya (5):
ref-filter: add info_source to valid_atom
ref-filter: fill empty fields with empty values
ref-filter: initialize eaten variable
ref-filter: merge get_obj and get_object
ref-filter: use oid_object_info() to get object
Phillip Wood (5):
add -p: fix counting empty context lines in edited patches
sequencer: do not squash 'reword' commits when we hit conflicts
rebase -i: fix numbering in squash message
t3430: add conflicting commit
rebase -i: fix SIGSEGV when 'merge <branch>' fails
Prathamesh Chavan (4):
submodule foreach: correct '$path' in nested submodules from a subdirectory
submodule foreach: document '$sm_path' instead of '$path'
submodule foreach: document variable '$displaypath'
submodule: port submodule subcommand 'foreach' from shell to C
Ramsay Jones (3):
fsck: check skiplist for object in fsck_blob()
t6036: fix broken && chain in sub-shell
t5562: avoid non-portable "export FOO=bar" construct
René Scharfe (7):
remote: clear string_list after use in mv()
add, update-index: fix --chmod argument help
difftool: remove angular brackets from argument help
pack-objects: specify --index-version argument help explicitly
send-pack: specify --force-with-lease argument help explicitly
shortlog: correct option help for -w
parse-options: automatically infer PARSE_OPT_LITERAL_ARGHELP
SZEDER Gábor (19):
update-ref --stdin: use skip_prefix()
t7510-signed-commit: use 'test_must_fail'
tests: make forging GPG signed commits and tags more robust
t5541: clean up truncating access log
t/lib-httpd: add the strip_access_log() helper function
t/lib-httpd: avoid occasional failures when checking access.log
t5608: fix broken &&-chain
t9300: wait for background fast-import process to die after killing it
travis-ci: run Coccinelle static analysis with two parallel jobs
travis-ci: fail if Coccinelle static analysis found something to transform
coccinelle: mark the 'coccicheck' make target as .PHONY
coccinelle: use $(addsuffix) in 'coccicheck' make target
coccinelle: exclude sha1dc source files from static analysis
coccinelle: put sane filenames into output patches
coccinelle: extract dedicated make target to clean Coccinelle's results
travis-ci: include the trash directories of failed tests in the trace log
t5318: use 'test_cmp_bin' to compare commit-graph files
t5318: avoid unnecessary command substitutions
t5310-pack-bitmaps: fix bogus 'pack-objects to file can use bitmap' test
Sebastian Kisela (2):
git-instaweb: support Fedora/Red Hat apache module path
git-instaweb: fix apache2 config with apache >= 2.4
Stefan Beller (87):
repository: introduce parsed objects field
object: add repository argument to create_object
alloc: add repository argument to alloc_blob_node
alloc: add repository argument to alloc_tree_node
alloc: add repository argument to alloc_commit_node
alloc: add repository argument to alloc_tag_node
alloc: add repository argument to alloc_object_node
alloc: add repository argument to alloc_report
alloc: add repository argument to alloc_commit_index
object: allow grow_object_hash to handle arbitrary repositories
object: allow create_object to handle arbitrary repositories
alloc: allow arbitrary repositories for alloc functions
object-store: move object access functions to object-store.h
shallow: add repository argument to set_alternate_shallow_file
shallow: add repository argument to register_shallow
shallow: add repository argument to check_shallow_file_for_update
shallow: add repository argument to is_repository_shallow
cache: convert get_graft_file to handle arbitrary repositories
path.c: migrate global git_path_* to take a repository argument
shallow: migrate shallow information into the object parser
commit: allow prepare_commit_graft to handle arbitrary repositories
commit: allow lookup_commit_graft to handle arbitrary repositories
refs/packed-backend.c: close fd of empty file
submodule--helper: plug mem leak in print_default_remote
sequencer.c: plug leaks in do_pick_commit
submodule: fix NULL correctness in renamed broken submodules
t5526: test recursive submodules when fetching moved submodules
submodule: unset core.worktree if no working tree is present
submodule: ensure core.worktree is set after update
submodule deinit: unset core.worktree
submodule.c: report the submodule that an error occurs in
sequencer.c: plug mem leak in git_sequencer_config
.mailmap: merge different spellings of names
object: add repository argument to parse_object
object: add repository argument to lookup_object
object: add repository argument to parse_object_buffer
object: add repository argument to object_as_type
blob: add repository argument to lookup_blob
tree: add repository argument to lookup_tree
commit: add repository argument to lookup_commit_reference_gently
commit: add repository argument to lookup_commit_reference
commit: add repository argument to lookup_commit
commit: add repository argument to parse_commit_buffer
commit: add repository argument to set_commit_buffer
commit: add repository argument to get_cached_commit_buffer
tag: add repository argument to lookup_tag
tag: add repository argument to parse_tag_buffer
tag: add repository argument to deref_tag
object: allow object_as_type to handle arbitrary repositories
object: allow lookup_object to handle arbitrary repositories
blob: allow lookup_blob to handle arbitrary repositories
tree: allow lookup_tree to handle arbitrary repositories
commit: allow lookup_commit to handle arbitrary repositories
tag: allow lookup_tag to handle arbitrary repositories
tag: allow parse_tag_buffer to handle arbitrary repositories
commit.c: allow parse_commit_buffer to handle arbitrary repositories
commit-slabs: remove realloc counter outside of slab struct
commit.c: migrate the commit buffer to the parsed object store
commit.c: allow set_commit_buffer to handle arbitrary repositories
commit.c: allow get_cached_commit_buffer to handle arbitrary repositories
object.c: allow parse_object_buffer to handle arbitrary repositories
object.c: allow parse_object to handle arbitrary repositories
tag.c: allow deref_tag to handle arbitrary repositories
commit.c: allow lookup_commit_reference_gently to handle arbitrary repositories
commit.c: allow lookup_commit_reference to handle arbitrary repositories
xdiff/xdiff.h: remove unused flags
xdiff/xdiffi.c: remove unneeded function declarations
t4015: avoid git as a pipe input
diff.c: do not pass diff options as keydata to hashmap
diff.c: adjust hash function signature to match hashmap expectation
diff.c: add a blocks mode for moved code detection
diff.c: decouple white space treatment from move detection algorithm
diff.c: factor advance_or_nullify out of mark_color_as_moved
diff.c: add white space mode to move detection that allows indent changes
diff.c: offer config option to control ws handling in move detection
xdiff/xhistogram: pass arguments directly to fall_back_to_classic_diff
xdiff/xhistogram: factor out memory cleanup into free_index()
xdiff/xhistogram: move index allocation into find_lcs
Documentation/git-interpret-trailers: explain possible values
xdiff/histogram: remove tail recursion
t1300: document current behavior of setting options
xdiff: reduce indent heuristic overhead
config: fix case sensitive subsection names on writing
git-config: document accidental multi-line setting in deprecated syntax
git-submodule.sh: accept verbose flag in cmd_update to be non-quiet
t7410: update to new style
builtin/submodule--helper: remove stray new line
Taylor Blau (9):
Documentation/config.txt: camel-case lineNumber for consistency
grep.c: expose {,inverted} match column in match_line()
grep.[ch]: extend grep_opt to allow showing matched column
grep.c: display column number of first match
builtin/grep.c: add '--column' option to 'git-grep(1)'
grep.c: add configuration variables to show matched option
contrib/git-jump/git-jump: jump to exact location
grep.c: extract show_line_header()
grep.c: teach 'git grep --only-matching'
Thomas Rast (1):
range-diff: add tests
Tobias Klauser (1):
git-rebase--preserve-merges: fix formatting of todo help message
Todd Zullinger (4):
git-credential-netrc: minor whitespace cleanup in test script
git-credential-netrc: make "all" default target of Makefile
gitignore.txt: clarify default core.excludesfile path
dir.c: fix typos in core.excludesfile comment
Ville Skyttä (1):
Documentation: spelling and grammar fixes
Vladimir Parfinenko (1):
rebase: fix documentation formatting
William Chargin (2):
sha1-name.c: for ":/", find detached HEAD commits
t: factor out FUNNYNAMES as shared lazy prereq
Xiaolong Ye (1):
format-patch: clear UNINTERESTING flag before prepare_bases
brian m. carlson (21):
send-email: add an auto option for transfer encoding
send-email: accept long lines with suitable transfer encoding
send-email: automatically determine transfer-encoding
docs: correct RFC specifying email line length
sequencer: pass absolute GIT_WORK_TREE to exec commands
cache: update object ID functions for the_hash_algo
tree-walk: replace hard-coded constants with the_hash_algo
hex: switch to using the_hash_algo
commit: express tree entry constants in terms of the_hash_algo
strbuf: allocate space with GIT_MAX_HEXSZ
sha1-name: use the_hash_algo when parsing object names
refs/files-backend: use the_hash_algo for writing refs
builtin/update-index: convert to using the_hash_algo
builtin/update-index: simplify parsing of cacheinfo
builtin/fmt-merge-msg: make hash independent
builtin/merge: switch to use the_hash_algo
builtin/merge-recursive: make hash independent
diff: switch GIT_SHA1_HEXSZ to use the_hash_algo
log-tree: switch GIT_SHA1_HEXSZ to the_hash_algo->hexsz
sha1-file: convert constants to uses of the_hash_algo
pretty: switch hard-coded constants to the_hash_algo
Ævar Arnfjörð Bjarmason (36):
checkout tests: index should be clean after dwim checkout
checkout.h: wrap the arguments to unique_tracking_name()
checkout.c: introduce an *_INIT macro
checkout.c: change "unique" member to "num_matches"
checkout: pass the "num_matches" up to callers
builtin/checkout.c: use "ret" variable for return
checkout: add advice for ambiguous "checkout <branch>"
checkout & worktree: introduce checkout.defaultRemote
refspec: s/refspec_item_init/&_or_die/g
refspec: add back a refspec_item_init() function
doc hash-function-transition: note the lack of a changelog
receive.fsck.<msg-id> tests: remove dead code
config doc: don't describe *.fetchObjects twice
config doc: unify the description of fsck.* and receive.fsck.*
config doc: elaborate on what transfer.fsckObjects does
config doc: elaborate on fetch.fsckObjects security
transfer.fsckObjects tests: untangle confusing setup
fetch: implement fetch.fsck.*
fsck: test & document {fetch,receive}.fsck.* config fallback
fsck: add stress tests for fsck.skipList
fsck: test and document unknown fsck.<msg-id> values
tests: make use of the test_must_be_empty function
tests: make use of the test_must_be_empty function
fetch tests: change "Tag" test tag to "testTag"
push tests: remove redundant 'git push' invocation
push tests: fix logic error in "push" test assertion
push tests: add more testing for forced tag pushing
push tests: assert re-pushing annotated tags
negotiator: unknown fetch.negotiationAlgorithm should error out
fetch doc: cross-link two new negotiation options
sha1dc: update from upstream
push: use PARSE_OPT_LITERAL_ARGHELP instead of unbalanced brackets
fetch tests: correct a comment "remove it" -> "remove them"
pull doc: fix a long-standing grammar error
submodule: add more exhaustive up-path testing
t2024: mark test using "checkout -p" with PERL prerequisite
Łukasz Stelmach (1):
completion: complete remote names too
^ permalink raw reply [relevance 3%]
* What's cooking in git.git (Aug 2018, #01; Thu, 2)
@ 2018-08-02 23:02 3% Junio C Hamano
0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2018-08-02 23:02 UTC (permalink / raw)
To: git
Here are the topics that have been cooking. Commits prefixed with
'-' are only in 'pu' (proposed updates) while commits prefixed with
'+' are in 'next'. The ones marked with '.' do not appear in any of
the integration branches, but I am still holding onto them.
Many topics have moved to 'master' and 'next' from 'next' to 'pu'
respectively.
You can find the changes described here in the integration branches
of the repositories listed at
http://git-blame.blogspot.com/p/git-public-repositories.html
--------------------------------------------------
[Graduated to "master"]
* ab/checkout-default-remote (2018-06-11) 8 commits
(merged to 'next' on 2018-07-24 at 6ef645f485)
+ checkout & worktree: introduce checkout.defaultRemote
+ checkout: add advice for ambiguous "checkout <branch>"
+ builtin/checkout.c: use "ret" variable for return
+ checkout: pass the "num_matches" up to callers
+ checkout.c: change "unique" member to "num_matches"
+ checkout.c: introduce an *_INIT macro
+ checkout.h: wrap the arguments to unique_tracking_name()
+ checkout tests: index should be clean after dwim checkout
(this branch is used by ab/test-must-be-empty.)
"git checkout" and "git worktree add" learned to honor
checkout.defaultRemote when auto-vivifying a local branch out of a
remote tracking branch in a repository with multiple remotes that
have tracking branches that share the same names.
* bc/object-id (2018-07-16) 16 commits
(merged to 'next' on 2018-07-24 at 23680778a9)
+ pretty: switch hard-coded constants to the_hash_algo
+ sha1-file: convert constants to uses of the_hash_algo
+ log-tree: switch GIT_SHA1_HEXSZ to the_hash_algo->hexsz
+ diff: switch GIT_SHA1_HEXSZ to use the_hash_algo
+ builtin/merge-recursive: make hash independent
+ builtin/merge: switch to use the_hash_algo
+ builtin/fmt-merge-msg: make hash independent
+ builtin/update-index: simplify parsing of cacheinfo
+ builtin/update-index: convert to using the_hash_algo
+ refs/files-backend: use the_hash_algo for writing refs
+ sha1-name: use the_hash_algo when parsing object names
+ strbuf: allocate space with GIT_MAX_HEXSZ
+ commit: express tree entry constants in terms of the_hash_algo
+ hex: switch to using the_hash_algo
+ tree-walk: replace hard-coded constants with the_hash_algo
+ cache: update object ID functions for the_hash_algo
Conversion from uchar[40] to struct object_id continues.
* bc/sequencer-export-work-tree-as-well (2018-07-16) 1 commit
(merged to 'next' on 2018-07-24 at 0b83ade721)
+ sequencer: pass absolute GIT_WORK_TREE to exec commands
"git rebase" started exporting GIT_DIR environment variable and
exposing it to hook scripts when part of it got rewritten in C.
Instead of matching the old scripted Porcelains' behaviour,
compensate by also exporting GIT_WORK_TREE environment as well to
lessen the damage. This can harm existing hooks that want to
operate on different repository, but the current behaviour is
already broken for them anyway.
* bp/test-drop-caches-for-windows (2018-07-12) 1 commit
(merged to 'next' on 2018-07-24 at 257bb336c6)
+ handle lower case drive letters on Windows
A test helper update for Windows.
* ds/commit-graph-fsck (2018-07-16) 23 commits
(merged to 'next' on 2018-07-24 at 6a802adc7a)
+ coccinelle: update commit.cocci
+ commit-graph: update design document
+ gc: automatically write commit-graph files
+ commit-graph: add '--reachable' option
+ commit-graph: use string-list API for input
+ fsck: verify commit-graph
+ commit-graph: verify contents match checksum
+ commit-graph: test for corrupted octopus edge
+ commit-graph: verify commit date
+ commit-graph: verify generation number
+ commit-graph: verify parent list
+ commit-graph: verify root tree OIDs
+ commit-graph: verify objects exist
+ commit-graph: verify corrupt OID fanout and lookup
+ commit-graph: verify required chunks are present
+ commit-graph: verify catches corrupt signature
+ commit-graph: add 'verify' subcommand
+ commit-graph: load a root tree from specific graph
+ commit: force commit to parse from object database
+ commit-graph: parse commit from chosen graph
+ commit-graph: fix GRAPH_MIN_SIZE
+ commit-graph: UNLEAK before die()
+ t5318-commit-graph.sh: use core.commitGraph
(this branch is used by ds/commit-graph-with-grafts, ds/reachable and jt/commit-graph-per-object-store.)
"git fsck" learns to make sure the optional commit-graph file is in
a sane state.
* en/dirty-merge-fixes (2018-07-11) 9 commits
(merged to 'next' on 2018-07-24 at 7b6ca3507c)
+ merge: fix misleading pre-merge check documentation
+ merge-recursive: enforce rule that index matches head before merging
+ t6044: add more testcases with staged changes before a merge is invoked
+ merge-recursive: fix assumption that head tree being merged is HEAD
+ merge-recursive: make sure when we say we abort that we actually abort
+ t6044: add a testcase for index matching head, when head doesn't match HEAD
+ t6044: verify that merges expected to abort actually abort
+ index_has_changes(): avoid assuming operating on the_index
+ read-cache.c: move index_has_changes() from merge.c
The recursive merge strategy did not properly ensure there was no
change between HEAD and the index before performing its operation,
which has been corrected.
* en/t6036-merge-recursive-tests (2018-07-11) 6 commits
(merged to 'next' on 2018-07-24 at 75055cb6e1)
+ t6036: add a failed conflict detection case: regular files, different modes
+ t6036: add a failed conflict detection case with conflicting types
+ t6036: add a failed conflict detection case with submodule add/add
+ t6036: add a failed conflict detection case with submodule modify/modify
+ t6036: add a failed conflict detection case with symlink add/add
+ t6036: add a failed conflict detection case with symlink modify/modify
Tests to cover various conflicting cases have been added for
merge-recursive.
* en/t6036-recursive-corner-cases (2018-07-12) 2 commits
(merged to 'next' on 2018-07-24 at b7b3514ef4)
+ t6036: fix broken && chain in sub-shell
+ t6036: add lots of detail for directory/file conflicts in recursive case
Tests to cover more D/F conflict cases have been added for
merge-recursive.
* en/t6042-insane-merge-rename-testcases (2018-07-03) 3 commits
(merged to 'next' on 2018-07-24 at 65c80f72da)
+ t6042: add testcase covering long chains of rename conflicts
+ t6042: add testcase covering rename/rename(2to1)/delete/delete conflict
+ t6042: add testcase covering rename/add/delete conflict type
Various glitches in the heuristics of merge-recursive strategy have
been documented in new tests.
I am not sure if there is a single "correct" answer everybody can
agree on for each of these "insane" cases, though.
* en/t7405-recursive-submodule-conflicts (2018-07-11) 3 commits
(merged to 'next' on 2018-07-24 at 6cb7d02298)
+ t7405: verify 'merge --abort' works after submodule/path conflicts
+ t7405: add a directory/submodule conflict
+ t7405: add a file/submodule conflict
Tests to cover conflict cases that involve submodules have been
added for merge-recursive.
* es/chain-lint-in-subshell (2018-07-31) 11 commits
(merged to 'next' on 2018-07-31 at 4ce2a8faa4)
+ t/chainlint.sed: drop extra spaces from regex character class
(merged to 'next' on 2018-07-24 at 9370bbdfaf)
+ t/chainlint: add chainlint "specialized" test cases
+ t/chainlint: add chainlint "complex" test cases
+ t/chainlint: add chainlint "cuddled" test cases
+ t/chainlint: add chainlint "loop" and "conditional" test cases
+ t/chainlint: add chainlint "nested subshell" test cases
+ t/chainlint: add chainlint "one-liner" test cases
+ t/chainlint: add chainlint "whitespace" test cases
+ t/chainlint: add chainlint "basic" test cases
+ t/Makefile: add machinery to check correctness of chainlint.sed
+ t/test-lib: teach --chain-lint to detect broken &&-chains in subshells
(this branch uses es/test-fixes.)
Look for broken "&&" chains that are hidden in subshell, many of
which have been found and corrected.
* es/test-fixes (2018-07-17) 26 commits
(merged to 'next' on 2018-07-24 at fd6796a3ef)
+ t5608: fix broken &&-chain
+ t9119: fix broken &&-chains
+ t9000-t9999: fix broken &&-chains
+ t7000-t7999: fix broken &&-chains
+ t6000-t6999: fix broken &&-chains
+ t5000-t5999: fix broken &&-chains
+ t4000-t4999: fix broken &&-chains
+ t3030: fix broken &&-chains
+ t3000-t3999: fix broken &&-chains
+ t2000-t2999: fix broken &&-chains
+ t1000-t1999: fix broken &&-chains
+ t0000-t0999: fix broken &&-chains
+ t9814: simplify convoluted check that command correctly errors out
+ t9001: fix broken "invoke hook" test
+ t7810: use test_expect_code() instead of hand-rolled comparison
+ t7400: fix broken "submodule add/reconfigure --force" test
+ t7201: drop pointless "exit 0" at end of subshell
+ t6036: fix broken "merge fails but has appropriate contents" tests
+ t5505: modernize and simplify hard-to-digest test
+ t5406: use write_script() instead of birthing shell script manually
+ t5405: use test_must_fail() instead of checking exit code manually
+ t/lib-submodule-update: fix "absorbing" test
+ t: drop unnecessary terminating semicolon in subshell
+ t: use sane_unset() rather than 'unset' with broken &&-chain
+ t: use test_write_lines() instead of series of 'echo' commands
+ t: use test_might_fail() instead of manipulating exit code manually
(this branch is used by es/chain-lint-in-subshell.)
Test clean-up and corrections.
* is/parsing-line-range (2018-06-15) 2 commits
(merged to 'next' on 2018-07-24 at a06b453f32)
+ log: prevent error if line range ends past end of file
+ blame: prevent error if range ends past end of file
Parsing of -L[<N>][,[<M>]] parameters "git blame" and "git log"
take has been tweaked.
* jk/fsck-gitmodules-gently (2018-07-16) 6 commits
(merged to 'next' on 2018-07-24 at 5b15c800db)
+ fsck: downgrade gitmodulesParse default to "info"
+ fsck: split ".gitmodules too large" error from parse failure
+ fsck: silence stderr when parsing .gitmodules
+ config: add options parameter to git_config_from_mem
+ config: add CONFIG_ERROR_SILENT handler
+ config: turn die_on_error into caller-facing enum
Recent "security fix" to pay attention to contents of ".gitmodules"
while accepting "git push" was a bit overly strict than necessary,
which has been adjusted.
* jk/has-uncommitted-changes-fix (2018-07-11) 1 commit
(merged to 'next' on 2018-07-24 at 2ea14c0afb)
+ has_uncommitted_changes(): fall back to empty tree
"git pull --rebase" on a corrupt HEAD caused a segfault. In
general we substitute an empty tree object when running the in-core
equivalent of the diff-index command, and the codepath has been
corrected to do so as well to fix this issue.
* jm/cache-entry-from-mem-pool (2018-07-03) 8 commits
(merged to 'next' on 2018-07-24 at 9be51a88dc)
+ block alloc: add validations around cache_entry lifecyle
+ block alloc: allocate cache entries from mem_pool
+ mem-pool: fill out functionality
+ mem-pool: add life cycle management functions
+ mem-pool: only search head block for available space
+ block alloc: add lifecycle APIs for cache_entry structs
+ read-cache: teach make_cache_entry to take object_id
+ read-cache: teach refresh_cache_entry to take istate
For a large tree, the index needs to hold many cache entries
allocated on heap. These cache entries are now allocated out of a
dedicated memory pool to amortize malloc(3) overhead.
This makes each cache-entry larger by either 4 or 8 bytes, which is
a bit sad, though.
* jm/send-email-tls-auth-on-batch (2018-07-16) 1 commit
(merged to 'next' on 2018-07-24 at fb3e653f44)
+ send-email: fix tls AUTH when sending batch
"git send-email" when using in a batched mode that limits the
number of messages sent in a single SMTP session lost the contents
of the variable used to choose between tls/ssl, unable to send the
second and later batches, which has been fixed.
This is marked to be merged to 'next' already, but I do not mind
getting an updated version with an improved log message before that
happens.
* js/rebase-merge-octopus (2018-07-11) 3 commits
(merged to 'next' on 2018-07-24 at 14ad8699de)
+ rebase --rebase-merges: adjust man page for octopus support
+ rebase --rebase-merges: add support for octopus merges
+ merge: allow reading the merge commit message from a file
"git rebase --rebase-merges" mode now handles octopus merges as
well.
* jt/commit-graph-per-object-store (2018-07-17) 7 commits
(merged to 'next' on 2018-07-24 at 090d1a4d59)
+ commit-graph: add repo arg to graph readers
+ commit-graph: store graph in struct object_store
+ commit-graph: add free_commit_graph
+ commit-graph: add missing forward declaration
+ object-store: add missing include
+ commit-graph: refactor preparing commit graph
+ Merge branch 'ds/commit-graph-fsck' into jt/commit-graph-per-object-store
(this branch is used by ds/commit-graph-with-grafts and ds/reachable; uses ds/commit-graph-fsck and sb/object-store-lookup.)
The singleton commit-graph in-core instance is made per in-core
repository instance.
* jt/fetch-nego-tip (2018-07-03) 1 commit
(merged to 'next' on 2018-07-24 at a9e299006d)
+ fetch-pack: support negotiation tip whitelist
(this branch is used by ab/fetch-nego; uses jt/fetch-pack-negotiator; is tangled with jt/fetch-negotiator-skipping.)
"git fetch" learned a new option "--negotiation-tip" to limit the
set of commits it tells the other end as "have", to reduce wasted
bandwidth and cycles, which would be helpful when the receiving
repository has a lot of refs that have little to do with the
history at the remote it is fetching from.
* jt/fetch-negotiator-skipping (2018-07-16) 1 commit
(merged to 'next' on 2018-07-24 at 8e25a49405)
+ negotiator/skipping: skip commits during fetch
(this branch is used by ab/fetch-nego; uses jt/fetch-pack-negotiator; is tangled with jt/fetch-nego-tip.)
Add a server-side knob to skip commits in exponential/fibbonacci
stride in an attempt to cover wider swath of history with a smaller
number of iterations, potentially accepting a larger packfile
transfer, instead of going back one commit a time during common
ancestor discovery during the "git fetch" transaction.
* jt/fetch-pack-negotiator (2018-06-15) 7 commits
(merged to 'next' on 2018-07-24 at 438efcd6b1)
+ fetch-pack: introduce negotiator API
+ fetch-pack: move common check and marking together
+ fetch-pack: make negotiation-related vars local
+ fetch-pack: use ref adv. to prune "have" sent
+ fetch-pack: directly end negotiation if ACK ready
+ fetch-pack: clear marks before re-marking
+ fetch-pack: split up everything_local()
(this branch is used by ab/fetch-nego, jt/fetch-nego-tip and jt/fetch-negotiator-skipping.)
Code restructuring and a small fix to transport protocol v2 during
fetching.
* jt/tags-to-promised-blobs-fix (2018-07-16) 2 commits
(merged to 'next' on 2018-07-24 at 8d7e78a671)
+ tag: don't warn if target is missing but promised
+ revision: tolerate promised targets of tags
The lazy clone support had a few places where missing but promised
objects were not correctly tolerated, which have been fixed.
* kg/gc-auto-windows-workaround (2018-07-09) 1 commit
(merged to 'next' on 2018-07-24 at 71c05d27b6)
+ gc --auto: release pack files before auto packing
"git gc --auto" opens file descriptors for the packfiles before
spawning "git repack/prune", which would upset Windows that does
not want a process to work on a file that is open by another
process. The issue has been worked around.
* sb/diff-color-move-more (2018-07-19) 10 commits
(merged to 'next' on 2018-07-24 at 89c893cab2)
+ diff.c: offer config option to control ws handling in move detection
+ diff.c: add white space mode to move detection that allows indent changes
+ diff.c: factor advance_or_nullify out of mark_color_as_moved
+ diff.c: decouple white space treatment from move detection algorithm
+ diff.c: add a blocks mode for moved code detection
+ diff.c: adjust hash function signature to match hashmap expectation
+ diff.c: do not pass diff options as keydata to hashmap
+ t4015: avoid git as a pipe input
+ xdiff/xdiffi.c: remove unneeded function declarations
+ xdiff/xdiff.h: remove unused flags
"git diff --color-moved" feature has further been tweaked.
* sb/object-store-lookup (2018-06-29) 33 commits
(merged to 'next' on 2018-07-24 at dd96e29376)
+ commit.c: allow lookup_commit_reference to handle arbitrary repositories
+ commit.c: allow lookup_commit_reference_gently to handle arbitrary repositories
+ tag.c: allow deref_tag to handle arbitrary repositories
+ object.c: allow parse_object to handle arbitrary repositories
+ object.c: allow parse_object_buffer to handle arbitrary repositories
+ commit.c: allow get_cached_commit_buffer to handle arbitrary repositories
+ commit.c: allow set_commit_buffer to handle arbitrary repositories
+ commit.c: migrate the commit buffer to the parsed object store
+ commit-slabs: remove realloc counter outside of slab struct
+ commit.c: allow parse_commit_buffer to handle arbitrary repositories
+ tag: allow parse_tag_buffer to handle arbitrary repositories
+ tag: allow lookup_tag to handle arbitrary repositories
+ commit: allow lookup_commit to handle arbitrary repositories
+ tree: allow lookup_tree to handle arbitrary repositories
+ blob: allow lookup_blob to handle arbitrary repositories
+ object: allow lookup_object to handle arbitrary repositories
+ object: allow object_as_type to handle arbitrary repositories
+ tag: add repository argument to deref_tag
+ tag: add repository argument to parse_tag_buffer
+ tag: add repository argument to lookup_tag
+ commit: add repository argument to get_cached_commit_buffer
+ commit: add repository argument to set_commit_buffer
+ commit: add repository argument to parse_commit_buffer
+ commit: add repository argument to lookup_commit
+ commit: add repository argument to lookup_commit_reference
+ commit: add repository argument to lookup_commit_reference_gently
+ tree: add repository argument to lookup_tree
+ blob: add repository argument to lookup_blob
+ object: add repository argument to object_as_type
+ object: add repository argument to parse_object_buffer
+ object: add repository argument to lookup_object
+ object: add repository argument to parse_object
+ Merge branch 'sb/object-store-grafts' into sb/object-store-lookup
(this branch is used by ds/commit-graph-with-grafts, ds/reachable and jt/commit-graph-per-object-store.)
lookup_commit_reference() and friends have been updated to find
in-core object for a specific in-core repository instance.
* sg/httpd-test-unflake (2018-07-12) 3 commits
(merged to 'next' on 2018-07-24 at b7df820256)
+ t/lib-httpd: avoid occasional failures when checking access.log
+ t/lib-httpd: add the strip_access_log() helper function
+ t5541: clean up truncating access log
httpd tests saw occasional breakage due to the way its access log
gets inspected by the tests, which has been updated to make them
less flaky.
* tb/grep-only-matching (2018-07-09) 2 commits
(merged to 'next' on 2018-07-24 at 7e878b9d95)
+ grep.c: teach 'git grep --only-matching'
+ grep.c: extract show_line_header()
"git grep" learned the "--only-matching" option.
--------------------------------------------------
[New Topics]
* ab/fsck-transfer-updates (2018-07-27) 10 commits
- fsck: test and document unknown fsck.<msg-id> values
- fsck: add stress tests for fsck.skipList
- fsck: test & document {fetch,receive}.fsck.* config fallback
- fetch: implement fetch.fsck.*
- transfer.fsckObjects tests: untangle confusing setup
- config doc: elaborate on fetch.fsckObjects security
- config doc: elaborate on what transfer.fsckObjects does
- config doc: unify the description of fsck.* and receive.fsck.*
- config doc: don't describe *.fetchObjects twice
- receive.fsck.<msg-id> tests: remove dead code
The test performed at the receiving end of "git push" to prevent
bad objects from entering repository can be customized via
receive.fsck.* configuration variables; we now have gained a
counterpart to do the same on the "git fetch" side, with
fetch.fsck.* configuration variables.
Will merge to 'next'.
* ab/test-must-be-empty (2018-07-30) 1 commit
- tests: make use of the test_must_be_empty function
Test updates.
Will merge to 'next'.
* ab/test-must-be-empty-for-master (2018-07-30) 1 commit
- tests: make use of the test_must_be_empty function
Test updates.
Did anybody spot incorrect conversion in this yet?
* cb/p4-pre-submit-hook (2018-08-01) 1 commit
- git-p4: add the `p4-pre-submit` hook
"git p4 submit" learns to ask its own pre-submit hook if it should
continue with submitting.
Will merge to 'next'.
* es/rebase-i-author-script-fix (2018-07-31) 4 commits
- sequencer: don't die() on bogus user-edited timestamp
- sequencer: fix "rebase -i --root" corrupting author header timestamp
- sequencer: fix "rebase -i --root" corrupting author header timezone
- sequencer: fix "rebase -i --root" corrupting author header
(this branch is used by pw/rebase-i-author-script-fix.)
The "author-script" file "git rebase -i" creates got broken when
we started to move the command away from shell script, which is
getting fixed now.
Will merge to 'next'.
* hn/highlight-sideband-keywords (2018-07-31) 1 commit
- sideband: highlight keywords in remote output
The sideband code learned to optionally paint selected keywords at
the beginning of incoming lines on the receiving end.
* jn/subtree-test-fixes (2018-07-30) 2 commits
- subtree test: simplify preparation of expected results
- subtree test: add missing && to &&-chain
Test fix.
Will merge to 'next'.
* ms/http-proto-doc (2018-07-30) 1 commit
- doc: fix want-capability separator
Doc fix.
Will merge to 'next'.
* nd/pack-objects-threading-doc (2018-07-30) 1 commit
- pack-objects: document about thread synchronization
Doc fix.
Will merge to 'next'.
* sb/indent-heuristic-optim (2018-08-01) 1 commit
- xdiff: reduce indent heuristic overhead
"git diff --indent-heuristic" had a bad corner case performance.
Will merge to 'next'.
* ab/fetch-nego (2018-08-01) 3 commits
- fetch doc: cross-link two new negotiation options
- negotiator: unknown fetch.negotiationAlgorithm should error out
- Merge branch 'jt/fetch-nego-tip' into ab/fetch-nego
Update to a few other topics.
Will merge to 'next'.
* ab/fetch-tags-noclobber (2018-07-31) 10 commits
- fetch: stop clobbering existing tags without --force
- pull doc: fix a long-standing grammar error
- fetch tests: add a test clobbering tag behavior
- fetch tests: correct a comment "remove it" -> "remove them"
- push doc: correct lies about how push refspecs work
- push tests: assert re-pushing annotated tags
- push tests: add more testing for forced tag pushing
- push tests: fix logic error in "push" test assertion
- push tests: remove redundant 'git push' invocation
- fetch tests: change "Tag" test tag to "testTag"
"git fetch" used to apply the same "fast-forward" rule and allow
tags to move without "--force" option, which made little sense,
which has been corrected.
Expecting a reroll.
cf. <xmqq4lgfcn5a.fsf@gitster-ct.c.googlers.com>
cf. <xmqqzhy7b7v9.fsf@gitster-ct.c.googlers.com>
* bp/checkout-new-branch-optim (2018-07-31) 1 commit
- checkout: optimize "git checkout -b <new_branch>"
"git checkout -b newbranch [HEAD]" should not have to do as much as
checking out a commit different from HEAD. An attempt is made to
optimize this special case.
Waiting for review comments to be responded.
cf. <CACsJy8DMEMsDnKZc65K-0EJcm2udXZ7OKY=xoFmX4COM0dSH=g@mail.gmail.com>
* es/mw-to-git-chain-fix (2018-07-31) 1 commit
- mw-to-git/t9360: fix broken &&-chain
Test fix.
Will merge to 'next'.
* jk/merge-subtree-heuristics (2018-08-02) 1 commit
- score_trees(): fix iteration over trees with missing entries
The automatic tree-matching in "git merge -s subtree" was broken 5
years ago and nobody has noticed since then, which is now fixed.
Will merge to 'next'.
* jt/connectivity-check-after-unshallow (2018-08-01) 1 commit
- fetch-pack: unify ref in and out param
Recent update to the transport layer broke ref updates after "git
fetch", which is now fixed.
Will merge to 'next'.
* jt/refspec-dwim-precedence-fix (2018-08-02) 1 commit
- remote: make refspec follow the same disambiguation rule as local refs
"git fetch $there refs/heads/s" ought to fetch the tip of the
branch 's', but when "refs/heads/refs/heads/s", i.e. a branch whose
name is "refs/heads/s" exists at the same time, fetched that one
instead by mistake. This has been corrected to honor the usual
disambiguation rules for abbreviated refnames.
Will merge to 'next'.
* nd/clone-case-smashing-warning (2018-07-31) 1 commit
- clone: report duplicate entries on case-insensitive filesystems
Running "git clone" against a project that contain two files with
pathnames that differ only in cases on a case insensitive
filesystem would result in one of the files lost because the
underlying filesystem is incapable of holding both at the same
time. An attempt is made to detect such a case and warn.
Discussion getting petered out.
Doing this portably and extending it to UTF-8 normalization issue
HFS+ has would be costly.
cf. <20180728095659.GA21450@sigill.intra.peff.net>
cf. <xmqq1sbh7phx.fsf@gitster-ct.c.googlers.com>
* nd/unpack-trees-with-cache-tree (2018-07-31) 4 commits
- unpack-trees: cheaper index update when walking by cache-tree
- unpack-trees: reduce malloc in cache-tree walk
- unpack-trees: optimize walking same trees with cache-tree
- unpack-trees.c: add performance tracing
The unpack_trees() API used in checking out a branch and merging
walks one or more trees along with the index. When the cache-tree
in the index tells us that we are walking a tree whose flattened
contents is known (i.e. matches a span in the index), as linearly
scanning a span in the index is much more efficient than having to
open tree objects recursively and listing their entries, the walk
can be optimized, which is done in this topic.
* rs/remote-mv-leakfix (2018-08-01) 1 commit
- remote: clear string_list after use in mv()
Leakfix.
Will merge to 'next'.
* sb/config-write-fix (2018-08-01) 3 commits
- git-config: document accidental multi-line setting in deprecated syntax
- config: fix case sensitive subsection names on writing
- t1300: document current behavior of setting options
Recent update to "git config" broke updating variable in a
subsection, which has been corrected.
Not quite?
cf. <xmqq4lgc1rbv.fsf@gitster-ct.c.googlers.com>
* sb/range-diff-colors (2018-08-01) 9 commits
- fixup! t3206: add color test for range-diff --dual-color
- diff.c: rewrite emit_line_0 more understandably
- diff.c: compute reverse locally in emit_line_0
- diff: use emit_line_0 once per line
- diff.c: add set_sign to emit_line_0
- diff.c: reorder arguments for emit_line_ws_markup
- diff.c: simplify caller of emit_line_0
- t3206: add color test for range-diff --dual-color
- test_decode_color: understand FAINT and ITALIC
(this branch uses js/range-diff; is tangled with es/format-patch-rangediff.)
* sg/t1404-update-ref-test-timeout (2018-08-01) 1 commit
- t1404: increase core.packedRefsTimeout to avoid occasional test failure
An attempt to unflake a test a bit.
* sg/travis-retrieve-trash-upon-failure (2018-08-01) 1 commit
- travis-ci: include the trash directories of failed tests in the trace log
The Travis CI scripts were taught to ship back the test data from
failed tests.
Will merge to 'next'.
* jt/fetch-follow-fix (2018-08-01) 1 commit
- fetch-pack: unify ref in and out param
"git fetch" sometimes failed to update the remote-tracking refs,
which has been corrected.
Will merge to 'next'.
* ab/sha1dc (2018-08-02) 1 commit
- sha1dc: update from upstream
AIX portability update for SHADC hash, imported from upstream.
Will merge to 'next'.
* es/want-color-fd-defensive (2018-08-02) 1 commit
- color: protect against out-of-bounds array access/assignment
Futureproofing a helper function that can easily misused.
Will merge to 'next'.
* pw/rebase-i-author-script-fix (2018-08-02) 2 commits
- sequencer: fix quoting in write_author_script
- sequencer: handle errors in read_author_ident()
(this branch uses es/rebase-i-author-script-fix.)
Recent "git rebase -i" update started to write bogusly formatted
author-script, with a matching broken reading code. These are
being fixed.
Undecided.
Is it the list consensus to favor this "with extra code, read the
script written by bad writer" approach?
* rs/parse-opt-lithelp (2018-08-02) 6 commits
- parse-options: automatically infer PARSE_OPT_LITERAL_ARGHELP
- shortlog: correct option help for -w
- send-pack: specify --force-with-lease argument help explicitly
- pack-objects: specify --index-version argument help explicitly
- difftool: remove angular brackets from argument help
- add, update-index: fix --chmod argument help
The parse-options machinery learned to refrain from enclosing
placeholder string inside a "<bra" and "ket>" pair automatically
without PARSE_OPT_LITERAL_ARGHELP. Existing help text for option
arguments that are not formatted correctly have been identified and
fixed.
Will merge to 'next'.
--------------------------------------------------
[Stalled]
* ma/wrapped-info (2018-05-28) 2 commits
- usage: prefix all lines in `vreportf()`, not just the first
- usage: extract `prefix_suffix_lines()` from `advise()`
An attempt to help making multi-line messages fed to warning(),
error(), and friends more easily translatable.
Will discard and wait for a cleaned-up rewrite.
cf. <20180529213957.GF7964@sigill.intra.peff.net>
* hn/bisect-first-parent (2018-04-21) 1 commit
- bisect: create 'bisect_flags' parameter in find_bisection()
Preliminary code update to allow passing more flags down the
bisection codepath in the future.
We do not add random code that does not have real users to our
codebase, so let's have it wait until such a real code materializes
before too long.
* av/fsmonitor-updates (2018-01-04) 6 commits
- fsmonitor: use fsmonitor data in `git diff`
- fsmonitor: remove debugging lines from t/t7519-status-fsmonitor.sh
- fsmonitor: make output of test-dump-fsmonitor more concise
- fsmonitor: update helper tool, now that flags are filled later
- fsmonitor: stop inline'ing mark_fsmonitor_valid / _invalid
- dir.c: update comments to match argument name
Code clean-up on fsmonitor integration, plus optional utilization
of the fsmonitor data in diff-files.
Waiting for an update.
cf. <alpine.DEB.2.21.1.1801042335130.32@MININT-6BKU6QN.europe.corp.microsoft.com>
* pb/bisect-helper-2 (2018-07-23) 8 commits
- t6030: make various test to pass GETTEXT_POISON tests
- bisect--helper: `bisect_start` shell function partially in C
- bisect--helper: `get_terms` & `bisect_terms` shell function in C
- bisect--helper: `bisect_next_check` shell function in C
- bisect--helper: `check_and_set_terms` shell function in C
- wrapper: move is_empty_file() and rename it as is_empty_or_missing_file()
- bisect--helper: `bisect_write` shell function in C
- bisect--helper: `bisect_reset` shell function in C
Expecting a reroll.
cf. <0102015f5e5ee171-f30f4868-886f-47a1-a4e4-b4936afc545d-000000@eu-west-1.amazonses.com>
I just rebased the topic to a newer base as it did not build
standalone with the base I originally queued the topic on, but
otherwise there is no update to address any of the review comments
in the thread above---we are still waiting for a reroll.
* jk/drop-ancient-curl (2017-08-09) 5 commits
- http: #error on too-old curl
- curl: remove ifdef'd code never used with curl >=7.19.4
- http: drop support for curl < 7.19.4
- http: drop support for curl < 7.16.0
- http: drop support for curl < 7.11.1
Some code in http.c that has bitrot is being removed.
Expecting a reroll.
* mk/use-size-t-in-zlib (2017-08-10) 1 commit
. zlib.c: use size_t for size
The wrapper to call into zlib followed our long tradition to use
"unsigned long" for sizes of regions in memory, which have been
updated to use "size_t".
Needs resurrecting by making sure the fix is good and still applies
(or adjusted to today's codebase).
--------------------------------------------------
[Cooking]
* es/diff-color-moved-fix (2018-07-25) 1 commit
(merged to 'next' on 2018-08-02 at 233bccfbfb)
+ diff: --color-moved: rename "dimmed_zebra" to "dimmed-zebra"
One of the "diff --color-moved" mode "dimmed_zebra" that was named
in an unusual way has been deprecated and replaced by
"dimmed-zebra".
Will merge to 'master'.
* pw/add-p-select (2018-07-26) 4 commits
- add -p: optimize line selection for short hunks
- add -p: allow line selection to be inverted
- add -p: select modified lines correctly
- add -p: select individual hunk lines
"git add -p" interactive interface learned to let users choose
individual added/removed lines to be used in the operation, instead
of accepting or rejecting a whole hunk.
Will merge to and cook in 'next'.
I found the feature to be hard to explain, and may result in more
end-user complaints, but let's see.
* mk/http-backend-content-length (2018-07-30) 4 commits
- t5562: avoid non-portable "export FOO=bar" construct
- http-backend: respect CONTENT_LENGTH for receive-pack
- http-backend: respect CONTENT_LENGTH as specified by rfc3875
- http-backend: cleanup writing to child process
The http-backend (used for smart-http transport) used to slurp the
whole input until EOF, without paying attention to CONTENT_LENGTH
that is supplied in the environment and instead expecting the Web
server to close the input stream. This has been fixed.
Will merge to 'next'.
* ds/commit-graph-with-grafts (2018-07-19) 8 commits
(merged to 'next' on 2018-08-02 at 0ee624e329)
+ commit-graph: close_commit_graph before shallow walk
+ commit-graph: not compatible with uninitialized repo
+ commit-graph: not compatible with grafts
+ commit-graph: not compatible with replace objects
+ test-repository: properly init repo
+ commit-graph: update design document
+ refs.c: upgrade for_each_replace_ref to be a each_repo_ref_fn callback
+ refs.c: migrate internal ref iteration to pass thru repository argument
The recently introduced commit-graph auxiliary data is incompatible
with mechanisms such as replace & grafts that "breaks" immutable
nature of the object reference relationship. Disable optimizations
based on its use (and updating existing commit-graph) when these
incompatible features are in use in the repository.
Will merge to 'master'.
* jk/core-use-replace-refs (2018-07-18) 3 commits
(merged to 'next' on 2018-08-02 at 90fb6b1056)
+ add core.usereplacerefs config option
+ check_replace_refs: rename to read_replace_refs
+ check_replace_refs: fix outdated comment
A new configuration variable core.usereplacerefs has been added,
primarily to help server installations that want to ignore the
replace mechanism altogether.
Will merge to 'master'.
* nd/i18n (2018-07-23) 23 commits
(merged to 'next' on 2018-08-02 at 904a22a5d1)
+ transport-helper.c: mark more strings for translation
+ transport.c: mark more strings for translation
+ sha1-file.c: mark more strings for translation
+ sequencer.c: mark more strings for translation
+ replace-object.c: mark more strings for translation
+ refspec.c: mark more strings for translation
+ refs.c: mark more strings for translation
+ pkt-line.c: mark more strings for translation
+ object.c: mark more strings for translation
+ exec-cmd.c: mark more strings for translation
+ environment.c: mark more strings for translation
+ dir.c: mark more strings for translation
+ convert.c: mark more strings for translation
+ connect.c: mark more strings for translation
+ config.c: mark more strings for translation
+ commit-graph.c: mark more strings for translation
+ builtin/replace.c: mark more strings for translation
+ builtin/pack-objects.c: mark more strings for translation
+ builtin/grep.c: mark strings for translation
+ builtin/config.c: mark more strings for translation
+ archive-zip.c: mark more strings for translation
+ archive-tar.c: mark more strings for translation
+ Update messages in preparation for i18n
Many more strings are prepared for l10n.
Will merge to 'master'.
* sb/histogram-less-memory (2018-07-23) 4 commits
(merged to 'next' on 2018-08-02 at cfb02aa3b5)
+ xdiff/histogram: remove tail recursion
+ xdiff/xhistogram: move index allocation into find_lcs
+ xdiff/xhistogram: factor out memory cleanup into free_index()
+ xdiff/xhistogram: pass arguments directly to fall_back_to_classic_diff
"git diff --histogram" had a bad memory usage pattern, which has
been rearranged to reduce the peak usage.
Will merge to 'master'.
* bb/make-developer-pedantic (2018-07-25) 1 commit
(merged to 'next' on 2018-08-02 at c738a84b7e)
+ Makefile: add a DEVOPTS flag to get pedantic compilation
"make DEVELOPER=1 DEVOPTS=pedantic" allows developers to compile
with -pedantic option, which may catch more problematic program
constructs and potential bugs.
Will merge to 'master'.
* bw/clone-ref-prefixes (2018-07-20) 1 commit
(merged to 'next' on 2018-08-02 at c8ad140ab0)
+ clone: send ref-prefixes when using protocol v2
The wire-protocol v2 relies on the client to send "ref prefixes" to
limit the bandwidth spent on the initial ref advertisement. "git
clone" when learned to speak v2 forgot to do so, which has been
corrected.
Will merge to 'master'.
* bw/fetch-pack-i18n (2018-07-23) 1 commit
(merged to 'next' on 2018-08-02 at df72001755)
+ fetch-pack: mark die strings for translation
i18n updates.
Will merge to 'master'.
* bw/protocol-v2 (2018-07-24) 1 commit
(merged to 'next' on 2018-08-02 at f4076b3e94)
+ pack-protocol: mention and point to docs for protocol v2
Doc update.
Will merge to 'master'.
* ds/reachable (2018-07-20) 18 commits
- commit-reach: use can_all_from_reach
- commit-reach: make can_all_from_reach... linear
- commit-reach: replace ref_newer logic
- test-reach: test commit_contains
- test-reach: test can_all_from_reach_with_flags
- test-reach: test reduce_heads
- test-reach: test get_merge_bases_many
- test-reach: test is_descendant_of
- test-reach: test in_merge_bases
- test-reach: create new test tool for ref_newer
- commit-reach: move can_all_from_reach_with_flags
- upload-pack: generalize commit date cutoff
- upload-pack: refactor ok_to_give_up()
- upload-pack: make reachable() more generic
- commit-reach: move commit_contains from ref-filter
- commit-reach: move ref_newer from remote.c
- commit.h: remove method declarations
- commit-reach: move walk methods from commit.c
The code for computing history reachability has been shuffled,
obtained a bunch of new tests to cover them, and then being
improved.
Will merge to and cook in 'next'.
* en/merge-recursive-skip-fix (2018-07-27) 2 commits
- merge-recursive: preserve skip_worktree bit when necessary
- t3507: add a testcase showing failure with sparse checkout
When the sparse checkout feature is in use, "git cherry-pick" and
other mergy operations lost the skip_worktree bit when a path that
is excluded from checkout requires content level merge, which is
resolved as the same as the HEAD version, without materializing the
merge result in the working tree, which made the path appear as
deleted. This has been corrected by preserving the skip_worktree
bit (and not materializing the file in the working tree).
Will merge to 'next'.
* es/format-patch-interdiff (2018-07-23) 6 commits
- format-patch: allow --interdiff to apply to a lone-patch
- log-tree: show_log: make commentary block delimiting reusable
- interdiff: teach show_interdiff() to indent interdiff
- format-patch: teach --interdiff to respect -v/--reroll-count
- format-patch: add --interdiff option to embed diff in cover letter
- format-patch: allow additional generated content in make_cover_letter()
(this branch is used by es/format-patch-rangediff.)
"git format-patch" learned a new "--interdiff" option to explain
the difference between this version and the previous atttempt in
the cover letter (or after the tree-dashes as a comment).
Stuck in review?
cf. <CAPig+cSuYUYSPTuKx08wcmQM-G12_-W2T4BS07fA=6grM1b8Gw@mail.gmail.com>
* es/format-patch-rangediff (2018-07-30) 10 commits
- format-patch: allow --range-diff to apply to a lone-patch
- format-patch: add --creation-factor tweak for --range-diff
- format-patch: teach --range-diff to respect -v/--reroll-count
- format-patch: extend --range-diff to accept revision range
- format-patch: add --range-diff option to embed diff in cover letter
- range-diff: relieve callers of low-level configuration burden
- range-diff: publish default creation factor
- range-diff: respect diff_option.file rather than assuming 'stdout'
- Merge branch 'es/format-patch-interdiff' into es/format-patch-rangediff
- Merge branch 'js/range-diff' into es/format-patch-rangediff
(this branch uses es/format-patch-interdiff and js/range-diff; is tangled with sb/range-diff-colors.)
"git format-patch" learned a new "--range-diff" option to explain
the difference between this version and the previous atttempt in
the cover letter (or after the tree-dashes as a comment).
Need to wait for the prereq topics to solidify a bit more.
* jk/banned-function (2018-07-26) 5 commits
- banned.h: mark strncpy() as banned
- banned.h: mark sprintf() as banned
- banned.h: mark strcat() as banned
- automatically ban strcpy()
- Merge branch 'sb/blame-color' into jk/banned-function
It is too easy to misuse system API functions such as strcat();
these selected functions are now forbidden in this codebase and
will cause a compilation failure.
Will merge to 'next'.
* jk/size-t (2018-07-24) 6 commits
(merged to 'next' on 2018-08-02 at 6f861e05f0)
+ strbuf_humanise: use unsigned variables
+ pass st.st_size as hint for strbuf_readlink()
+ strbuf_readlink: use ssize_t
+ strbuf: use size_t for length in intermediate variables
+ reencode_string: use size_t for string lengths
+ reencode_string: use st_add/st_mult helpers
Code clean-up to use size_t/ssize_t when they are the right type.
Will merge to 'master'.
* js/t7406-recursive-submodule-update-order-fix (2018-07-23) 1 commit
(merged to 'next' on 2018-08-02 at 217ea36a37)
+ t7406: avoid failures solely due to timing issues
Test fix.
Will merge to 'master'.
* js/vscode (2018-07-30) 9 commits
- vscode: let cSpell work on commit messages, too
- vscode: add a dictionary for cSpell
- vscode: use 8-space tabs, no trailing ws, etc for Git's source code
- vscode: wrap commit messages at column 72 by default
- vscode: only overwrite C/C++ settings
- mingw: define WIN32 explicitly
- cache.h: extract enum declaration from inside a struct declaration
- vscode: hard-code a couple defines
- contrib: add a script to initialize VS Code configuration
Add a script (in contrib/) to help users of VSCode work better with
our codebase.
Will merge to 'next'.
* jt/tag-following-with-proto-v2-fix (2018-07-24) 2 commits
(merged to 'next' on 2018-08-02 at d9eabdea95)
+ fetch: send "refs/tags/" prefix upon CLI refspecs
+ t5702: test fetch with multiple refspecs at a time
The wire-protocol v2 relies on the client to send "ref prefixes" to
limit the bandwidth spent on the initial ref advertisement. "git
fetch $remote branch:branch" that asks tags that point into the
history leading to the "branch" automatically followed sent to
narrow prefix and broke the tag following, which has been fixed.
Will merge to 'master'.
* nd/pack-deltify-regression-fix (2018-07-23) 1 commit
(merged to 'next' on 2018-08-02 at f3b2bf0fef)
+ pack-objects: fix performance issues on packing large deltas
In a recent update in 2.18 era, "git pack-objects" started
producing a larger than necessary packfiles by missing
opportunities to use large deltas.
Will cook in 'next'.
* sb/trailers-docfix (2018-07-20) 1 commit
(merged to 'next' on 2018-08-02 at ba348fafcd)
+ Documentation/git-interpret-trailers: explain possible values
Doc update.
Will merge to 'master'.
* sg/coccicheck-updates (2018-07-23) 5 commits
(merged to 'next' on 2018-08-02 at b5548ff3a9)
+ coccinelle: extract dedicated make target to clean Coccinelle's results
+ coccinelle: put sane filenames into output patches
+ coccinelle: exclude sha1dc source files from static analysis
+ coccinelle: use $(addsuffix) in 'coccicheck' make target
+ coccinelle: mark the 'coccicheck' make target as .PHONY
Update the way we use Coccinelle to find out-of-style code that
need to be modernised.
Will merge to 'master'.
* sg/fast-import-dump-refs-on-checkpoint-fix (2018-07-20) 1 commit
(merged to 'next' on 2018-08-02 at f5c05b5a2c)
+ t9300: wait for background fast-import process to die after killing it
Test update.
Will merge to 'master'.
* sg/travis-cocci-diagnose-failure (2018-07-23) 2 commits
(merged to 'next' on 2018-08-02 at 54808a8778)
+ travis-ci: fail if Coccinelle static analysis found something to transform
+ travis-ci: run Coccinelle static analysis with two parallel jobs
Update the way we run static analysis tool at TravisCI to make it
easier to use its findings.
Will merge to 'master'.
* ab/newhash-is-sha256 (2018-07-26) 2 commits
- doc hash-function-transition: pick SHA-256 as NewHash
- doc hash-function-transition: note the lack of a changelog
Documentation update.
Will merge to 'next'.
* bb/redecl-enum-fix (2018-07-26) 1 commit
- packfile: ensure that enum object_type is defined
Compilation fix.
Will merge to 'next'.
* jh/structured-logging (2018-07-25) 25 commits
- structured-logging: add config data facility
- structured-logging: t0420 tests for interacitve child_summary
- structured-logging: t0420 tests for child process detail events
- structured-logging: add child process classification
- structured-logging: add detail-events for child processes
- structured-logging: add structured logging to remote-curl
- structured-logging: t0420 tests for aux-data
- structured-logging: add aux-data for size of sparse-checkout file
- structured-logging: add aux-data for index size
- structured-logging: add aux-data facility
- structured-logging: t0420 tests for timers
- structured-logging: add timer around preload_index
- structured-logging: add timer around wt-status functions
- structured-logging: add timer around do_write_index
- structured-logging: add timer around do_read_index
- structured-logging: add timer facility
- structured-logging: add detail-event for lazy_init_name_hash
- structured-logging: add detail-event facility
- structured-logging: t0420 basic tests
- structured-logging: set sub_command field for checkout command
- structured-logging: set sub_command field for branch command
- structured-logging: add session-id to log events
- structured-logging: add structured logging framework
- structured-logging: add STRUCTURED_LOGGING=1 to Makefile
- structured-logging: design document
(this branch uses jh/json-writer.)
Will merge to 'next'.
* en/abort-df-conflict-fixes (2018-07-31) 2 commits
- read-cache: fix directory/file conflict handling in read_index_unmerged()
- t1015: demonstrate directory/file conflict recovery failures
"git merge --abort" etc. did not clean things up properly when
there were conflicted entries in certain order that are involved
in D/F conflicts. This has been corrected.
Will merge to 'next'.
* hs/gpgsm (2018-07-20) 7 commits
(merged to 'next' on 2018-08-02 at db28bffe4f)
+ gpg-interface t: extend the existing GPG tests with GPGSM
+ gpg-interface: introduce new signature format "x509" using gpgsm
+ gpg-interface: introduce new config to select per gpg format program
+ gpg-interface: do not hardcode the key string len anymore
+ gpg-interface: introduce an abstraction for multiple gpg formats
+ t/t7510: check the validation of the new config gpg.format
+ gpg-interface: add new config to select how to sign a commit
Teach "git tag -s" etc. a few configuration varaibles (gpg.format
that can be set to "openpgp" or "x509", and gpg.<format>.program
that is used to specify what program to use to deal with the format)
to allow x.509 certs with CMS via "gpgsm" to be used instead of
openpgp via "gnupg".
Will merge to 'master'.
* jn/gc-auto (2018-07-17) 3 commits
- gc: do not return error for prior errors in daemonized mode
- gc: exit with status 128 on failure
- gc: improve handling of errors reading gc.log
"gc --auto" ended up calling exit(-1) upon error, which has been
corrected to use exit(1). Also the error reporting behaviour when
daemonized has been updated to exit with zero status when stopping
due to a previously discovered error (which implies there is no
point running gc to improve the situation); we used to exit with
failure in such a case.
Stuck in review?
cf. <20180717201348.GD26218@sigill.intra.peff.net>
* sb/submodule-update-in-c (2018-07-18) 6 commits
- submodule--helper: introduce new update-module-mode helper
- builtin/submodule--helper: factor out method to update a single submodule
- builtin/submodule--helper: store update_clone information in a struct
- builtin/submodule--helper: factor out submodule updating
- git-submodule.sh: rename unused variables
- git-submodule.sh: align error reporting for update mode to use path
"git submodule update" is getting rewritten piece-by-piece into C.
Will merge to 'next'.
* sl/commit-dry-run-with-short-output-fix (2018-07-30) 4 commits
. commit: fix exit code when doing a dry run
. wt-status: teach wt_status_collect about merges in progress
. wt-status: rename commitable to committable
. t7501: add coverage for flags which imply dry runs
"git commit --dry-run" gave a correct exit status even during a
conflict resolution toward a merge, but it did not with the
"--short" option, which has been corrected.
Seems to break 7512, 3404 and 7060 in 'pu'.
* tg/rerere (2018-07-16) 11 commits
- rerere: recalculate conflict ID when unresolved conflict is committed
- rerere: teach rerere to handle nested conflicts
- rerere: return strbuf from handle path
- rerere: factor out handle_conflict function
- rerere: only return whether a path has conflicts or not
- rerere: fix crash when conflict goes unresolved
- rerere: add documentation for conflict normalization
- rerere: mark strings for translation
- rerere: wrap paths in output in sq
- rerere: lowercase error messages
- rerere: unify error messages when read_cache fails
Fixes to "git rerere" corner cases, especially when conflict
markers cannot be parsed in the file.
I am not sure about the "nested" stuff, though.
* jk/ui-color-always-to-auto (2018-07-18) 1 commit
(merged to 'next' on 2018-08-02 at 1a054baf0e)
+ Documentation: fix --color option formatting
Doc formatting fix.
Will merge to 'master'.
* jh/json-writer (2018-07-16) 1 commit
(merged to 'next' on 2018-08-02 at d841450c7d)
+ json_writer: new routines to create JSON data
(this branch is used by jh/structured-logging.)
Preparatory code to later add json output for telemetry data.
Will merge to 'master'.
* ag/rebase-i-in-c (2018-07-31) 20 commits
- rebase -i: move rebase--helper modes to rebase--interactive
- rebase -i: remove git-rebase--interactive.sh
- rebase--interactive2: rewrite the submodes of interactive rebase in C
- rebase -i: implement the main part of interactive rebase as a builtin
- rebase -i: rewrite init_basic_state() in C
- rebase -i: rewrite write_basic_state() in C
- rebase -i: rewrite the rest of init_revisions_and_shortrevisions() in C
- rebase -i: implement the logic to initialize $revisions in C
- rebase -i: remove unused modes and functions
- rebase -i: rewrite complete_action() in C
- t3404: todo list with commented-out commands only aborts
- sequencer: change the way skip_unnecessary_picks() returns its result
- sequencer: refactor append_todo_help() to write its message to a buffer
- rebase -i: rewrite checkout_onto() in C
- rebase -i: rewrite setup_reflog_action() in C
- sequencer: add a new function to silence a command, except if it fails
- rebase -i: rewrite the edit-todo functionality in C
- editor: add a function to launch the sequence editor
- rebase -i: rewrite append_todo_help() in C
- sequencer: make two functions and an enum from sequencer.c public
Rewrite of the remaining "rebase -i" machinery in C.
Will merge to 'next'.
* js/range-diff (2018-07-30) 21 commits
- range-diff: use dim/bold cues to improve dual color mode
- range-diff: make --dual-color the default mode
- range-diff: left-pad patch numbers
- completion: support `git range-diff`
- range-diff: populate the man page
- range-diff --dual-color: fix bogus white-space warning
- range-diff: offer to dual-color the diffs
- diff: add an internal option to dual-color diffs of diffs
- color: add the meta color GIT_COLOR_REVERSE
- range-diff: use color for the commit pairs
- range-diff: add tests
- range-diff: do not show "function names" in hunk headers
- range-diff: adjust the output of the commit pairs
- range-diff: suppress the diff headers
- range-diff: indent the diffs just like tbdiff
- range-diff: right-trim commit messages
- range-diff: also show the diff between patches
- range-diff: improve the order of the shown commits
- range-diff: first rudimentary implementation
- Introduce `range-diff` to compare iterations of a topic branch
- linear-assignment: a function to solve least-cost assignment problems
(this branch is used by es/format-patch-rangediff and sb/range-diff-colors.)
"git tbdiff" that lets us compare individual patches in two
iterations of a topic has been rewritten and made into a built-in
command.
It seems there will another hopefully the final reroll coming.
cf. <nycvar.QRO.7.76.6.1808011800570.71@tvgsbejvaqbjf.bet>
* lt/date-human (2018-07-09) 1 commit
- Add 'human' date format
A new date format "--date=human" that morphs its output depending
on how far the time is from the current time has been introduced.
"--date=auto" can be used to use this new format when the output is
goint to the pager or to the terminal and otherwise the default
format.
* ot/ref-filter-object-info (2018-07-17) 5 commits
- ref-filter: use oid_object_info() to get object
- ref-filter: merge get_obj and get_object
- ref-filter: initialize eaten variable
- ref-filter: fill empty fields with empty values
- ref-filter: add info_source to valid_atom
A few atoms like %(objecttype) and %(objectsize) in the format
specifier of "for-each-ref --format=<format>" can be filled without
getting the full contents of the object, but just with the object
header. These cases have been optimzied by calling
oid_object_info() API.
Will merge to 'next'.
* pk/rebase-in-c (2018-07-30) 3 commits
- builtin/rebase: support running "git rebase <upstream>"
- rebase: refactor common shell functions into their own file
- rebase: start implementing it as a builtin
Rewrite of the "rebase" machinery in C.
Will merge to 'next'.
* jk/branch-l-1-repurpose (2018-06-22) 1 commit
- branch: make "-l" a synonym for "--list"
Updated plan to repurpose the "-l" option to "git branch".
Will hold in 'pu' until jk/branch-l-0-deprecation progresses sufficiently.
* cc/remote-odb (2018-08-02) 9 commits
- Documentation/config: add odb.<name>.promisorRemote
- t0410: test fetching from many promisor remotes
- Use odb.origin.partialclonefilter instead of core.partialclonefilter
- Use remote_odb_get_direct() and has_remote_odb()
- remote-odb: add remote_odb_reinit()
- remote-odb: implement remote_odb_get_many_direct()
- remote-odb: implement remote_odb_get_direct()
- Add initial remote odb support
- fetch-object: make functions return an error code
Implement lazy fetches of missing objects to complement the
experimental partial clone feature.
I haven't seen much interest in this topic on list. What's the
doneness of this thing?
I do not particularly mind adding code to support a niche feature
as long as it is cleanly made and it is clear that the feature
won't negatively affect those who do not use it, so a review from
that point of view may also be appropriate.
* ds/multi-pack-index (2018-07-20) 23 commits
- midx: clear midx on repack
- packfile: skip loading index if in multi-pack-index
- midx: prevent duplicate packfile loads
- midx: use midx in approximate_object_count
- midx: use existing midx when writing new one
- midx: use midx in abbreviation calculations
- midx: read objects from multi-pack-index
- config: create core.multiPackIndex setting
- midx: write object offsets
- midx: write object id fanout chunk
- midx: write object ids in a chunk
- midx: sort and deduplicate objects from packfiles
- midx: read pack names into array
- multi-pack-index: write pack names in chunk
- multi-pack-index: read packfile list
- packfile: generalize pack directory list
- t5319: expand test data
- multi-pack-index: load into memory
- midx: write header information to lockfile
- multi-pack-index: add 'write' verb
- multi-pack-index: add builtin
- multi-pack-index: add format details
- multi-pack-index: add design document
When there are too many packfiles in a repository (which is not
recommended), looking up an object in these would require
consulting many pack .idx files; a new mechanism to have a single
file that consolidates all of these .idx files is introduced.
Will merge to and cook in 'next'.
--------------------------------------------------
[Discarded]
* am/sequencer-author-script-fix (2018-07-18) 1 commit
. sequencer.c: terminate the last line of author-script properly
The author-script that records the author information created by
the sequencer machinery lacked the closing single quote on the last
entry.
Superseded by another topic.
* jc/push-cas-opt-comment (2018-08-01) 1 commit
. push: comment on a funny unbalanced option help
Code clarification.
Superseded by another topic.
^ permalink raw reply [relevance 3%]
* [PATCH v3 2/2] read-cache: fix directory/file conflict handling in read_index_unmerged()
@ 2018-07-31 17:12 2% ` Elijah Newren
0 siblings, 0 replies; 200+ results
From: Elijah Newren @ 2018-07-31 17:12 UTC (permalink / raw)
To: gitster; +Cc: git, sunshine, Elijah Newren
read_index_unmerged() has two intended purposes:
* return 1 if there are any unmerged entries, 0 otherwise
* drops any higher-stage entries down to stage #0
There are several callers of read_index_unmerged() that check the return
value to see if it is non-zero, all of which then die() if that condition
is met. For these callers, dropping higher-stage entries down to stage #0
is a waste of resources, and returning immediately on first unmerged entry
would be better. But it's probably only a very minor difference and isn't
the focus of this series.
The remaining callers ignore the return value and call this function for
the side effect of dropping higher-stage entries down to stage #0. As
mentioned in commit e11d7b596970 ("'reset --merge': fix unmerged case",
2009-12-31),
The _only_ reason we want to keep a previously unmerged entry in the
index at stage #0 is so that we don't forget the fact that we have
corresponding file in the work tree in order to be able to remove it
when the tree we are resetting to does not have the path.
In fact, prior to commit d1a43f2aa4bf ("reset --hard/read-tree --reset -u:
remove unmerged new paths", 2008-10-15), read_index_unmerged() did just
remove unmerged entries from the cache immediately but that had the
unwanted effect of leaving around new untracked files in the tree from
aborted merges.
So, that's the intended purpose of this function. The problem is that
when directory/files conflicts are present, trying to add the file to the
index at stage 0 fails (because there is still a directory in the way),
and the function returns early with a -1 return code to signify the error.
As noted above, none of the callers who want the drop-to-stage-0 behavior
check the return status, though, so this means all remaining unmerged
entries remain in the index and the callers proceed assuming otherwise.
Users then see errors of the form:
error: 'DIR-OR-FILE' appears as both a file and as a directory
error: DIR-OR-FILE: cannot drop to stage #0
and potentially also messages about other unmerged entries which came
lexicographically later than whatever pathname was both a file and a
directory. Google finds a few hits searching for those messages,
suggesting there were probably a couple people who hit this besides me.
Luckily, calling `git reset --hard` multiple times would workaround
this bug.
Since the whole purpose here is to just put the entry *temporarily* into
the index so that any associated file in the working copy can be removed,
we can just skip the DFCHECK and allow both the file and directory to
appear in the index. The temporary simultaneous appearance of the
directory and file entries in the index will be removed by the callers
by calling unpack_trees(), which excludes these unmerged entries marked
with CE_CONFLICTED flag from the resulting index, before they attempt to
write the index anywhere.
Signed-off-by: Elijah Newren <newren@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
---
read-cache.c | 13 ++++++++-----
t/t1015-read-index-unmerged.sh | 8 ++++----
t/t6020-merge-df.sh | 3 ---
t/t6042-merge-rename-corner-cases.sh | 2 --
4 files changed, 12 insertions(+), 14 deletions(-)
diff --git a/read-cache.c b/read-cache.c
index 372588260e..666d295a5a 100644
--- a/read-cache.c
+++ b/read-cache.c
@@ -2632,10 +2632,13 @@ int write_locked_index(struct index_state *istate, struct lock_file *lock,
/*
* Read the index file that is potentially unmerged into given
- * index_state, dropping any unmerged entries. Returns true if
- * the index is unmerged. Callers who want to refuse to work
- * from an unmerged state can call this and check its return value,
- * instead of calling read_cache().
+ * index_state, dropping any unmerged entries to stage #0 (potentially
+ * resulting in a path appearing as both a file and a directory in the
+ * index; the caller is responsible to clear out the extra entries
+ * before writing the index to a tree). Returns true if the index is
+ * unmerged. Callers who want to refuse to work from an unmerged
+ * state can call this and check its return value, instead of calling
+ * read_cache().
*/
int read_index_unmerged(struct index_state *istate)
{
@@ -2658,7 +2661,7 @@ int read_index_unmerged(struct index_state *istate)
new_ce->ce_flags = create_ce_flags(0) | CE_CONFLICTED;
new_ce->ce_namelen = len;
new_ce->ce_mode = ce->ce_mode;
- if (add_index_entry(istate, new_ce, 0))
+ if (add_index_entry(istate, new_ce, ADD_CACHE_SKIP_DFCHECK))
return error("%s: cannot drop to stage #0",
new_ce->name);
}
diff --git a/t/t1015-read-index-unmerged.sh b/t/t1015-read-index-unmerged.sh
index 32ef6bdcfa..55d22da32c 100755
--- a/t/t1015-read-index-unmerged.sh
+++ b/t/t1015-read-index-unmerged.sh
@@ -30,7 +30,7 @@ test_expect_success 'setup modify/delete + directory/file conflict' '
)
'
-test_expect_failure 'read-tree --reset cleans unmerged entries' '
+test_expect_success 'read-tree --reset cleans unmerged entries' '
test_when_finished "git -C df_plus_modify_delete clean -f" &&
test_when_finished "git -C df_plus_modify_delete reset --hard" &&
(
@@ -45,7 +45,7 @@ test_expect_failure 'read-tree --reset cleans unmerged entries' '
)
'
-test_expect_failure 'One reset --hard cleans unmerged entries' '
+test_expect_success 'One reset --hard cleans unmerged entries' '
test_when_finished "git -C df_plus_modify_delete clean -f" &&
test_when_finished "git -C df_plus_modify_delete reset --hard" &&
(
@@ -87,7 +87,7 @@ test_expect_success 'setup directory/file conflict + simple edit/edit' '
)
'
-test_expect_failure 'git merge --abort succeeds despite D/F conflict' '
+test_expect_success 'git merge --abort succeeds despite D/F conflict' '
test_when_finished "git -C df_plus_edit_edit clean -f" &&
test_when_finished "git -C df_plus_edit_edit reset --hard" &&
(
@@ -103,7 +103,7 @@ test_expect_failure 'git merge --abort succeeds despite D/F conflict' '
)
'
-test_expect_failure 'git am --skip succeeds despite D/F conflict' '
+test_expect_success 'git am --skip succeeds despite D/F conflict' '
test_when_finished "git -C df_plus_edit_edit clean -f" &&
test_when_finished "git -C df_plus_edit_edit reset --hard" &&
(
diff --git a/t/t6020-merge-df.sh b/t/t6020-merge-df.sh
index 2af1beec5f..46b506b3b7 100755
--- a/t/t6020-merge-df.sh
+++ b/t/t6020-merge-df.sh
@@ -89,9 +89,6 @@ test_expect_success 'modify/delete + directory/file conflict' '
'
test_expect_success 'modify/delete + directory/file conflict; other way' '
- # Yes, we really need the double reset since "letters" appears as
- # both a file and a directory.
- git reset --hard &&
git reset --hard &&
git clean -f &&
git checkout modify^0 &&
diff --git a/t/t6042-merge-rename-corner-cases.sh b/t/t6042-merge-rename-corner-cases.sh
index 411550d2b6..de77bfaf4f 100755
--- a/t/t6042-merge-rename-corner-cases.sh
+++ b/t/t6042-merge-rename-corner-cases.sh
@@ -235,7 +235,6 @@ test_expect_success 'setup content merge + rename/directory conflict' '
'
test_expect_success 'rename/directory conflict + clean content merge' '
- git reset --hard &&
git reset --hard &&
git clean -fdqx &&
@@ -259,7 +258,6 @@ test_expect_success 'rename/directory conflict + clean content merge' '
'
test_expect_success 'rename/directory conflict + content merge conflict' '
- git reset --hard &&
git reset --hard &&
git clean -fdqx &&
--
2.18.0.2.gf4c50c7885
^ permalink raw reply related [relevance 2%]
* What's cooking in git.git (Jul 2018, #03; Wed, 25)
@ 2018-07-25 22:13 3% Junio C Hamano
0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2018-07-25 22:13 UTC (permalink / raw)
To: git
Here are the topics that have been cooking. Commits prefixed with
'-' are only in 'pu' (proposed updates) while commits prefixed with
'+' are in 'next'. The ones marked with '.' do not appear in any of
the integration branches, but I am still holding onto them.
Many topics have moved to 'master' and 'next' from 'next' to 'pu'
respectively.
You can find the changes described here in the integration branches
of the repositories listed at
http://git-blame.blogspot.com/p/git-public-repositories.html
--------------------------------------------------
[Graduated to "master"]
* ag/rebase-p (2018-07-06) 1 commit
(merged to 'next' on 2018-07-18 at c36ebba99b)
+ git-rebase--preserve-merges: fix formatting of todo help message
The help message shown in the editor to edit todo list in "rebase -p"
has regressed recently, which has been corrected.
* as/sequencer-customizable-comment-char (2018-07-16) 1 commit
(merged to 'next' on 2018-07-18 at 4163e23f29)
+ sequencer: use configured comment character
Honor core.commentchar when preparing the list of commits to replay
in "rebase -i".
* bb/pedantic (2018-07-09) 8 commits
(merged to 'next' on 2018-07-18 at e9d075e8ed)
+ utf8.c: avoid char overflow
+ string-list.c: avoid conversion from void * to function pointer
+ sequencer.c: avoid empty statements at top level
+ convert.c: replace "\e" escapes with "\033".
+ fixup! refs/refs-internal.h: avoid forward declaration of an enum
+ refs/refs-internal.h: avoid forward declaration of an enum
+ fixup! connect.h: avoid forward declaration of an enum
+ connect.h: avoid forward declaration of an enum
(this branch is used by bb/make-developer-pedantic.)
The codebase has been updated to compile cleanly with -pedantic
option.
* bb/unicode-11-width (2018-07-09) 1 commit
(merged to 'next' on 2018-07-18 at 075648ed37)
+ unicode: update the width tables to Unicode 11
The character display width table has been updated to match the
latest Unicode standard.
* bc/send-email-auto-cte (2018-07-09) 4 commits
(merged to 'next' on 2018-07-18 at d16c2a301a)
+ docs: correct RFC specifying email line length
+ send-email: automatically determine transfer-encoding
+ send-email: accept long lines with suitable transfer encoding
+ send-email: add an auto option for transfer encoding
The content-transfer-encoding of the message "git send-email" sends
out by default was 8bit, which can cause trouble when there is an
overlong line to bust RFC 5322/2822 limit. A new option 'auto' to
automatically switch to quoted-printable when there is such a line
in the payload has been introduced and is made the default.
* bp/log-ref-write-fd-with-strbuf (2018-07-10) 1 commit
(merged to 'next' on 2018-07-18 at 25a3a99528)
+ convert log_ref_write_fd() to use strbuf
Code clean-up.
* bw/ref-in-want (2018-06-28) 8 commits
(merged to 'next' on 2018-07-18 at 7e9f8db37c)
+ fetch-pack: implement ref-in-want
+ fetch-pack: put shallow info in output parameter
+ fetch: refactor to make function args narrower
+ fetch: refactor fetch_refs into two functions
+ fetch: refactor the population of peer ref OIDs
+ upload-pack: test negotiation with changing repository
+ upload-pack: implement ref-in-want
+ test-pkt-line: add unpack-sideband subcommand
(this branch is used by bw/fetch-pack-i18n, jt/connectivity-check-after-unshallow, jt/partial-clone-fsck-connectivity and jt/tags-to-promised-blobs-fix.)
Protocol v2 has been updated to allow slightly out-of-sync set of
servers to work together to serve a single client, which would be
useful with load-balanced servers that talk smart HTTP transport.
* en/apply-comment-fix (2018-06-28) 1 commit
(merged to 'next' on 2018-07-18 at 31d818f17d)
+ apply: fix grammar error in comment
* en/rebase-consistency (2018-06-27) 9 commits
(merged to 'next' on 2018-07-18 at d597206c79)
+ git-rebase: make --allow-empty-message the default
+ t3401: add directory rename testcases for rebase and am
+ git-rebase.txt: document behavioral differences between modes
+ directory-rename-detection.txt: technical docs on abilities and limitations
+ git-rebase.txt: address confusion between --no-ff vs --force-rebase
+ git-rebase: error out when incompatible options passed
+ t3422: new testcases for checking when incompatible options passed
+ git-rebase.sh: update help messages a bit
+ git-rebase.txt: document incompatible options
"git rebase" behaved slightly differently depending on which one of
the three backends gets used; this has been documented and an
effort to make them more uniform has begun.
* en/t5407-rebase-m-fix (2018-06-28) 1 commit
(merged to 'next' on 2018-07-18 at 459875daeb)
+ t5407: fix test to cover intended arguments
* es/test-lint-one-shot-export (2018-07-16) 5 commits
(merged to 'next' on 2018-07-18 at 26a6124963)
+ t/check-non-portable-shell: detect "FOO=bar shell_func"
+ t/check-non-portable-shell: make error messages more compact
+ t/check-non-portable-shell: stop being so polite
+ t6046/t9833: fix use of "VAR=VAL cmd" with a shell function
+ Merge branch 'jc/t3404-one-shot-export-fix' into es/test-lint-one-shot-export
(this branch uses jc/t3404-one-shot-export-fix.)
Look for broken use of "VAR=VAL shell_func" in test scripts as part
of test-lint.
* hs/push-cert-check-cleanup (2018-07-11) 2 commits
(merged to 'next' on 2018-07-18 at 1ed25fbd77)
+ gpg-interface: make parse_gpg_output static and remove from interface header
+ builtin/receive-pack: use check_signature from gpg-interface
(this branch is used by hs/gpgsm.)
Code clean-up.
* jc/t3404-one-shot-export-fix (2018-07-12) 1 commit
(merged to 'next' on 2018-07-18 at e15a79dca7)
+ t3404: fix use of "VAR=VAL cmd" with a shell function
(this branch is used by es/test-lint-one-shot-export.)
Correct a broken use of "VAR=VAL shell_func" in a test.
* jk/empty-pick-fix (2018-07-11) 2 commits
(merged to 'next' on 2018-07-18 at 43bfa862f2)
+ sequencer: don't say BUG on bogus input
+ sequencer: handle empty-set cases consistently
Handling of an empty range by "git cherry-pick" was inconsistent
depending on how the range ended up to be empty, which has been
corrected.
* jk/fetch-all-peeled-fix (2018-07-06) 1 commit
(merged to 'next' on 2018-07-18 at d06c6f1665)
+ t5500: prettify non-commit tag tests
Test modernization.
* jk/for-each-ref-icase (2018-07-03) 3 commits
(merged to 'next' on 2018-07-18 at 4c86d62adb)
+ ref-filter: avoid backend filtering with --ignore-case
+ for-each-ref: consistently pass WM_IGNORECASE flag
+ t6300: add a test for --ignore-case
The "--ignore-case" option of "git for-each-ref" (and its friends)
did not work correctly, which has been fixed.
* jt/connectivity-check-after-unshallow (2018-07-03) 1 commit
(merged to 'next' on 2018-07-18 at 8e7ee889c3)
+ fetch-pack: write shallow, then check connectivity
(this branch is used by jt/partial-clone-fsck-connectivity and jt/tags-to-promised-blobs-fix; uses bw/ref-in-want; is tangled with bw/fetch-pack-i18n.)
"git fetch" failed to correctly validate the set of objects it
received when making a shallow history deeper, which has been
corrected.
* jt/partial-clone-fsck-connectivity (2018-07-09) 2 commits
(merged to 'next' on 2018-07-18 at 968fd9c9f0)
+ clone: check connectivity even if clone is partial
+ upload-pack: send refs' objects despite "filter"
(this branch is used by jt/tags-to-promised-blobs-fix; uses bw/ref-in-want and jt/connectivity-check-after-unshallow; is tangled with bw/fetch-pack-i18n.)
Partial clone support of "git clone" has been updated to correctly
validate the objects it receives from the other side. The server
side has been corrected to send objects that are directly
requested, even if they may match the filtering criteria (e.g. when
doing a "lazy blob" partial clone).
* kn/userdiff-php (2018-07-06) 2 commits
(merged to 'next' on 2018-07-18 at 9a533dc33a)
+ userdiff: support new keywords in PHP hunk header
+ t4018: add missing test cases for PHP
The userdiff pattern for .php has been updated.
* mh/fast-import-no-diff-delta-empty (2018-07-06) 1 commit
(merged to 'next' on 2018-07-18 at eb393871f4)
+ fast-import: do not call diff_delta() with empty buffer
"git fast-import" has been updated to avoid attempting to create
delta against a zero-byte-long string, which is pointless.
* mk/merge-in-sparse-checkout (2018-07-11) 1 commit
(merged to 'next' on 2018-07-18 at d2a6d2684d)
+ unpack-trees: do not fail reset because of unmerged skipped entry
"git reset --merge" (hence "git merge ---abort") and "git reset --hard"
had trouble working correctly in a sparsely checked out working
tree after a conflict, which has been corrected.
* nd/command-list (2018-07-16) 1 commit
(merged to 'next' on 2018-07-18 at 77ed2a3914)
+ vcbuild/README: update to accommodate for missing common-cmds.h
Build doc update for Windows.
* rj/submodule-fsck-skip (2018-07-03) 1 commit
(merged to 'next' on 2018-07-11 at 985f88cf7e)
+ fsck: check skiplist for object in fsck_blob()
"fsck.skipList" did not prevent a blob object listed there from
being inspected for is contents (e.g. we recently started to
inspect the contents of ".gitmodules" for certain malicious
patterns), which has been corrected.
* sb/blame-color (2018-07-16) 1 commit
(merged to 'next' on 2018-07-18 at c319268502)
+ blame: prefer xsnprintf to strcpy for colors
(this branch is used by jk/banned-function.)
Code clean-up.
* sb/submodule-move-head-error-msg (2018-06-25) 1 commit
(merged to 'next' on 2018-07-18 at 9e213ad1aa)
+ submodule.c: report the submodule that an error occurs in
"git checkout --recurse-submodules another-branch" did not report
in which submodule it failed to update the working tree, which
resulted in an unhelpful error message.
* tb/config-default (2018-07-06) 1 commit
(merged to 'next' on 2018-07-18 at 7994476f6f)
+ builtin/config: work around an unsized array forward declaration
Compilation fix.
* wc/find-commit-with-pattern-on-detached-head (2018-07-12) 1 commit
(merged to 'next' on 2018-07-18 at 334d2420c0)
+ sha1-name.c: for ":/", find detached HEAD commits
"git rev-parse ':/substring'" did not consider the history leading
only to HEAD when looking for a commit with the given substring,
when the HEAD is detached. This has been fixed.
--------------------------------------------------
[New Topics]
* ds/commit-graph-with-grafts (2018-07-19) 8 commits
- commit-graph: close_commit_graph before shallow walk
- commit-graph: not compatible with uninitialized repo
- commit-graph: not compatible with grafts
- commit-graph: not compatible with replace objects
- test-repository: properly init repo
- commit-graph: update design document
- refs.c: upgrade for_each_replace_ref to be a each_repo_ref_fn callback
- refs.c: migrate internal ref iteration to pass thru repository argument
(this branch uses ds/commit-graph-fsck, jt/commit-graph-per-object-store and sb/object-store-lookup; is tangled with ds/reachable.)
The recently introduced commit-graph auxiliary data is incompatible
with mechanisms such as replace & grafts that "breaks" immutable
nature of the object reference relationship. Disable optimizations
based on its use (and updating existing commit-graph) when these
incompatible features are in use in the repository.
Will merge to 'next'.
* jk/core-use-replace-refs (2018-07-18) 3 commits
- add core.usereplacerefs config option
- check_replace_refs: rename to read_replace_refs
- check_replace_refs: fix outdated comment
A new configuration variable core.usereplacerefs has been added,
primarily to help server installations that want to ignore the
replace mechanism altogether.
Will merge to 'next'.
* nd/i18n (2018-07-23) 23 commits
- transport-helper.c: mark more strings for translation
- transport.c: mark more strings for translation
- sha1-file.c: mark more strings for translation
- sequencer.c: mark more strings for translation
- replace-object.c: mark more strings for translation
- refspec.c: mark more strings for translation
- refs.c: mark more strings for translation
- pkt-line.c: mark more strings for translation
- object.c: mark more strings for translation
- exec-cmd.c: mark more strings for translation
- environment.c: mark more strings for translation
- dir.c: mark more strings for translation
- convert.c: mark more strings for translation
- connect.c: mark more strings for translation
- config.c: mark more strings for translation
- commit-graph.c: mark more strings for translation
- builtin/replace.c: mark more strings for translation
- builtin/pack-objects.c: mark more strings for translation
- builtin/grep.c: mark strings for translation
- builtin/config.c: mark more strings for translation
- archive-zip.c: mark more strings for translation
- archive-tar.c: mark more strings for translation
- Update messages in preparation for i18n
Many more strings are prepared for l10n.
Will merge to 'next'.
* sb/histogram-less-memory (2018-07-23) 4 commits
- xdiff/histogram: remove tail recursion
- xdiff/xhistogram: move index allocation into find_lcs
- xdiff/xhistogram: factor out memory cleanup into free_index()
- xdiff/xhistogram: pass arguments directly to fall_back_to_classic_diff
"git diff --histogram" had a bad memory usage pattern, which has
been rearranged to reduce the peak usage.
Will merge to 'next'.
* bb/make-developer-pedantic (2018-07-25) 1 commit
- Makefile: add a DEVOPTS flag to get pedantic compilation
"make DEVELOPER=1 DEVOPTS=pedantic" allows developers to compile
with -pedantic option, which may catch more problematic program
constructs and potential bugs.
Will merge to 'next' and then to 'master'.
* bw/clone-ref-prefixes (2018-07-20) 1 commit
- clone: send ref-prefixes when using protocol v2
The wire-protocol v2 relies on the client to send "ref prefixes" to
limit the bandwidth spent on the initial ref advertisement. "git
clone" when learned to speak v2 forgot to do so, which has been
corrected.
Will merge to 'next'.
* bw/fetch-pack-i18n (2018-07-23) 1 commit
- fetch-pack: mark die strings for translation
i18n updates.
Will merge to 'next' and then to 'master'.
* bw/protocol-v2 (2018-07-24) 1 commit
- pack-protocol: mention and point to docs for protocol v2
Doc update.
Will merge to 'next' and then to 'master'.
* ds/reachable (2018-07-20) 18 commits
- commit-reach: use can_all_from_reach
- commit-reach: make can_all_from_reach... linear
- commit-reach: replace ref_newer logic
- test-reach: test commit_contains
- test-reach: test can_all_from_reach_with_flags
- test-reach: test reduce_heads
- test-reach: test get_merge_bases_many
- test-reach: test is_descendant_of
- test-reach: test in_merge_bases
- test-reach: create new test tool for ref_newer
- commit-reach: move can_all_from_reach_with_flags
- upload-pack: generalize commit date cutoff
- upload-pack: refactor ok_to_give_up()
- upload-pack: make reachable() more generic
- commit-reach: move commit_contains from ref-filter
- commit-reach: move ref_newer from remote.c
- commit.h: remove method declarations
- commit-reach: move walk methods from commit.c
(this branch uses ds/commit-graph-fsck, jt/commit-graph-per-object-store and sb/object-store-lookup; is tangled with ds/commit-graph-with-grafts.)
The code for computing history reachability has been shuffled,
obtained a bunch of new tests to cover them, and then being
improved.
Stuck in review?
cf. <20180723203500.231932-1-jonathantanmy@google.com>
cf. <20180723204112.233274-1-jonathantanmy@google.com>
cf. <CAGZ79kb7tWV=cmboA+nsChAUaiC+fVVM-GBCuWfsypC+-wyaVg@mail.gmail.com>
* en/merge-recursive-skip-fix (2018-07-23) 2 commits
- merge-recursive: preserve skip_worktree bit when necessary
- t3507: add a testcase showing failure with sparse checkout
When the sparse checkout feature is in use, "git cherry-pick" and
other mergy operations lost the skip_worktree bit when a path that
is excluded from checkout requires content level merge, which is
resolved as the same as the HEAD version, without materializing the
merge result in the working tree, which made the path appear as
deleted. This has been corrected by preserving the skip_worktree
bit (and not materializing the file in the working tree).
Stuck in review?
cf. <75aa297e-4857-d92a-7041-618ff3b0b77a@gmail.com>
* es/format-patch-interdiff (2018-07-23) 6 commits
- format-patch: allow --interdiff to apply to a lone-patch
- log-tree: show_log: make commentary block delimiting reusable
- interdiff: teach show_interdiff() to indent interdiff
- format-patch: teach --interdiff to respect -v/--reroll-count
- format-patch: add --interdiff option to embed diff in cover letter
- format-patch: allow additional generated content in make_cover_letter()
(this branch is used by es/format-patch-rangediff.)
"git format-patch" learned a new "--interdiff" option to explain
the difference between this version and the previous atttempt in
the cover letter (or after the tree-dashes as a comment).
Stuck in review?
cf. <CAPig+cSuYUYSPTuKx08wcmQM-G12_-W2T4BS07fA=6grM1b8Gw@mail.gmail.com>
* es/format-patch-rangediff (2018-07-25) 10 commits
- format-patch: allow --range-diff to apply to a lone-patch
- format-patch: add --creation-factor tweak for --range-diff
- format-patch: teach --range-diff to respect -v/--reroll-count
- format-patch: extend --range-diff to accept revision range
- format-patch: add --range-diff option to embed diff in cover letter
- range-diff: relieve callers of low-level configuration burden
- range-diff: publish default creation factor
- range-diff: respect diff_option.file rather than assuming 'stdout'
- Merge branch 'es/format-patch-interdiff' into es/format-patch-rangediff
- Merge branch 'js/range-diff' into es/format-patch-rangediff
(this branch uses es/format-patch-interdiff and js/range-diff.)
"git format-patch" learned a new "--range-diff" option to explain
the difference between this version and the previous atttempt in
the cover letter (or after the tree-dashes as a comment).
Need to wait for the prereq topics to solidify a bit more.
* jk/banned-function (2018-07-24) 5 commits
- banned.h: mark strncpy() as banned
- banned.h: mark sprintf() as banned
- banned.h: mark strcat() as banned
- automatically ban strcpy()
- Merge branch 'sb/blame-color' into jk/banned-function
It is too easy to misuse system API functions such as strcat();
these selected functions are now forbidden in this codebase and
will cause a compilation failure.
Will merge to 'next'.
* jk/size-t (2018-07-24) 6 commits
- strbuf_humanise: use unsigned variables
- pass st.st_size as hint for strbuf_readlink()
- strbuf_readlink: use ssize_t
- strbuf: use size_t for length in intermediate variables
- reencode_string: use size_t for string lengths
- reencode_string: use st_add/st_mult helpers
Code clean-up to use size_t/ssize_t when they are the right type.
Will merge to 'next'.
* js/t7406-recursive-submodule-update-order-fix (2018-07-23) 1 commit
- t7406: avoid failures solely due to timing issues
Test fix.
Will merge to 'next' and then to 'master'.
* js/vscode (2018-07-23) 9 commits
- vscode: let cSpell work on commit messages, too
- vscode: add a dictionary for cSpell
- vscode: use 8-space tabs, no trailing ws, etc for Git's source code
- vscode: wrap commit messages at column 72 by default
- vscode: only overwrite C/C++ settings
- mingw: define WIN32 explicitly
- cache.h: extract enum declaration from inside a struct declaration
- vscode: hard-code a couple defines
- contrib: add a script to initialize VS Code configuration
Add a script (in contrib/) to help users of VSCode work better with
our codebase.
Stuck in review?
cf. <20180723165719.GA16420@aiede.svl.corp.google.com>
cf. <20180723174108.GA9285@aiede.svl.corp.google.com>
* jt/tag-following-with-proto-v2-fix (2018-07-24) 2 commits
- fetch: send "refs/tags/" prefix upon CLI refspecs
- t5702: test fetch with multiple refspecs at a time
The wire-protocol v2 relies on the client to send "ref prefixes" to
limit the bandwidth spent on the initial ref advertisement. "git
fetch $remote branch:branch" that asks tags that point into the
history leading to the "branch" automatically followed sent to
narrow prefix and broke the tag following, which has been fixed.
Will merge to 'next'.
* nd/pack-deltify-regression-fix (2018-07-23) 1 commit
- pack-objects: fix performance issues on packing large deltas
In a recent update in 2.18 era, "git pack-objects" started
producing a larger than necessary packfiles by missing
opportunities to use large deltas.
Will merge to and cook in 'next'.
* sb/trailers-docfix (2018-07-20) 1 commit
- Documentation/git-interpret-trailers: explain possible values
Doc update.
Will merge to 'next' and then to 'master'.
* sg/coccicheck-updates (2018-07-23) 5 commits
- coccinelle: extract dedicated make target to clean Coccinelle's results
- coccinelle: put sane filenames into output patches
- coccinelle: exclude sha1dc source files from static analysis
- coccinelle: use $(addsuffix) in 'coccicheck' make target
- coccinelle: mark the 'coccicheck' make target as .PHONY
Update the way we use Coccinelle to find out-of-style code that
need to be modernised.
Will merge to 'next'.
* sg/fast-import-dump-refs-on-checkpoint-fix (2018-07-20) 1 commit
- t9300: wait for background fast-import process to die after killing it
Test update.
Will merge to 'next' and then to 'master'.
* sg/travis-cocci-diagnose-failure (2018-07-23) 2 commits
- travis-ci: fail if Coccinelle static analysis found something to transform
- travis-ci: run Coccinelle static analysis with two parallel jobs
Update the way we run static analysis tool at TravisCI to make it
easier to use its findings.
Will merge to 'next' and then to 'master'.
* ab/newhash-is-sha256 (2018-07-25) 1 commit
- doc hash-function-transition: note the lack of a changelog
Documentation update.
Waiting for another attempt for the second part.
* bb/redecl-enum-fix (2018-07-25) 1 commit
- packfile: drop a repeated enum declaration
Compilation fix.
* es/diff-color-move-fix (2018-07-25) 1 commit
- diff: --color-moved: rename "dimmed_zebra" to "dimmed-zebra"
One of the "diff --color-moved" mode "dimmed_zebra" that was named
in an unusual way has been deprecated and replaced by
"dimmed-zebra".
Will merge to 'next' and then to 'master'.
* jh/structured-logging (2018-07-25) 25 commits
- structured-logging: add config data facility
- structured-logging: t0420 tests for interacitve child_summary
- structured-logging: t0420 tests for child process detail events
- structured-logging: add child process classification
- structured-logging: add detail-events for child processes
- structured-logging: add structured logging to remote-curl
- structured-logging: t0420 tests for aux-data
- structured-logging: add aux-data for size of sparse-checkout file
- structured-logging: add aux-data for index size
- structured-logging: add aux-data facility
- structured-logging: t0420 tests for timers
- structured-logging: add timer around preload_index
- structured-logging: add timer around wt-status functions
- structured-logging: add timer around do_write_index
- structured-logging: add timer around do_read_index
- structured-logging: add timer facility
- structured-logging: add detail-event for lazy_init_name_hash
- structured-logging: add detail-event facility
- structured-logging: t0420 basic tests
- structured-logging: set sub_command field for checkout command
- structured-logging: set sub_command field for branch command
- structured-logging: add session-id to log events
- structured-logging: add structured logging framework
- structured-logging: add STRUCTURED_LOGGING=1 to Makefile
- structured-logging: design document
(this branch uses jh/json-writer.)
X-Gah.
--------------------------------------------------
[Stalled]
* pw/add-p-select (2018-03-16) 3 commits
- add -p: optimize line selection for short hunks
- add -p: allow line selection to be inverted
- add -p: select individual hunk lines
"git add -p" interactive interface learned to let users choose
individual added/removed lines to be used in the operation, instead
of accepting or rejecting a whole hunk.
Expecting a reroll to reignite the discussion.
cf. <9895c7b7-eac4-28c1-90c6-443acd1131b7@talktalk.net>
* hn/bisect-first-parent (2018-04-21) 1 commit
- bisect: create 'bisect_flags' parameter in find_bisection()
Preliminary code update to allow passing more flags down the
bisection codepath in the future.
We do not add random code that does not have real users to our
codebase, so let's have it wait until such a real code materializes
before too long.
* av/fsmonitor-updates (2018-01-04) 6 commits
- fsmonitor: use fsmonitor data in `git diff`
- fsmonitor: remove debugging lines from t/t7519-status-fsmonitor.sh
- fsmonitor: make output of test-dump-fsmonitor more concise
- fsmonitor: update helper tool, now that flags are filled later
- fsmonitor: stop inline'ing mark_fsmonitor_valid / _invalid
- dir.c: update comments to match argument name
Code clean-up on fsmonitor integration, plus optional utilization
of the fsmonitor data in diff-files.
Waiting for an update.
cf. <alpine.DEB.2.21.1.1801042335130.32@MININT-6BKU6QN.europe.corp.microsoft.com>
* pb/bisect-helper-2 (2018-07-23) 8 commits
- t6030: make various test to pass GETTEXT_POISON tests
- bisect--helper: `bisect_start` shell function partially in C
- bisect--helper: `get_terms` & `bisect_terms` shell function in C
- bisect--helper: `bisect_next_check` shell function in C
- bisect--helper: `check_and_set_terms` shell function in C
- wrapper: move is_empty_file() and rename it as is_empty_or_missing_file()
- bisect--helper: `bisect_write` shell function in C
- bisect--helper: `bisect_reset` shell function in C
Expecting a reroll.
cf. <0102015f5e5ee171-f30f4868-886f-47a1-a4e4-b4936afc545d-000000@eu-west-1.amazonses.com>
I just rebased the topic to a newer base as it did not build
standalone with the base I originally queued the topic on, but
otherwise there is no update to address any of the review comments
in the thread above---we are still waiting for a reroll.
* mk/http-backend-content-length (2018-06-11) 3 commits
- http-backend: respect CONTENT_LENGTH for receive-pack
- http-backend: respect CONTENT_LENGTH as specified by rfc3875
- http-backend: cleanup writing to child process
The http-backend (used for smart-http transport) used to slurp the
whole input until EOF, without paying attention to CONTENT_LENGTH
that is supplied in the environment and instead expecting the Web
server to close the input stream. This has been fixed.
* jk/drop-ancient-curl (2017-08-09) 5 commits
- http: #error on too-old curl
- curl: remove ifdef'd code never used with curl >=7.19.4
- http: drop support for curl < 7.19.4
- http: drop support for curl < 7.16.0
- http: drop support for curl < 7.11.1
Some code in http.c that has bitrot is being removed.
Expecting a reroll.
* mk/use-size-t-in-zlib (2017-08-10) 1 commit
. zlib.c: use size_t for size
The wrapper to call into zlib followed our long tradition to use
"unsigned long" for sizes of regions in memory, which have been
updated to use "size_t".
Needs resurrecting by making sure the fix is good and still applies
(or adjusted to today's codebase).
--------------------------------------------------
[Cooking]
* am/sequencer-author-script-fix (2018-07-18) 1 commit
- sequencer.c: terminate the last line of author-script properly
The author-script that records the author information created by
the sequencer machinery lacked the closing single quote on the last
entry.
Fixing this alone may or may not break the reader that may have
been compensating for this bogus writer. I think I saw another fix
to the same source file posted today---if we are fixing, we should
fix them all at the same time to keep the reader and the writer in
sync.
* bc/sequencer-export-work-tree-as-well (2018-07-16) 1 commit
(merged to 'next' on 2018-07-24 at 0b83ade721)
+ sequencer: pass absolute GIT_WORK_TREE to exec commands
"git rebase" started exporting GIT_DIR environment variable and
exposing it to hook scripts when part of it got rewritten in C.
Instead of matching the old scripted Porcelains' behaviour,
compensate by also exporting GIT_WORK_TREE environment as well to
lessen the damage. This can harm existing hooks that want to
operate on different repository, but the current behaviour is
already broken for them anyway.
Will merge to 'master'.
* bp/test-drop-caches-for-windows (2018-07-12) 1 commit
(merged to 'next' on 2018-07-24 at 257bb336c6)
+ handle lower case drive letters on Windows
A test helper update for Windows.
Will merge to 'master'.
* en/abort-df-conflict-fixes (2018-07-16) 2 commits
- read-cache: fix directory/file conflict handling in read_index_unmerged()
- t1015: demonstrate directory/file conflict recovery failures
"git merge --abort" etc. did not clean things up properly when
there were conflicted entries in certain order that are involved
in D/F conflicts. This has been corrected.
This may have to be rebased on an older maintenance track before
moving forward.
* es/chain-lint-in-subshell (2018-07-17) 10 commits
(merged to 'next' on 2018-07-24 at 9370bbdfaf)
+ t/chainlint: add chainlint "specialized" test cases
+ t/chainlint: add chainlint "complex" test cases
+ t/chainlint: add chainlint "cuddled" test cases
+ t/chainlint: add chainlint "loop" and "conditional" test cases
+ t/chainlint: add chainlint "nested subshell" test cases
+ t/chainlint: add chainlint "one-liner" test cases
+ t/chainlint: add chainlint "whitespace" test cases
+ t/chainlint: add chainlint "basic" test cases
+ t/Makefile: add machinery to check correctness of chainlint.sed
+ t/test-lib: teach --chain-lint to detect broken &&-chains in subshells
(this branch uses es/test-fixes.)
Look for broken "&&" chains that are hidden in subshell, many of
which have been found and corrected.
Will merge to 'master'.
* hs/gpgsm (2018-07-20) 7 commits
- gpg-interface t: extend the existing GPG tests with GPGSM
- gpg-interface: introduce new signature format "x509" using gpgsm
- gpg-interface: introduce new config to select per gpg format program
- gpg-interface: do not hardcode the key string len anymore
- gpg-interface: introduce an abstraction for multiple gpg formats
- t/t7510: check the validation of the new config gpg.format
- gpg-interface: add new config to select how to sign a commit
Teach "git tag -s" etc. a few configuration varaibles (gpg.format
that can be set to "openpgp" or "x509", and gpg.<format>.program
that is used to specify what program to use to deal with the format)
to allow x.509 certs with CMS via "gpgsm" to be used instead of
openpgp via "gnupg".
Will merge to 'next'.
* jk/has-uncommitted-changes-fix (2018-07-11) 1 commit
(merged to 'next' on 2018-07-24 at 2ea14c0afb)
+ has_uncommitted_changes(): fall back to empty tree
"git pull --rebase" on a corrupt HEAD caused a segfault. In
general we substitute an empty tree object when running the in-core
equivalent of the diff-index command, and the codepath has been
corrected to do so as well to fix this issue.
Will merge to 'master'.
* jm/send-email-tls-auth-on-batch (2018-07-16) 1 commit
(merged to 'next' on 2018-07-24 at fb3e653f44)
+ send-email: fix tls AUTH when sending batch
"git send-email" when using in a batched mode that limits the
number of messages sent in a single SMTP session lost the contents
of the variable used to choose between tls/ssl, unable to send the
second and later batches, which has been fixed.
Will merge to 'master'.
This is marked to be merged to 'next' already, but I do not mind
getting an updated version with an improved log message before that
happens.
* jn/gc-auto (2018-07-17) 3 commits
- gc: do not return error for prior errors in daemonized mode
- gc: exit with status 128 on failure
- gc: improve handling of errors reading gc.log
"gc --auto" ended up calling exit(-1) upon error, which has been
corrected to use exit(1). Also the error reporting behaviour when
daemonized has been updated to exit with zero status when stopping
due to a previously discovered error (which implies there is no
point running gc to improve the situation); we used to exit with
failure in such a case.
Stuck in review?
cf. <20180717201348.GD26218@sigill.intra.peff.net>
* js/rebase-merge-octopus (2018-07-11) 3 commits
(merged to 'next' on 2018-07-24 at 14ad8699de)
+ rebase --rebase-merges: adjust man page for octopus support
+ rebase --rebase-merges: add support for octopus merges
+ merge: allow reading the merge commit message from a file
"git rebase --rebase-merges" mode now handles octopus merges as
well.
Will merge to 'master'.
* jt/fetch-negotiator-skipping (2018-07-16) 1 commit
(merged to 'next' on 2018-07-24 at 8e25a49405)
+ negotiator/skipping: skip commits during fetch
(this branch uses jt/fetch-pack-negotiator; is tangled with jt/fetch-nego-tip.)
Add a server-side knob to skip commits in exponential/fibbonacci
stride in an attempt to cover wider swath of history with a smaller
number of iterations, potentially accepting a larger packfile
transfer, instead of going back one commit a time during common
ancestor discovery during the "git fetch" transaction.
Will merge to 'master'.
* jt/tags-to-promised-blobs-fix (2018-07-16) 2 commits
(merged to 'next' on 2018-07-24 at 8d7e78a671)
+ tag: don't warn if target is missing but promised
+ revision: tolerate promised targets of tags
The lazy clone support had a few places where missing but promised
objects were not correctly tolerated, which have been fixed.
Will merge to 'master'.
* sb/submodule-update-in-c (2018-07-18) 6 commits
- submodule--helper: introduce new update-module-mode helper
- builtin/submodule--helper: factor out method to update a single submodule
- builtin/submodule--helper: store update_clone information in a struct
- builtin/submodule--helper: factor out submodule updating
- git-submodule.sh: rename unused variables
- git-submodule.sh: align error reporting for update mode to use path
"git submodule update" is getting rewritten piece-by-piece into C.
It seems to pass its own self-tests standalone, but seems to break
horribly when merged to 'pu'.
* sg/httpd-test-unflake (2018-07-12) 3 commits
(merged to 'next' on 2018-07-24 at b7df820256)
+ t/lib-httpd: avoid occasional failures when checking access.log
+ t/lib-httpd: add the strip_access_log() helper function
+ t5541: clean up truncating access log
httpd tests saw occasional breakage due to the way its access log
gets inspected by the tests, which has been updated to make them
less flaky.
Will merge to 'master'.
* sl/commit-dry-run-with-short-output-fix (2018-07-17) 3 commits
- commit: fix exit code for --short/--porcelain
- wt-status: teach wt_status_collect about merges in progress
- t7501: add merge conflict tests for dry run
"git commit --dry-run" gave a correct exit status even during a
conflict resolution toward a merge, but it did not with the
"--short" option, which has been corrected.
Will merge to 'next'.
* tg/rerere (2018-07-16) 11 commits
- rerere: recalculate conflict ID when unresolved conflict is committed
- rerere: teach rerere to handle nested conflicts
- rerere: return strbuf from handle path
- rerere: factor out handle_conflict function
- rerere: only return whether a path has conflicts or not
- rerere: fix crash when conflict goes unresolved
- rerere: add documentation for conflict normalization
- rerere: mark strings for translation
- rerere: wrap paths in output in sq
- rerere: lowercase error messages
- rerere: unify error messages when read_cache fails
* jk/ui-color-always-to-auto (2018-07-18) 1 commit
- Documentation: fix --color option formatting
Doc formatting fix.
Will merge to 'next' and then to 'master'.
* jh/json-writer (2018-07-16) 1 commit
- json_writer: new routines to create JSON data
(this branch is used by jh/structured-logging.)
Preparatory code to later add json output for telemetry data.
Will merge to 'next'.
* ag/rebase-i-in-c (2018-07-10) 13 commits
- rebase -i: rewrite the rest of init_revisions_and_shortrevisions in C
- rebase -i: implement the logic to initialize the variable $revision in C
- rebase--interactive: remove unused modes and functions
- rebase--interactive: rewrite complete_action() in C
- sequencer: change the way skip_unnecessary_picks() returns its result
- sequencer: refactor append_todo_help() to write its message to a buffer
- rebase -i: rewrite checkout_onto() in C
- rebase -i: rewrite setup_reflog_action() in C
- sequencer: add a new function to silence a command, except if it fails
- rebase-interactive: rewrite the edit-todo functionality in C
- editor: add a function to launch the sequence editor
- rebase--interactive: rewrite append_todo_help() in C
- sequencer: make two functions and an enum from sequencer.c public
Piecemeal rewrite of the remaining "rebase -i" machinery in C.
A reroll (which is rumored to be quite good) exists, but hasn't
been picked up yet.
* sb/object-store-lookup (2018-06-29) 33 commits
(merged to 'next' on 2018-07-24 at dd96e29376)
+ commit.c: allow lookup_commit_reference to handle arbitrary repositories
+ commit.c: allow lookup_commit_reference_gently to handle arbitrary repositories
+ tag.c: allow deref_tag to handle arbitrary repositories
+ object.c: allow parse_object to handle arbitrary repositories
+ object.c: allow parse_object_buffer to handle arbitrary repositories
+ commit.c: allow get_cached_commit_buffer to handle arbitrary repositories
+ commit.c: allow set_commit_buffer to handle arbitrary repositories
+ commit.c: migrate the commit buffer to the parsed object store
+ commit-slabs: remove realloc counter outside of slab struct
+ commit.c: allow parse_commit_buffer to handle arbitrary repositories
+ tag: allow parse_tag_buffer to handle arbitrary repositories
+ tag: allow lookup_tag to handle arbitrary repositories
+ commit: allow lookup_commit to handle arbitrary repositories
+ tree: allow lookup_tree to handle arbitrary repositories
+ blob: allow lookup_blob to handle arbitrary repositories
+ object: allow lookup_object to handle arbitrary repositories
+ object: allow object_as_type to handle arbitrary repositories
+ tag: add repository argument to deref_tag
+ tag: add repository argument to parse_tag_buffer
+ tag: add repository argument to lookup_tag
+ commit: add repository argument to get_cached_commit_buffer
+ commit: add repository argument to set_commit_buffer
+ commit: add repository argument to parse_commit_buffer
+ commit: add repository argument to lookup_commit
+ commit: add repository argument to lookup_commit_reference
+ commit: add repository argument to lookup_commit_reference_gently
+ tree: add repository argument to lookup_tree
+ blob: add repository argument to lookup_blob
+ object: add repository argument to object_as_type
+ object: add repository argument to parse_object_buffer
+ object: add repository argument to lookup_object
+ object: add repository argument to parse_object
+ Merge branch 'sb/object-store-grafts' into sb/object-store-lookup
(this branch is used by ds/commit-graph-with-grafts, ds/reachable and jt/commit-graph-per-object-store.)
lookup_commit_reference() and friends have been updated to find
in-core object for a specific in-core repository instance.
Will merge to 'master'.
* bc/object-id (2018-07-16) 16 commits
(merged to 'next' on 2018-07-24 at 23680778a9)
+ pretty: switch hard-coded constants to the_hash_algo
+ sha1-file: convert constants to uses of the_hash_algo
+ log-tree: switch GIT_SHA1_HEXSZ to the_hash_algo->hexsz
+ diff: switch GIT_SHA1_HEXSZ to use the_hash_algo
+ builtin/merge-recursive: make hash independent
+ builtin/merge: switch to use the_hash_algo
+ builtin/fmt-merge-msg: make hash independent
+ builtin/update-index: simplify parsing of cacheinfo
+ builtin/update-index: convert to using the_hash_algo
+ refs/files-backend: use the_hash_algo for writing refs
+ sha1-name: use the_hash_algo when parsing object names
+ strbuf: allocate space with GIT_MAX_HEXSZ
+ commit: express tree entry constants in terms of the_hash_algo
+ hex: switch to using the_hash_algo
+ tree-walk: replace hard-coded constants with the_hash_algo
+ cache: update object ID functions for the_hash_algo
Conversion from uchar[40] to struct object_id continues.
Will merge to 'master'.
* en/dirty-merge-fixes (2018-07-11) 9 commits
(merged to 'next' on 2018-07-24 at 7b6ca3507c)
+ merge: fix misleading pre-merge check documentation
+ merge-recursive: enforce rule that index matches head before merging
+ t6044: add more testcases with staged changes before a merge is invoked
+ merge-recursive: fix assumption that head tree being merged is HEAD
+ merge-recursive: make sure when we say we abort that we actually abort
+ t6044: add a testcase for index matching head, when head doesn't match HEAD
+ t6044: verify that merges expected to abort actually abort
+ index_has_changes(): avoid assuming operating on the_index
+ read-cache.c: move index_has_changes() from merge.c
The recursive merge strategy did not properly ensure there was no
change between HEAD and the index before performing its operation,
which has been corrected.
Will merge to 'master'.
* en/t6036-merge-recursive-tests (2018-07-11) 6 commits
(merged to 'next' on 2018-07-24 at 75055cb6e1)
+ t6036: add a failed conflict detection case: regular files, different modes
+ t6036: add a failed conflict detection case with conflicting types
+ t6036: add a failed conflict detection case with submodule add/add
+ t6036: add a failed conflict detection case with submodule modify/modify
+ t6036: add a failed conflict detection case with symlink add/add
+ t6036: add a failed conflict detection case with symlink modify/modify
Tests to cover various conflicting cases have been added for
merge-recursive.
Will merge to 'master'.
* en/t6036-recursive-corner-cases (2018-07-12) 2 commits
(merged to 'next' on 2018-07-24 at b7b3514ef4)
+ t6036: fix broken && chain in sub-shell
+ t6036: add lots of detail for directory/file conflicts in recursive case
Tests to cover more D/F conflict cases have been added for
merge-recursive.
Will merge to 'master'.
* en/t6042-insane-merge-rename-testcases (2018-07-03) 3 commits
(merged to 'next' on 2018-07-24 at 65c80f72da)
+ t6042: add testcase covering long chains of rename conflicts
+ t6042: add testcase covering rename/rename(2to1)/delete/delete conflict
+ t6042: add testcase covering rename/add/delete conflict type
Various glitches in the heuristics of merge-recursive strategy have
been documented in new tests.
Will merge to 'master'.
I am not sure if there is a single "correct" answer everybody can
agree on for each of these "insane" cases, though.
* en/t7405-recursive-submodule-conflicts (2018-07-11) 3 commits
(merged to 'next' on 2018-07-24 at 6cb7d02298)
+ t7405: verify 'merge --abort' works after submodule/path conflicts
+ t7405: add a directory/submodule conflict
+ t7405: add a file/submodule conflict
Tests to cover conflict cases that involve submodules have been
added for merge-recursive.
Will merge to 'master'.
* es/test-fixes (2018-07-17) 26 commits
(merged to 'next' on 2018-07-24 at fd6796a3ef)
+ t5608: fix broken &&-chain
+ t9119: fix broken &&-chains
+ t9000-t9999: fix broken &&-chains
+ t7000-t7999: fix broken &&-chains
+ t6000-t6999: fix broken &&-chains
+ t5000-t5999: fix broken &&-chains
+ t4000-t4999: fix broken &&-chains
+ t3030: fix broken &&-chains
+ t3000-t3999: fix broken &&-chains
+ t2000-t2999: fix broken &&-chains
+ t1000-t1999: fix broken &&-chains
+ t0000-t0999: fix broken &&-chains
+ t9814: simplify convoluted check that command correctly errors out
+ t9001: fix broken "invoke hook" test
+ t7810: use test_expect_code() instead of hand-rolled comparison
+ t7400: fix broken "submodule add/reconfigure --force" test
+ t7201: drop pointless "exit 0" at end of subshell
+ t6036: fix broken "merge fails but has appropriate contents" tests
+ t5505: modernize and simplify hard-to-digest test
+ t5406: use write_script() instead of birthing shell script manually
+ t5405: use test_must_fail() instead of checking exit code manually
+ t/lib-submodule-update: fix "absorbing" test
+ t: drop unnecessary terminating semicolon in subshell
+ t: use sane_unset() rather than 'unset' with broken &&-chain
+ t: use test_write_lines() instead of series of 'echo' commands
+ t: use test_might_fail() instead of manipulating exit code manually
(this branch is used by es/chain-lint-in-subshell.)
Test clean-up and corrections.
Will merge to 'master'.
* jk/fsck-gitmodules-gently (2018-07-16) 6 commits
(merged to 'next' on 2018-07-24 at 5b15c800db)
+ fsck: downgrade gitmodulesParse default to "info"
+ fsck: split ".gitmodules too large" error from parse failure
+ fsck: silence stderr when parsing .gitmodules
+ config: add options parameter to git_config_from_mem
+ config: add CONFIG_ERROR_SILENT handler
+ config: turn die_on_error into caller-facing enum
Recent "security fix" to pay attention to contents of ".gitmodules"
while accepting "git push" was a bit overly strict than necessary,
which has been adjusted.
Will merge to 'master'.
* js/range-diff (2018-07-25) 21 commits
- range-diff: use dim/bold cues to improve dual color mode
- range-diff: make --dual-color the default mode
- range-diff: left-pad patch numbers
- completion: support `git range-diff`
- range-diff: populate the man page
- range-diff --dual-color: fix bogus white-space warning
- range-diff: offer to dual-color the diffs
- diff: add an internal option to dual-color diffs of diffs
- color: add the meta color GIT_COLOR_REVERSE
- range-diff: use color for the commit pairs
- range-diff: add tests
- range-diff: do not show "function names" in hunk headers
- range-diff: adjust the output of the commit pairs
- range-diff: suppress the diff headers
- range-diff: indent the diffs just like tbdiff
- range-diff: right-trim commit messages
- range-diff: also show the diff between patches
- range-diff: improve the order of the shown commits
- range-diff: first rudimentary implementation
- Introduce `range-diff` to compare iterations of a topic branch
- linear-assignment: a function to solve least-cost assignment problems
(this branch is used by es/format-patch-rangediff.)
"git tbdiff" that lets us compare individual patches in two
iterations of a topic has been rewritten and made into a built-in
command.
Undecided.
Many "The feature is useful" comments without much real review; we
know the feature is great as this mimicks tbdiff already so that is
not news.
I've squashed an obvious documentation fix in before rebasing the
other topic that depends on it. I _think_ we would probably be
better off to _disable_ whitespace-error coloring altogether when
showing diff-of-diff, and get rid of the workaround that only is
applicable to the context lines of the outer diff (unless we first
define how whitespace errors in diff-of-diff should be colored and
implement it correctly, that is, but after seeing these two
attempts, it seems that is harder than it is worth).
* jt/commit-graph-per-object-store (2018-07-17) 7 commits
(merged to 'next' on 2018-07-24 at 090d1a4d59)
+ commit-graph: add repo arg to graph readers
+ commit-graph: store graph in struct object_store
+ commit-graph: add free_commit_graph
+ commit-graph: add missing forward declaration
+ object-store: add missing include
+ commit-graph: refactor preparing commit graph
+ Merge branch 'ds/commit-graph-fsck' into jt/commit-graph-per-object-store
(this branch is used by ds/commit-graph-with-grafts and ds/reachable; uses ds/commit-graph-fsck and sb/object-store-lookup.)
The singleton commit-graph in-core instance is made per in-core
repository instance.
Will merge to 'master'.
* kg/gc-auto-windows-workaround (2018-07-09) 1 commit
(merged to 'next' on 2018-07-24 at 71c05d27b6)
+ gc --auto: release pack files before auto packing
"git gc --auto" opens file descriptors for the packfiles before
spawning "git repack/prune", which would upset Windows that does
not want a process to work on a file that is open by another
process. The issue has been worked around.
Will merge to 'master'.
* lt/date-human (2018-07-09) 1 commit
- Add 'human' date format
A new date format "--date=human" that morphs its output depending
on how far the time is from the current time has been introduced.
"--date=auto" can be used to use this new format when the output is
goint to the pager or to the terminal and otherwise the default
format.
* ot/ref-filter-object-info (2018-07-17) 5 commits
- ref-filter: use oid_object_info() to get object
- ref-filter: merge get_obj and get_object
- ref-filter: initialize eaten variable
- ref-filter: fill empty fields with empty values
- ref-filter: add info_source to valid_atom
A few atoms like %(objecttype) and %(objectsize) in the format
specifier of "for-each-ref --format=<format>" can be filled without
getting the full contents of the object, but just with the object
header. These cases have been optimzied by calling
oid_object_info() API.
What's the doneness of this one?
* pk/rebase-in-c (2018-07-23) 4 commits
- builtin/rebase: support running "git rebase <upstream>"
- sequencer: refactor the code to detach HEAD to checkout.c
- rebase: refactor common shell functions into their own file
- rebase: start implementing it as a builtin
Piecemeal rewrite of the "rebase" machinery in C.
Expecting a reroll, but it seems that this is getting quite close.
cf. <CAOZc8M8YmLwJOzG-1jyz8ft4W_tJMwNs6kSV8inX1q_zmDW8Sg@mail.gmail.com>
* jt/fetch-nego-tip (2018-07-03) 1 commit
(merged to 'next' on 2018-07-24 at a9e299006d)
+ fetch-pack: support negotiation tip whitelist
(this branch uses jt/fetch-pack-negotiator; is tangled with jt/fetch-negotiator-skipping.)
"git fetch" learned a new option "--negotiation-tip" to limit the
set of commits it tells the other end as "have", to reduce wasted
bandwidth and cycles, which would be helpful when the receiving
repository has a lot of refs that have little to do with the
history at the remote it is fetching from.
Will merge to 'master'.
* tb/grep-only-matching (2018-07-09) 2 commits
(merged to 'next' on 2018-07-24 at 7e878b9d95)
+ grep.c: teach 'git grep --only-matching'
+ grep.c: extract show_line_header()
"git grep" learned the "--only-matching" option.
Will merge to 'master'.
* jk/branch-l-1-repurpose (2018-06-22) 1 commit
- branch: make "-l" a synonym for "--list"
Updated plan to repurpose the "-l" option to "git branch".
Will hold in 'pu' until jk/branch-l-0-deprecation progresses sufficiently.
* cc/remote-odb (2018-07-16) 9 commits
- Documentation/config: add odb.<name>.promisorRemote
- t0410: test fetching from many promisor remotes
- Use odb.origin.partialclonefilter instead of core.partialclonefilter
- Use remote_odb_get_direct() and has_remote_odb()
- remote-odb: add remote_odb_reinit()
- remote-odb: implement remote_odb_get_many_direct()
- remote-odb: implement remote_odb_get_direct()
- Add initial remote odb support
- fetch-object: make functions return an error code
* ds/multi-pack-index (2018-07-20) 23 commits
- midx: clear midx on repack
- packfile: skip loading index if in multi-pack-index
- midx: prevent duplicate packfile loads
- midx: use midx in approximate_object_count
- midx: use existing midx when writing new one
- midx: use midx in abbreviation calculations
- midx: read objects from multi-pack-index
- config: create core.multiPackIndex setting
- midx: write object offsets
- midx: write object id fanout chunk
- midx: write object ids in a chunk
- midx: sort and deduplicate objects from packfiles
- midx: read pack names into array
- multi-pack-index: write pack names in chunk
- multi-pack-index: read packfile list
- packfile: generalize pack directory list
- t5319: expand test data
- multi-pack-index: load into memory
- midx: write header information to lockfile
- multi-pack-index: add 'write' verb
- multi-pack-index: add builtin
- multi-pack-index: add format details
- multi-pack-index: add design document
When there are too many packfiles in a repository (which is not
recommended), looking up an object in these would require
consulting many pack .idx files; a new mechanism to have a single
file that consolidates all of these .idx files is introduced.
Ready to move to 'next', with some known issues to be followed up?
cf. <xmqqefg8uplg.fsf@gitster-ct.c.googlers.com>
cf. <CAPig+cTU--KrGcv4C_CwBZEuec4dgm_tJqL=CFWKT6vxxR016w@mail.gmail.com>
* jt/fetch-pack-negotiator (2018-06-15) 7 commits
(merged to 'next' on 2018-07-24 at 438efcd6b1)
+ fetch-pack: introduce negotiator API
+ fetch-pack: move common check and marking together
+ fetch-pack: make negotiation-related vars local
+ fetch-pack: use ref adv. to prune "have" sent
+ fetch-pack: directly end negotiation if ACK ready
+ fetch-pack: clear marks before re-marking
+ fetch-pack: split up everything_local()
(this branch is used by jt/fetch-nego-tip and jt/fetch-negotiator-skipping.)
Code restructuring and a small fix to transport protocol v2 during
fetching.
Will merge to 'master'.
* is/parsing-line-range (2018-06-15) 2 commits
(merged to 'next' on 2018-07-24 at a06b453f32)
+ log: prevent error if line range ends past end of file
+ blame: prevent error if range ends past end of file
Parsing of -L[<N>][,[<M>]] parameters "git blame" and "git log"
take has been tweaked.
Will merge to 'master'.
* ab/checkout-default-remote (2018-06-11) 8 commits
(merged to 'next' on 2018-07-24 at 6ef645f485)
+ checkout & worktree: introduce checkout.defaultRemote
+ checkout: add advice for ambiguous "checkout <branch>"
+ builtin/checkout.c: use "ret" variable for return
+ checkout: pass the "num_matches" up to callers
+ checkout.c: change "unique" member to "num_matches"
+ checkout.c: introduce an *_INIT macro
+ checkout.h: wrap the arguments to unique_tracking_name()
+ checkout tests: index should be clean after dwim checkout
"git checkout" and "git worktree add" learned to honor
checkout.defaultRemote when auto-vivifying a local branch out of a
remote tracking branch in a repository with multiple remotes that
have tracking branches that share the same names.
Will merge to 'master'.
* ds/commit-graph-fsck (2018-07-16) 23 commits
(merged to 'next' on 2018-07-24 at 6a802adc7a)
+ coccinelle: update commit.cocci
+ commit-graph: update design document
+ gc: automatically write commit-graph files
+ commit-graph: add '--reachable' option
+ commit-graph: use string-list API for input
+ fsck: verify commit-graph
+ commit-graph: verify contents match checksum
+ commit-graph: test for corrupted octopus edge
+ commit-graph: verify commit date
+ commit-graph: verify generation number
+ commit-graph: verify parent list
+ commit-graph: verify root tree OIDs
+ commit-graph: verify objects exist
+ commit-graph: verify corrupt OID fanout and lookup
+ commit-graph: verify required chunks are present
+ commit-graph: verify catches corrupt signature
+ commit-graph: add 'verify' subcommand
+ commit-graph: load a root tree from specific graph
+ commit: force commit to parse from object database
+ commit-graph: parse commit from chosen graph
+ commit-graph: fix GRAPH_MIN_SIZE
+ commit-graph: UNLEAK before die()
+ t5318-commit-graph.sh: use core.commitGraph
(this branch is used by ds/commit-graph-with-grafts, ds/reachable and jt/commit-graph-per-object-store.)
"git fsck" learns to make sure the optional commit-graph file is in
a sane state.
Will merge to 'master'.
* ma/wrapped-info (2018-05-28) 2 commits
- usage: prefix all lines in `vreportf()`, not just the first
- usage: extract `prefix_suffix_lines()` from `advise()`
An attempt to help making multi-line messages fed to warning(),
error(), and friends more easily translatable.
Will discard and wait for a cleaned-up rewrite.
cf. <20180529213957.GF7964@sigill.intra.peff.net>
* jm/cache-entry-from-mem-pool (2018-07-03) 8 commits
(merged to 'next' on 2018-07-24 at 9be51a88dc)
+ block alloc: add validations around cache_entry lifecyle
+ block alloc: allocate cache entries from mem_pool
+ mem-pool: fill out functionality
+ mem-pool: add life cycle management functions
+ mem-pool: only search head block for available space
+ block alloc: add lifecycle APIs for cache_entry structs
+ read-cache: teach make_cache_entry to take object_id
+ read-cache: teach refresh_cache_entry to take istate
For a large tree, the index needs to hold many cache entries
allocated on heap. These cache entries are now allocated out of a
dedicated memory pool to amortize malloc(3) overhead.
Will merge to 'master'.
This makes each cache-entry larger by either 4 or 8 bytes, which is
a bit sad, though.
* sb/diff-color-move-more (2018-07-19) 10 commits
(merged to 'next' on 2018-07-24 at 89c893cab2)
+ diff.c: offer config option to control ws handling in move detection
+ diff.c: add white space mode to move detection that allows indent changes
+ diff.c: factor advance_or_nullify out of mark_color_as_moved
+ diff.c: decouple white space treatment from move detection algorithm
+ diff.c: add a blocks mode for moved code detection
+ diff.c: adjust hash function signature to match hashmap expectation
+ diff.c: do not pass diff options as keydata to hashmap
+ t4015: avoid git as a pipe input
+ xdiff/xdiffi.c: remove unneeded function declarations
+ xdiff/xdiff.h: remove unused flags
"git diff --color-moved" feature has further been tweaked.
Will merge to 'master'.
^ permalink raw reply [relevance 3%]
* What's cooking in git.git (Jul 2018, #02; Wed, 18)
@ 2018-07-18 22:03 3% Junio C Hamano
0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2018-07-18 22:03 UTC (permalink / raw)
To: git
Here are the topics that have been cooking. Commits prefixed with
'-' are only in 'pu' (proposed updates) while commits prefixed with
'+' are in 'next'. The ones marked with '.' do not appear in any of
the integration branches, but I am still holding onto them.
Many topics have moved to 'master' and 'next' from 'next' to 'pu'
respectively. As I needed to re-resolve semantic merge conflicts
while reordering some topics (i.e. some that were merged earlier in
'pu' are left in 'pu' while another topic that had interactions with
them and required evil merge to resolve semantic conflicts
leapfrogged to 'next'---the semantic conflict resolution then need
to happen at a different merge than done earlier in 'pu' while
rebuilding today's integration), I didn't have enough time to spend
on new topics posted to the list in the past few days.
You can find the changes described here in the integration branches
of the repositories listed at
http://git-blame.blogspot.com/p/git-public-repositories.html
--------------------------------------------------
[Graduated to "master"]
* ao/config-from-gitmodules (2018-06-26) 6 commits
(merged to 'next' on 2018-07-11 at 5d88dc6fb7)
+ submodule-config: reuse config_from_gitmodules in repo_read_gitmodules
+ submodule-config: pass repository as argument to config_from_gitmodules
+ submodule-config: make 'config_from_gitmodules' private
+ submodule-config: add helper to get 'update-clone' config from .gitmodules
+ submodule-config: add helper function to get 'fetch' config from .gitmodules
+ config: move config_from_gitmodules to submodule-config.c
Tighten the API to make it harder to misuse in-tree .gitmodules
file, even though it shares the same syntax with configuration
files, to read random configuration items from it.
* bw/config-refer-to-gitsubmodules-doc (2018-06-21) 1 commit
(merged to 'next' on 2018-06-29 at da6f49d292)
+ docs: link to gitsubmodules
Docfix.
* bw/protocol-v2 (2018-06-22) 1 commit
(merged to 'next' on 2018-06-29 at 78090cc343)
+ protocol-v2 doc: put HTTP headers after request
Doc fix.
* dj/runtime-prefix (2018-06-26) 1 commit
(merged to 'next' on 2018-07-11 at 27d99fef94)
+ Makefile: tweak sed invocation
POSIX portability fix in Makefile to fix a glitch introduced a few
releases ago.
* ds/commit-graph (2018-06-28) 1 commit
(merged to 'next' on 2018-07-11 at d579f733ed)
+ commit-graph: fix documentation inconsistencies
Docfix.
* ds/ewah-cleanup (2018-06-21) 10 commits
(merged to 'next' on 2018-06-28 at 9cd7c0d54a)
+ ewah: delete unused 'rlwit_discharge_empty()'
+ ewah: drop ewah_serialize_native function
+ ewah: drop ewah_deserialize function
+ ewah_io: delete unused 'ewah_serialize()'
+ ewah_bitmap: delete unused 'ewah_or()'
+ ewah_bitmap: delete unused 'ewah_not()'
+ ewah_bitmap: delete unused 'ewah_and_not()'
+ ewah_bitmap: delete unused 'ewah_and()'
+ ewah/bitmap.c: delete unused 'bitmap_each_bit()'
+ ewah/bitmap.c: delete unused 'bitmap_clear()'
Originally merged to 'next' on 2018-06-22
Remove unused function definitions and declarations from ewah
bitmap subsystem.
* en/merge-recursive-cleanup (2018-06-12) 6 commits
(merged to 'next' on 2018-06-28 at 1a3646eb7d)
+ merge-recursive: add pointer about unduly complex looking code
+ merge-recursive: rename conflict_rename_*() family of functions
+ merge-recursive: clarify the rename_dir/RENAME_DIR meaning
+ merge-recursive: align labels with their respective code blocks
+ merge-recursive: fix numerous argument alignment issues
+ merge-recursive: fix miscellaneous grammar error in comment
Originally merged to 'next' on 2018-06-19
Code cleanup.
* en/rebase-i-microfixes (2018-06-27) 3 commits
(merged to 'next' on 2018-07-11 at d913ca0f77)
+ git-rebase--merge: modernize "git-$cmd" to "git $cmd"
+ Fix use of strategy options with interactive rebases
+ t3418: add testcase showing problems with rebase -i and strategy options
Will merge to 'master'.
* jk/branch-l-0-deprecation (2018-06-22) 3 commits
(merged to 'next' on 2018-06-29 at fac676dfb9)
+ branch: deprecate "-l" option
+ t: switch "branch -l" to "branch --create-reflog"
+ t3200: unset core.logallrefupdates when testing reflog creation
(this branch is used by jk/branch-l-1-repurpose.)
The "-l" option in "git branch -l" is an unfortunate short-hand for
"--create-reflog", but many users, both old and new, somehow expect
it to be something else, perhaps "--list". This step warns when "-l"
is used as a short-hand for "--create-reflog" and warns about the
future repurposing of the it when it is used.
* js/enhanced-version-info (2018-06-29) 1 commit
(merged to 'next' on 2018-07-11 at 815b2ea2bc)
+ Makefile: fix the "built from commit" code
Build fix.
* js/rebase-recreate-merge (2018-06-27) 1 commit
(merged to 'next' on 2018-07-11 at eb8f33aaef)
+ rebase: fix documentation formatting
Docfix.
* jt/remove-pack-bitmap-global (2018-06-21) 2 commits
(merged to 'next' on 2018-06-29 at 852857b04e)
+ pack-bitmap: add free function
+ pack-bitmap: remove bitmap_git global variable
The effort to move globals to per-repository in-core structure
continues.
* ld/p423 (2018-06-19) 6 commits
(merged to 'next' on 2018-06-29 at af76acb664)
+ git-p4: python3: fix octal constants
+ git-p4: python3: use print() function
+ git-p4: python3: basestring workaround
+ git-p4: python3: remove backticks
+ git-p4: python3: replace dict.has_key(k) with "k in dict"
+ git-p4: python3: replace <> with !=
Code preparation to make "git p4" closer to be usable with Python 3.
* mb/filter-branch-optim (2018-06-26) 1 commit
(merged to 'next' on 2018-07-11 at e43a0136c2)
+ filter-branch: skip commits present on --state-branch
"git filter-branch" when used with the "--state-branch" option
still attempted to rewrite the commits whose filtered result is
known from the previous attempt (which is recorded on the state
branch); the command has been corrected not to waste cycles doing
so.
* ms/core-icase-doc (2018-06-28) 1 commit
(merged to 'next' on 2018-07-11 at 8f0d71c32d)
+ Documentation: declare "core.ignoreCase" as internal variable
Clarify that setting core.ignoreCase to deviate from reality would
not turn a case-incapable filesystem into a case-capable one.
* pw/rebase-i-keep-reword-after-conflict (2018-06-19) 1 commit
(merged to 'next' on 2018-06-29 at 538337be74)
+ sequencer: do not squash 'reword' commits when we hit conflicts
Bugfix for "rebase -i" corner case regression.
* sb/mailmap (2018-06-29) 1 commit
(merged to 'next' on 2018-07-11 at d9dc53e374)
+ .mailmap: merge different spellings of names
Will merge to 'master'.
* sb/object-store-grafts (2018-05-18) 19 commits
(merged to 'next' on 2018-06-28 at 02f70d6302)
+ commit: allow lookup_commit_graft to handle arbitrary repositories
+ commit: allow prepare_commit_graft to handle arbitrary repositories
+ shallow: migrate shallow information into the object parser
+ path.c: migrate global git_path_* to take a repository argument
+ cache: convert get_graft_file to handle arbitrary repositories
+ commit: convert read_graft_file to handle arbitrary repositories
+ commit: convert register_commit_graft to handle arbitrary repositories
+ commit: convert commit_graft_pos() to handle arbitrary repositories
+ shallow: add repository argument to is_repository_shallow
+ shallow: add repository argument to check_shallow_file_for_update
+ shallow: add repository argument to register_shallow
+ shallow: add repository argument to set_alternate_shallow_file
+ commit: add repository argument to lookup_commit_graft
+ commit: add repository argument to prepare_commit_graft
+ commit: add repository argument to read_graft_file
+ commit: add repository argument to register_commit_graft
+ commit: add repository argument to commit_graft_pos
+ object: move grafts to object parser
+ object-store: move object access functions to object-store.h
(this branch is used by jt/commit-graph-per-object-store and sb/object-store-lookup.)
Originally merged to 'next' on 2018-06-22
The conversion to pass "the_repository" and then "a_repository"
throughout the object access API continues.
* sb/submodule-core-worktree (2018-06-19) 3 commits
(merged to 'next' on 2018-06-28 at 96e1a8dbd1)
+ submodule deinit: unset core.worktree
+ submodule: ensure core.worktree is set after update
+ submodule: unset core.worktree if no working tree is present
Originally merged to 'next' on 2018-06-22
"git submodule" did not correctly adjust core.worktree setting that
indicates whether/where a submodule repository has its associated
working tree across various state transitions, which has been
corrected.
* tb/grep-column (2018-06-22) 7 commits
(merged to 'next' on 2018-06-29 at 25dc70426e)
+ contrib/git-jump/git-jump: jump to exact location
+ grep.c: add configuration variables to show matched option
+ builtin/grep.c: add '--column' option to 'git-grep(1)'
+ grep.c: display column number of first match
+ grep.[ch]: extend grep_opt to allow showing matched column
+ grep.c: expose {,inverted} match column in match_line()
+ Documentation/config.txt: camel-case lineNumber for consistency
(this branch is used by tb/grep-only-matching.)
"git grep" learned the "--column" option that gives not just the
line number but the column number of the hit.
* tz/exclude-doc-smallfixes (2018-06-27) 2 commits
(merged to 'next' on 2018-07-11 at 5134f1ca72)
+ dir.c: fix typos in core.excludesfile comment
+ gitignore.txt: clarify default core.excludesfile path
Doc updates.
* vs/typofixes (2018-06-22) 1 commit
(merged to 'next' on 2018-06-29 at 665c8db2f7)
+ Documentation: spelling and grammar fixes
Doc fix.
* xy/format-patch-prereq-patch-id-fix (2018-06-19) 1 commit
(merged to 'next' on 2018-06-29 at 0dffc46ce2)
+ format-patch: clear UNINTERESTING flag before prepare_bases
Recently added "--base" option to "git format-patch" command did
not correctly generate prereq patch ids.
--------------------------------------------------
[New Topics]
* am/sequencer-author-script-fix (2018-07-18) 1 commit
- sequencer.c: terminate the last line of author-script properly
The author-script that records the author information created by
the sequencer machinery lacked the closing single quote on the last
entry.
Fixing this alone may or may not break the reader that may have
been compensating for this bogus writer. I think I saw another fix
to the same source file posted today---if we are fixing, we should
fix them all at the same time to keep the reader and the writer in
sync.
* bc/sequencer-export-work-tree-as-well (2018-07-16) 1 commit
- sequencer: pass absolute GIT_WORK_TREE to exec commands
"git rebase" started exporting GIT_DIR environment variable and
exposing it to hook scripts when part of it got rewritten in C.
Instead of matching the old scripted Porcelains' behaviour,
compensate by also exporting GIT_WORK_TREE environment as well to
lessen the damage. This can harm existing hooks that want to
operate on different repository, but the current behaviour is
already broken for them anyway.
Will merge to 'next'.
* bp/test-drop-caches-for-windows (2018-07-12) 1 commit
- handle lower case drive letters on Windows
A test helper update for Windows.
Will merge to 'next'.
* en/abort-df-conflict-fixes (2018-07-16) 2 commits
- read-cache: fix directory/file conflict handling in read_index_unmerged()
- t1015: demonstrate directory/file conflict recovery failures
"git merge --abort" etc. did not clean things up properly when
there were conflicted entries in certain order that are involved
in D/F conflicts. This has been corrected.
This may have to be rebased on an older maintenance track before
moving forward.
* es/chain-lint-in-subshell (2018-07-17) 10 commits
- t/chainlint: add chainlint "specialized" test cases
- t/chainlint: add chainlint "complex" test cases
- t/chainlint: add chainlint "cuddled" test cases
- t/chainlint: add chainlint "loop" and "conditional" test cases
- t/chainlint: add chainlint "nested subshell" test cases
- t/chainlint: add chainlint "one-liner" test cases
- t/chainlint: add chainlint "whitespace" test cases
- t/chainlint: add chainlint "basic" test cases
- t/Makefile: add machinery to check correctness of chainlint.sed
- t/test-lib: teach --chain-lint to detect broken &&-chains in subshells
(this branch uses es/test-fixes.)
Look for broken "&&" chains that are hidden in subshell, many of
which have been found and corrected.
Will merge to 'next'.
* es/test-lint-one-shot-export (2018-07-16) 5 commits
(merged to 'next' on 2018-07-18 at 26a6124963)
+ t/check-non-portable-shell: detect "FOO=bar shell_func"
+ t/check-non-portable-shell: make error messages more compact
+ t/check-non-portable-shell: stop being so polite
+ t6046/t9833: fix use of "VAR=VAL cmd" with a shell function
+ Merge branch 'jc/t3404-one-shot-export-fix' into es/test-lint-one-shot-export
(this branch uses jc/t3404-one-shot-export-fix.)
Look for broken use of "vAR=VAL shell_func" in test scripts as part
of test-lint.
Will merge to 'master'.
* hs/gpgsm (2018-07-18) 7 commits
- gpg-interface t: extend the existing GPG tests with GPGSM
- gpg-interface: introduce new signature format "x509" using gpgsm
- gpg-interface: introduce new config to select per gpg format program
- gpg-interface: do not hardcode the key string len anymore
- gpg-interface: introduce an abstraction for multiple gpg formats
- t/t7510: check the validation of the new config gpg.format
- gpg-interface: add new config to select how to sign a commit
(this branch uses hs/push-cert-check-cleanup.)
Teach "git tag -s" etc. a few configuration varaibles (gpg.format
that can be set to "openpgp" or "x509", and gpg.<format>.program
that is used to specify what program to use to deal with the format)
to allow x.509 certs with CMS via "gpgsm" to be used instead of
openpgp via "gnupg".
I think this round is mostly ready, except for a minor nit in the
last step. I do not mind merging this to 'next' and leave fixing
of the test to a later clean-up.
* jc/t3404-one-shot-export-fix (2018-07-12) 1 commit
(merged to 'next' on 2018-07-18 at e15a79dca7)
+ t3404: fix use of "VAR=VAL cmd" with a shell function
(this branch is used by es/test-lint-one-shot-export.)
Correct a broken use of "VAR=VAL shell_func" in a test.
Will merge to 'master'.
* jk/has-uncommitted-changes-fix (2018-07-11) 1 commit
- has_uncommitted_changes(): fall back to empty tree
"git pull --rebase" on a corrupt HEAD caused a segfault. In
general we substitute an empty tree object when running the in-core
equivalent of the diff-index command, and the codepath has been
corrected to do so as well to fix this issue.
Will merge to 'next'.
* jm/send-email-tls-auth-on-batch (2018-07-16) 1 commit
- send-email: fix tls AUTH when sending batch
"git send-email" when using in a batched mode that limits the
number of messages sent in a single SMTP session lost the contents
of the variable used to choose between tls/ssl, unable to send the
second and later batches, which has been fixed.
Will merge to 'next'.
This is marked to be merged to 'next' already, but I do not mind
getting an updated version with an improved log message before that
happens.
* jn/gc-auto (2018-07-17) 3 commits
- gc: do not return error for prior errors in daemonized mode
- gc: exit with status 128 on failure
- gc: improve handling of errors reading gc.log
"gc --auto" ended up calling exit(-1) upon error, which has been
corrected to use exit(1). Also the error reporting behaviour when
daemonized has been updated to exit with zero status when stopping
due to a previously discovered error (which implies there is no
point running gc to improve the situation); we used to exit with
failure in such a case.
Under discussion.
cf. <20180717201348.GD26218@sigill.intra.peff.net>
* js/rebase-merge-octopus (2018-07-11) 3 commits
- rebase --rebase-merges: adjust man page for octopus support
- rebase --rebase-merges: add support for octopus merges
- merge: allow reading the merge commit message from a file
"git rebase --rebase-merges" mode now handles octopus merges as
well.
Will merge to 'next'.
* jt/fetch-negotiator-skipping (2018-07-16) 1 commit
- negotiator/skipping: skip commits during fetch
(this branch uses jt/fetch-pack-negotiator; is tangled with jt/fetch-nego-tip.)
Add a server-side knob to skip commits in exponential/fibbonacci
stride in an attempt to cover wider swath of history with a smaller
number of iterations, potentially accepting a larger packfile
transfer, instead of going back one commit a time during common
ancestor discovery during the "git fetch" transaction.
Will merge to 'next'.
* jt/tags-to-promised-blobs-fix (2018-07-16) 2 commits
- tag: don't warn if target is missing but promised
- revision: tolerate promised targets of tags
(this branch uses bw/ref-in-want, jt/connectivity-check-after-unshallow and jt/partial-clone-fsck-connectivity.)
The lazy clone support had a few places where missing but promised
objects were not correctly tolerated, which have been fixed.
Will merge to 'next'.
* nd/command-list (2018-07-16) 1 commit
(merged to 'next' on 2018-07-18 at 77ed2a3914)
+ vcbuild/README: update to accommodate for missing common-cmds.h
Build doc update for Windows.
Will merge to 'master'.
* sb/blame-color (2018-07-16) 1 commit
(merged to 'next' on 2018-07-18 at c319268502)
+ blame: prefer xsnprintf to strcpy for colors
Code clean-up.
Will merge to 'master'.
* sb/submodule-update-in-c (2018-07-17) 6 commits
- submodule--helper: introduce new update-module-mode helper
- builtin/submodule--helper: factor out method to update a single submodule
- builtin/submodule--helper: store update_clone information in a struct
- builtin/submodule--helper: factor out submodule updating
- git-submodule.sh: rename unused variables
- git-submodule.sh: align error reporting for update mode to use path
"git submodule update" is getting rewritten piece-by-piece into C.
It seems to pass its own self-tests standalone, but seems to break
horribly when merged to 'pu'.
* sg/httpd-test-unflake (2018-07-12) 3 commits
- t/lib-httpd: avoid occasional failures when checking access.log
- t/lib-httpd: add the strip_access_log() helper function
- t5541: clean up truncating access log
httpd tests saw occasional breakage due to the way its access log
gets inspected by the tests, which has been updated to make them
less flaky.
Will merge to 'next'.
* sl/commit-dry-run-with-short-output-fix (2018-07-17) 3 commits
- commit: fix exit code for --short/--porcelain
- wt-status: teach wt_status_collect about merges in progress
- t7501: add merge conflict tests for dry run
Under discussion.
cf. <xmqqpnzlpyux.fsf@gitster-ct.c.googlers.com>
* tg/rerere (2018-07-16) 11 commits
- rerere: recalculate conflict ID when unresolved conflict is committed
- rerere: teach rerere to handle nested conflicts
- rerere: return strbuf from handle path
- rerere: factor out handle_conflict function
- rerere: only return whether a path has conflicts or not
- rerere: fix crash when conflict goes unresolved
- rerere: add documentation for conflict normalization
- rerere: mark strings for translation
- rerere: wrap paths in output in sq
- rerere: lowercase error messages
- rerere: unify error messages when read_cache fails
* wc/find-commit-with-pattern-on-detached-head (2018-07-12) 1 commit
(merged to 'next' on 2018-07-18 at 334d2420c0)
+ sha1-name.c: for ":/", find detached HEAD commits
"git rev-parse ':/substring'" did not consider the history leading
only to HEAD when looking for a commit with the given substring,
when the HEAD is detached. This has been fixed.
Will merge to 'master'.
* jk/ui-color-always-to-auto (2018-07-18) 1 commit
- Documentation: fix --color option formatting
--------------------------------------------------
[Stalled]
* pw/add-p-select (2018-03-16) 3 commits
- add -p: optimize line selection for short hunks
- add -p: allow line selection to be inverted
- add -p: select individual hunk lines
"git add -p" interactive interface learned to let users choose
individual added/removed lines to be used in the operation, instead
of accepting or rejecting a whole hunk.
Expecting a reroll to reignite the discussion.
cf. <9895c7b7-eac4-28c1-90c6-443acd1131b7@talktalk.net>
* hn/bisect-first-parent (2018-04-21) 1 commit
- bisect: create 'bisect_flags' parameter in find_bisection()
Preliminary code update to allow passing more flags down the
bisection codepath in the future.
We do not add random code that does not have real users to our
codebase, so let's have it wait until such a real code materializes
before too long.
* av/fsmonitor-updates (2018-01-04) 6 commits
- fsmonitor: use fsmonitor data in `git diff`
- fsmonitor: remove debugging lines from t/t7519-status-fsmonitor.sh
- fsmonitor: make output of test-dump-fsmonitor more concise
- fsmonitor: update helper tool, now that flags are filled later
- fsmonitor: stop inline'ing mark_fsmonitor_valid / _invalid
- dir.c: update comments to match argument name
Code clean-up on fsmonitor integration, plus optional utilization
of the fsmonitor data in diff-files.
Waiting for an update.
cf. <alpine.DEB.2.21.1.1801042335130.32@MININT-6BKU6QN.europe.corp.microsoft.com>
* pb/bisect-helper-2 (2018-06-13) 8 commits
- t6030: make various test to pass GETTEXT_POISON tests
- bisect--helper: `bisect_start` shell function partially in C
- bisect--helper: `get_terms` & `bisect_terms` shell function in C
- bisect--helper: `bisect_next_check` shell function in C
- bisect--helper: `check_and_set_terms` shell function in C
- wrapper: move is_empty_file() and rename it as is_empty_or_missing_file()
- bisect--helper: `bisect_write` shell function in C
- bisect--helper: `bisect_reset` shell function in C
Expecting a reroll.
cf. <0102015f5e5ee171-f30f4868-886f-47a1-a4e4-b4936afc545d-000000@eu-west-1.amazonses.com>
I just rebased the topic to a newer base as it did not build
standalone with the base I originally queued the topic on, but
otherwise there is no update to address any of the review comments
in the thread above---we are still waiting for a reroll.
* mk/http-backend-content-length (2018-06-11) 3 commits
- http-backend: respect CONTENT_LENGTH for receive-pack
- http-backend: respect CONTENT_LENGTH as specified by rfc3875
- http-backend: cleanup writing to child process
The http-backend (used for smart-http transport) used to slurp the
whole input until EOF, without paying attention to CONTENT_LENGTH
that is supplied in the environment and instead expecting the Web
server to close the input stream. This has been fixed.
* jk/drop-ancient-curl (2017-08-09) 5 commits
- http: #error on too-old curl
- curl: remove ifdef'd code never used with curl >=7.19.4
- http: drop support for curl < 7.19.4
- http: drop support for curl < 7.16.0
- http: drop support for curl < 7.11.1
Some code in http.c that has bitrot is being removed.
Expecting a reroll.
* mk/use-size-t-in-zlib (2017-08-10) 1 commit
. zlib.c: use size_t for size
The wrapper to call into zlib followed our long tradition to use
"unsigned long" for sizes of regions in memory, which have been
updated to use "size_t".
Needs resurrecting by making sure the fix is good and still applies
(or adjusted to today's codebase).
--------------------------------------------------
[Cooking]
* jh/json-writer (2018-07-16) 1 commit
- json_writer: new routines to create JSON data
Preparatory code to later add json output for telemetry data.
A series on top that adds telemetry data exists but hasn't been
picked up yet.
* ag/rebase-i-in-c (2018-07-10) 13 commits
- rebase -i: rewrite the rest of init_revisions_and_shortrevisions in C
- rebase -i: implement the logic to initialize the variable $revision in C
- rebase--interactive: remove unused modes and functions
- rebase--interactive: rewrite complete_action() in C
- sequencer: change the way skip_unnecessary_picks() returns its result
- sequencer: refactor append_todo_help() to write its message to a buffer
- rebase -i: rewrite checkout_onto() in C
- rebase -i: rewrite setup_reflog_action() in C
- sequencer: add a new function to silence a command, except if it fails
- rebase-interactive: rewrite the edit-todo functionality in C
- editor: add a function to launch the sequence editor
- rebase--interactive: rewrite append_todo_help() in C
- sequencer: make two functions and an enum from sequencer.c public
Piecemeal rewrite of the remaining "rebase -i" machinery in C.
Expecting a reroll.
The early parts of the series seem solidifying; perhaps with a
reroll or two, they become 'next' material?
* en/apply-comment-fix (2018-06-28) 1 commit
(merged to 'next' on 2018-07-18 at 31d818f17d)
+ apply: fix grammar error in comment
Will merge to 'master'.
* en/t5407-rebase-m-fix (2018-06-28) 1 commit
(merged to 'next' on 2018-07-18 at 459875daeb)
+ t5407: fix test to cover intended arguments
Will merge to 'master'.
* sb/object-store-lookup (2018-06-29) 33 commits
- commit.c: allow lookup_commit_reference to handle arbitrary repositories
- commit.c: allow lookup_commit_reference_gently to handle arbitrary repositories
- tag.c: allow deref_tag to handle arbitrary repositories
- object.c: allow parse_object to handle arbitrary repositories
- object.c: allow parse_object_buffer to handle arbitrary repositories
- commit.c: allow get_cached_commit_buffer to handle arbitrary repositories
- commit.c: allow set_commit_buffer to handle arbitrary repositories
- commit.c: migrate the commit buffer to the parsed object store
- commit-slabs: remove realloc counter outside of slab struct
- commit.c: allow parse_commit_buffer to handle arbitrary repositories
- tag: allow parse_tag_buffer to handle arbitrary repositories
- tag: allow lookup_tag to handle arbitrary repositories
- commit: allow lookup_commit to handle arbitrary repositories
- tree: allow lookup_tree to handle arbitrary repositories
- blob: allow lookup_blob to handle arbitrary repositories
- object: allow lookup_object to handle arbitrary repositories
- object: allow object_as_type to handle arbitrary repositories
- tag: add repository argument to deref_tag
- tag: add repository argument to parse_tag_buffer
- tag: add repository argument to lookup_tag
- commit: add repository argument to get_cached_commit_buffer
- commit: add repository argument to set_commit_buffer
- commit: add repository argument to parse_commit_buffer
- commit: add repository argument to lookup_commit
- commit: add repository argument to lookup_commit_reference
- commit: add repository argument to lookup_commit_reference_gently
- tree: add repository argument to lookup_tree
- blob: add repository argument to lookup_blob
- object: add repository argument to object_as_type
- object: add repository argument to parse_object_buffer
- object: add repository argument to lookup_object
- object: add repository argument to parse_object
- Merge branch 'sb/object-store-grafts' into sb/object-store-lookup
(this branch is used by jt/commit-graph-per-object-store.)
lookup_commit_reference() and friends have been updated to find
in-core object for a specific in-core repository instance.
Will merge to 'next'.
* ag/rebase-p (2018-07-06) 1 commit
(merged to 'next' on 2018-07-18 at c36ebba99b)
+ git-rebase--preserve-merges: fix formatting of todo help message
The help message shown in the editor to edit todo list in "rebase -p"
has regressed recently, which has been corrected.
Will merge to 'master'.
* bb/pedantic (2018-07-09) 8 commits
(merged to 'next' on 2018-07-18 at e9d075e8ed)
+ utf8.c: avoid char overflow
+ string-list.c: avoid conversion from void * to function pointer
+ sequencer.c: avoid empty statements at top level
+ convert.c: replace "\e" escapes with "\033".
+ fixup! refs/refs-internal.h: avoid forward declaration of an enum
+ refs/refs-internal.h: avoid forward declaration of an enum
+ fixup! connect.h: avoid forward declaration of an enum
+ connect.h: avoid forward declaration of an enum
The codebase has been updated to compile cleanly with -pedantic
option.
Will merge to 'master'.
* bb/unicode-11-width (2018-07-09) 1 commit
(merged to 'next' on 2018-07-18 at 075648ed37)
+ unicode: update the width tables to Unicode 11
The character display width table has been updated to match the
latest Unicode standard.
Will merge to 'master'.
* bc/object-id (2018-07-16) 16 commits
- pretty: switch hard-coded constants to the_hash_algo
- sha1-file: convert constants to uses of the_hash_algo
- log-tree: switch GIT_SHA1_HEXSZ to the_hash_algo->hexsz
- diff: switch GIT_SHA1_HEXSZ to use the_hash_algo
- builtin/merge-recursive: make hash independent
- builtin/merge: switch to use the_hash_algo
- builtin/fmt-merge-msg: make hash independent
- builtin/update-index: simplify parsing of cacheinfo
- builtin/update-index: convert to using the_hash_algo
- refs/files-backend: use the_hash_algo for writing refs
- sha1-name: use the_hash_algo when parsing object names
- strbuf: allocate space with GIT_MAX_HEXSZ
- commit: express tree entry constants in terms of the_hash_algo
- hex: switch to using the_hash_algo
- tree-walk: replace hard-coded constants with the_hash_algo
- cache: update object ID functions for the_hash_algo
Conversion from uchar[40] to struct object_id continues.
Will merge to 'next'.
* bc/send-email-auto-cte (2018-07-09) 4 commits
(merged to 'next' on 2018-07-18 at d16c2a301a)
+ docs: correct RFC specifying email line length
+ send-email: automatically determine transfer-encoding
+ send-email: accept long lines with suitable transfer encoding
+ send-email: add an auto option for transfer encoding
The content-transfer-encoding of the message "git send-email" sends
out by default was 8bit, which can cause trouble when there is an
overlong line to bust RFC 5322/2822 limit. A new option 'auto' to
automatically switch to quoted-printable when there is such a line
in the payload has been introduced and is made the default.
Will merge to 'master'.
* en/dirty-merge-fixes (2018-07-11) 9 commits
- merge: fix misleading pre-merge check documentation
- merge-recursive: enforce rule that index matches head before merging
- t6044: add more testcases with staged changes before a merge is invoked
- merge-recursive: fix assumption that head tree being merged is HEAD
- merge-recursive: make sure when we say we abort that we actually abort
- t6044: add a testcase for index matching head, when head doesn't match HEAD
- t6044: verify that merges expected to abort actually abort
- index_has_changes(): avoid assuming operating on the_index
- read-cache.c: move index_has_changes() from merge.c
The recursive merge strategy did not properly ensure there was no
change between HEAD and the index before performing its operation,
which has been corrected.
Will merge to 'next'.
* en/t6036-merge-recursive-tests (2018-07-11) 6 commits
- t6036: add a failed conflict detection case: regular files, different modes
- t6036: add a failed conflict detection case with conflicting types
- t6036: add a failed conflict detection case with submodule add/add
- t6036: add a failed conflict detection case with submodule modify/modify
- t6036: add a failed conflict detection case with symlink add/add
- t6036: add a failed conflict detection case with symlink modify/modify
Tests to cover various conflicting cases have been added for
merge-recursive.
Will merge to 'next'.
* en/t6036-recursive-corner-cases (2018-07-12) 2 commits
- t6036: fix broken && chain in sub-shell
- t6036: add lots of detail for directory/file conflicts in recursive case
Tests to cover more D/F conflict cases have been added for
merge-recursive.
Will merge to 'next'.
* en/t6042-insane-merge-rename-testcases (2018-07-03) 3 commits
- t6042: add testcase covering long chains of rename conflicts
- t6042: add testcase covering rename/rename(2to1)/delete/delete conflict
- t6042: add testcase covering rename/add/delete conflict type
Various glitches in the heuristics of merge-recursive strategy have
been documented in new tests.
Will merge to 'next'.
I am not sure if there is a single "correct" answer everybody can
agree on for each of these "insane" cases, though.
* en/t7405-recursive-submodule-conflicts (2018-07-11) 3 commits
- t7405: verify 'merge --abort' works after submodule/path conflicts
- t7405: add a directory/submodule conflict
- t7405: add a file/submodule conflict
Tests to cover conflict cases that involve submodules have been
added for merge-recursive.
Will merge to 'next'.
* es/test-fixes (2018-07-17) 26 commits
- t5608: fix broken &&-chain
- t9119: fix broken &&-chains
- t9000-t9999: fix broken &&-chains
- t7000-t7999: fix broken &&-chains
- t6000-t6999: fix broken &&-chains
- t5000-t5999: fix broken &&-chains
- t4000-t4999: fix broken &&-chains
- t3030: fix broken &&-chains
- t3000-t3999: fix broken &&-chains
- t2000-t2999: fix broken &&-chains
- t1000-t1999: fix broken &&-chains
- t0000-t0999: fix broken &&-chains
- t9814: simplify convoluted check that command correctly errors out
- t9001: fix broken "invoke hook" test
- t7810: use test_expect_code() instead of hand-rolled comparison
- t7400: fix broken "submodule add/reconfigure --force" test
- t7201: drop pointless "exit 0" at end of subshell
- t6036: fix broken "merge fails but has appropriate contents" tests
- t5505: modernize and simplify hard-to-digest test
- t5406: use write_script() instead of birthing shell script manually
- t5405: use test_must_fail() instead of checking exit code manually
- t/lib-submodule-update: fix "absorbing" test
- t: drop unnecessary terminating semicolon in subshell
- t: use sane_unset() rather than 'unset' with broken &&-chain
- t: use test_write_lines() instead of series of 'echo' commands
- t: use test_might_fail() instead of manipulating exit code manually
(this branch is used by es/chain-lint-in-subshell.)
Test clean-up and corrections.
Will merge to 'next'.
* jk/empty-pick-fix (2018-07-11) 2 commits
(merged to 'next' on 2018-07-18 at 43bfa862f2)
+ sequencer: don't say BUG on bogus input
+ sequencer: handle empty-set cases consistently
Handling of an empty range by "git cherry-pick" was inconsistent
depending on how the range ended up to be empty, which has been
corrected.
Will merge to 'master'.
* jk/fetch-all-peeled-fix (2018-07-06) 1 commit
(merged to 'next' on 2018-07-18 at d06c6f1665)
+ t5500: prettify non-commit tag tests
Test modernization.
Will merge to 'master'.
* jk/for-each-ref-icase (2018-07-03) 3 commits
(merged to 'next' on 2018-07-18 at 4c86d62adb)
+ ref-filter: avoid backend filtering with --ignore-case
+ for-each-ref: consistently pass WM_IGNORECASE flag
+ t6300: add a test for --ignore-case
The "--ignore-case" option of "git for-each-ref" (and its friends)
did not work correctly, which has been fixed.
Will merge to 'master'.
* jk/fsck-gitmodules-gently (2018-07-16) 6 commits
- fsck: downgrade gitmodulesParse default to "info"
- fsck: split ".gitmodules too large" error from parse failure
- fsck: silence stderr when parsing .gitmodules
- config: add options parameter to git_config_from_mem
- config: add CONFIG_ERROR_SILENT handler
- config: turn die_on_error into caller-facing enum
Recent "security fix" to pay attention to contents of ".gitmodules"
while accepting "git push" was a bit overly strict than necessary,
which has been adjusted.
Will merge to 'next'.
* js/range-diff (2018-07-09) 20 commits
- range-diff: make --dual-color the default mode
- range-diff: left-pad patch numbers
- completion: support `git range-diff`
- range-diff: add a man page
- range-diff --dual-color: work around bogus white-space warning
- range-diff: offer to dual-color the diffs
- diff: add an internal option to dual-color diffs of diffs
- color: add the meta color GIT_COLOR_REVERSE
- range-diff: use color for the commit pairs
- range-diff: add tests
- range-diff: do not show "function names" in hunk headers
- range-diff: adjust the output of the commit pairs
- range-diff: suppress the diff headers
- range-diff: indent the diffs just like tbdiff
- range-diff: right-trim commit messages
- range-diff: also show the diff between patches
- range-diff: improve the order of the shown commits
- range-diff: first rudimentary implementation
- Introduce `range-diff` to compare iterations of a topic branch
- linear-assignment: a function to solve least-cost assignment problems
"git tbdiff" that lets us compare individual patches in two
iterations of a topic has been rewritten and made into a built-in
command.
Supersedes js/branch-diff topic that added a similar command under
a different name.
* jt/commit-graph-per-object-store (2018-07-17) 7 commits
- commit-graph: add repo arg to graph readers
- commit-graph: store graph in struct object_store
- commit-graph: add free_commit_graph
- commit-graph: add missing forward declaration
- object-store: add missing include
- commit-graph: refactor preparing commit graph
- Merge branch 'ds/commit-graph-fsck' into jt/commit-graph-per-object-store
(this branch uses ds/commit-graph-fsck and sb/object-store-lookup.)
The singleton commit-graph in-core instance is made per in-core
repository instance.
Will merge to 'next'.
* jt/partial-clone-fsck-connectivity (2018-07-09) 2 commits
(merged to 'next' on 2018-07-18 at 968fd9c9f0)
+ clone: check connectivity even if clone is partial
+ upload-pack: send refs' objects despite "filter"
(this branch is used by jt/tags-to-promised-blobs-fix; uses bw/ref-in-want and jt/connectivity-check-after-unshallow.)
Partial clone support of "git clone" has been updated to correctly
validate the objects it receives from the other side. The server
side has been corrected to send objects that are directly
requested, even if they may match the filtering criteria (e.g. when
doing a "lazy blob" partial clone).
Will merge to 'master'.
* kg/gc-auto-windows-workaround (2018-07-09) 1 commit
- gc --auto: release pack files before auto packing
"git gc --auto" opens file descriptors for the packfiles before
spawning "git repack/prune", which would upset Windows that does
not want a process to work on a file that is open by another
process. The issue has been worked around.
Will merge to 'next'.
* kn/userdiff-php (2018-07-06) 2 commits
(merged to 'next' on 2018-07-18 at 9a533dc33a)
+ userdiff: support new keywords in PHP hunk header
+ t4018: add missing test cases for PHP
The userdiff pattern for .php has been updated.
Will merge to 'master'.
* lt/date-human (2018-07-09) 1 commit
- Add 'human' date format
* mh/fast-import-no-diff-delta-empty (2018-07-06) 1 commit
(merged to 'next' on 2018-07-18 at eb393871f4)
+ fast-import: do not call diff_delta() with empty buffer
"git fast-import" has been updated to avoid attempting to create
delta against a zero-byte-long string, which is pointless.
Will merge to 'master'.
* ot/ref-filter-object-info (2018-07-17) 5 commits
- ref-filter: use oid_object_info() to get object
- ref-filter: merge get_obj and get_object
- ref-filter: initialize eaten variable
- ref-filter: fill empty fields with empty values
- ref-filter: add info_source to valid_atom
A few atoms like %(objecttype) and %(objectsize) in the format
specifier of "for-each-ref --format=<format>" can be filled without
getting the full contents of the object, but just with the object
header. These cases have been optimzied by calling
oid_object_info() API.
What's the doneness of this one?
* pk/rebase-in-c (2018-07-09) 4 commits
- builtin/rebase: support running "git rebase <upstream>"
- sequencer: refactor the code to detach HEAD to checkout.c
- rebase: refactor common shell functions into their own file
- rebase: start implementing it as a builtin
Piecemeal rewrite of the "rebase" machinery in C.
Expecting a reroll, but it seems that this is getting quite close.
cf. <CAOZc8M8YmLwJOzG-1jyz8ft4W_tJMwNs6kSV8inX1q_zmDW8Sg@mail.gmail.com>
* tb/config-default (2018-07-06) 1 commit
(merged to 'next' on 2018-07-18 at 7994476f6f)
+ builtin/config: work around an unsized array forward declaration
Compilation fix.
Will merge to 'master'.
* bp/log-ref-write-fd-with-strbuf (2018-07-10) 1 commit
(merged to 'next' on 2018-07-18 at 25a3a99528)
+ convert log_ref_write_fd() to use strbuf
Code clean-up.
Will merge to 'master'.
* hs/push-cert-check-cleanup (2018-07-11) 2 commits
(merged to 'next' on 2018-07-18 at 1ed25fbd77)
+ gpg-interface: make parse_gpg_output static and remove from interface header
+ builtin/receive-pack: use check_signature from gpg-interface
(this branch is used by hs/gpgsm.)
Code clean-up.
Will merge to 'master'.
* mk/merge-in-sparse-checkout (2018-07-11) 1 commit
(merged to 'next' on 2018-07-18 at d2a6d2684d)
+ unpack-trees: do not fail reset because of unmerged skipped entry
"git reset --merge" (hence "git merge ---abort") and "git reset --hard"
had trouble working correctly in a sparsely checked out working
tree after a conflict, which has been corrected.
Will merge to 'master'.
* as/sequencer-customizable-comment-char (2018-07-16) 1 commit
(merged to 'next' on 2018-07-18 at 4163e23f29)
+ sequencer: use configured comment character
Honor core.commentchar when preparing the list of commits to replay
in "rebase -i".
Will merge to 'master'.
* jt/connectivity-check-after-unshallow (2018-07-03) 1 commit
(merged to 'next' on 2018-07-18 at 8e7ee889c3)
+ fetch-pack: write shallow, then check connectivity
(this branch is used by jt/partial-clone-fsck-connectivity and jt/tags-to-promised-blobs-fix; uses bw/ref-in-want.)
"git fetch" failed to correctly validate the set of objects it
received when making a shallow history deeper, which has been
corrected.
Will merge to 'master'.
* jt/fetch-nego-tip (2018-07-03) 1 commit
- fetch-pack: support negotiation tip whitelist
(this branch uses jt/fetch-pack-negotiator; is tangled with jt/fetch-negotiator-skipping.)
"git fetch" learned a new option "--negotiation-tip" to limit the
set of commits it tells the other end as "have", to reduce wasted
bandwidth and cycles, which would be helpful when the receiving
repository has a lot of refs that have little to do with the
history at the remote it is fetching from.
Will merge to 'next'.
* rj/submodule-fsck-skip (2018-07-03) 1 commit
(merged to 'next' on 2018-07-11 at 985f88cf7e)
+ fsck: check skiplist for object in fsck_blob()
"fsck.skipList" did not prevent a blob object listed there from
being inspected for is contents (e.g. we recently started to
inspect the contents of ".gitmodules" for certain malicious
patterns), which has been corrected.
Will merge to 'master'.
* tb/grep-only-matching (2018-07-09) 2 commits
- grep.c: teach 'git grep --only-matching'
- grep.c: extract show_line_header()
"git grep" learned the "--only-matching" option.
Will merge to 'next'.
* bw/ref-in-want (2018-06-28) 8 commits
(merged to 'next' on 2018-07-18 at 7e9f8db37c)
+ fetch-pack: implement ref-in-want
+ fetch-pack: put shallow info in output parameter
+ fetch: refactor to make function args narrower
+ fetch: refactor fetch_refs into two functions
+ fetch: refactor the population of peer ref OIDs
+ upload-pack: test negotiation with changing repository
+ upload-pack: implement ref-in-want
+ test-pkt-line: add unpack-sideband subcommand
(this branch is used by jt/connectivity-check-after-unshallow, jt/partial-clone-fsck-connectivity and jt/tags-to-promised-blobs-fix.)
Protocol v2 has been updated to allow slightly out-of-sync set of
servers to work together to serve a single client, which would be
useful with load-balanced servers that talk smart HTTP transport.
Will merge to 'master'.
* en/rebase-consistency (2018-06-27) 9 commits
(merged to 'next' on 2018-07-18 at d597206c79)
+ git-rebase: make --allow-empty-message the default
+ t3401: add directory rename testcases for rebase and am
+ git-rebase.txt: document behavioral differences between modes
+ directory-rename-detection.txt: technical docs on abilities and limitations
+ git-rebase.txt: address confusion between --no-ff vs --force-rebase
+ git-rebase: error out when incompatible options passed
+ t3422: new testcases for checking when incompatible options passed
+ git-rebase.sh: update help messages a bit
+ git-rebase.txt: document incompatible options
"git rebase" behaved slightly differently depending on which one of
the three backends gets used; this has been documented and an
effort to make them more uniform has begun.
Will merge to 'master'.
* sb/submodule-move-head-error-msg (2018-06-25) 1 commit
(merged to 'next' on 2018-07-18 at 9e213ad1aa)
+ submodule.c: report the submodule that an error occurs in
Will merge to 'master'.
* jk/branch-l-1-repurpose (2018-06-22) 1 commit
- branch: make "-l" a synonym for "--list"
Updated plan to repurpose the "-l" option to "git branch".
Will hold in 'pu' until jk/branch-l-0-deprecation progresses sufficiently.
* cc/remote-odb (2018-07-16) 9 commits
- Documentation/config: add odb.<name>.promisorRemote
- t0410: test fetching from many promisor remotes
- Use odb.origin.partialclonefilter instead of core.partialclonefilter
- Use remote_odb_get_direct() and has_remote_odb()
- remote-odb: add remote_odb_reinit()
- remote-odb: implement remote_odb_get_many_direct()
- remote-odb: implement remote_odb_get_direct()
- Add initial remote odb support
- fetch-object: make functions return an error code
* ds/multi-pack-index (2018-07-12) 23 commits
- midx: clear midx on repack
- packfile: skip loading index if in multi-pack-index
- midx: prevent duplicate packfile loads
- midx: use midx in approximate_object_count
- midx: use existing midx when writing new one
- midx: use midx in abbreviation calculations
- midx: read objects from multi-pack-index
- config: create core.multiPackIndex setting
- midx: write object offsets
- midx: write object id fanout chunk
- midx: write object ids in a chunk
- midx: sort and deduplicate objects from packfiles
- midx: read pack names into array
- multi-pack-index: write pack names in chunk
- multi-pack-index: read packfile list
- packfile: generalize pack directory list
- t5319: expand test data
- multi-pack-index: load into memory
- midx: write header information to lockfile
- multi-pack-index: add 'write' verb
- multi-pack-index: add builtin
- multi-pack-index: add format details
- multi-pack-index: add design document
When there are too many packfiles in a repository (which is not
recommended), looking up an object in these would require
consulting many pack .idx files; a new mechanism to have a single
file that consolidates all of these .idx files is introduced.
What's the doneness of this one? I vaguely recall that there was
an objection against the concept as a whole (i.e. there is a way
with less damage to gain the same object-abbrev performance); has
it (and if anything else, they) been resolved in satisfactory
fashion?
* jt/fetch-pack-negotiator (2018-06-15) 7 commits
- fetch-pack: introduce negotiator API
- fetch-pack: move common check and marking together
- fetch-pack: make negotiation-related vars local
- fetch-pack: use ref adv. to prune "have" sent
- fetch-pack: directly end negotiation if ACK ready
- fetch-pack: clear marks before re-marking
- fetch-pack: split up everything_local()
(this branch is used by jt/fetch-nego-tip and jt/fetch-negotiator-skipping.)
Code restructuring and a small fix to transport protocol v2 during
fetching.
Will merge to 'next'.
* is/parsing-line-range (2018-06-15) 2 commits
- log: prevent error if line range ends past end of file
- blame: prevent error if range ends past end of file
Parsing of -L[<N>][,[<M>]] parameters "git blame" and "git log"
take has been tweaked.
Will merge to 'next'.
* ab/checkout-default-remote (2018-06-11) 8 commits
- checkout & worktree: introduce checkout.defaultRemote
- checkout: add advice for ambiguous "checkout <branch>"
- builtin/checkout.c: use "ret" variable for return
- checkout: pass the "num_matches" up to callers
- checkout.c: change "unique" member to "num_matches"
- checkout.c: introduce an *_INIT macro
- checkout.h: wrap the arguments to unique_tracking_name()
- checkout tests: index should be clean after dwim checkout
"git checkout" and "git worktree add" learned to honor
checkout.defaultRemote when auto-vivifying a local branch out of a
remote tracking branch in a repository with multiple remotes that
have tracking branches that share the same names.
Will merge to 'next'.
* ds/commit-graph-fsck (2018-07-16) 23 commits
- coccinelle: update commit.cocci
- commit-graph: update design document
- gc: automatically write commit-graph files
- commit-graph: add '--reachable' option
- commit-graph: use string-list API for input
- fsck: verify commit-graph
- commit-graph: verify contents match checksum
- commit-graph: test for corrupted octopus edge
- commit-graph: verify commit date
- commit-graph: verify generation number
- commit-graph: verify parent list
- commit-graph: verify root tree OIDs
- commit-graph: verify objects exist
- commit-graph: verify corrupt OID fanout and lookup
- commit-graph: verify required chunks are present
- commit-graph: verify catches corrupt signature
- commit-graph: add 'verify' subcommand
- commit-graph: load a root tree from specific graph
- commit: force commit to parse from object database
- commit-graph: parse commit from chosen graph
- commit-graph: fix GRAPH_MIN_SIZE
- commit-graph: UNLEAK before die()
- t5318-commit-graph.sh: use core.commitGraph
(this branch is used by jt/commit-graph-per-object-store.)
"git fsck" learns to make sure the optional commit-graph file is in
a sane state.
Will merge to 'next'.
* ma/wrapped-info (2018-05-28) 2 commits
- usage: prefix all lines in `vreportf()`, not just the first
- usage: extract `prefix_suffix_lines()` from `advise()`
An attempt to help making multi-line messages fed to warning(),
error(), and friends more easily translatable.
Will discard and wait for a cleaned-up rewrite.
cf. <20180529213957.GF7964@sigill.intra.peff.net>
* jm/cache-entry-from-mem-pool (2018-07-03) 8 commits
- block alloc: add validations around cache_entry lifecyle
- block alloc: allocate cache entries from mem_pool
- mem-pool: fill out functionality
- mem-pool: add life cycle management functions
- mem-pool: only search head block for available space
- block alloc: add lifecycle APIs for cache_entry structs
- read-cache: teach make_cache_entry to take object_id
- read-cache: teach refresh_cache_entry to take istate
For a large tree, the index needs to hold many cache entries
allocated on heap. These cache entries are now allocated out of a
dedicated memory pool to amortize malloc(3) overhead.
Will merge to 'next'.
This makes each cache-entry larger by either 4 or 8 bytes, which is
a bit sad, though.
* sb/diff-color-move-more (2018-07-17) 9 commits
- diff.c: add white space mode to move detection that allows indent changes
- diff.c: factor advance_or_nullify out of mark_color_as_moved
- diff.c: decouple white space treatment from move detection algorithm
- diff.c: add a blocks mode for moved code detection
- diff.c: adjust hash function signature to match hashmap expectation
- diff.c: do not pass diff options as keydata to hashmap
- t4015: avoid git as a pipe input
- xdiff/xdiffi.c: remove unneeded function declarations
- xdiff/xdiff.h: remove unused flags
"git diff --color-moved" feature has further been tweaked.
Will merge to 'next'.
--------------------------------------------------
[Discarded]
* ag/rebase-i-append-todo-help (2018-06-14) 2 commits
. rebase--interactive: rewrite append_todo_help() in C
. Merge branch 'ag/rebase-p' into ag/rebase-i-append-todo-help
(this branch is used by ag/rebase-i-rewrite-todo.)
Stepwise rewriting of the machinery of "rebase -i" into C continues.
Now part of ag/rebase-i-in-c
* ag/rebase-i-rewrite-todo (2018-06-15) 3 commits
. rebase--interactive: rewrite the edit-todo functionality in C
. editor: add a function to launch the sequence editor
. Merge branch 'bc/t3430-fixup' into ag/rebase-i-rewrite-todo
(this branch uses ag/rebase-i-append-todo-help.)
Stepwise rewriting of the machinery of "rebase -i" into C continues.
Now part of ag/rebase-i-in-c
* ab/fetch-tags-noclobber (2018-05-16) 9 commits
- fixup! push tests: assert re-pushing annotated tags
- fetch: stop clobbering existing tags without --force
- fetch tests: add a test clobbering tag behavior
- fetch tests: correct a comment "remove it" -> "remove them"
- push doc: correct lies about how push refspecs work
- push tests: assert re-pushing annotated tags
- push tests: add more testing for forced tag pushing
- push tests: fix logic error in "push" test assertion
- push tests: remove redundant 'git push' invocation
Discarded per request.
cf. <87po09cnir.fsf@evledraar.gmail.com>
* nd/use-the-index-compat-less (2018-06-25) 13 commits
. wt-status.c: stop using index compat macros
. sha1-name.c: stop using index compat macros
. sequencer.c: stop using index compat macros
. revision.c: stop using index compat macros
. rerere.c: stop using index compat macros
. merge.c: stop using index compat macros
. merge-recursive.c: stop using index compat macros
. entry.c: stop using index compat macros
. diff.c: stop using index compat macros
. diff-lib.c: stop using index compat macros
. check-racy.c: stop using index compat macros
. blame.c: stop using index compat macros
. apply.c: stop using index compat macros
Retracted to be replaced with a more vertical approach where the
lower-level helper functions are taught to be capable of working on
an istate instance that is not the_index first, and then upwards to
support the application layer that wants to work on an arbitrary
istate instance, as the goal is not a mechanical replacement of
foo_cache(...) to foo_index(&the_index, ...).
* js/branch-diff (2018-05-16) 19 commits
. fixup! Add a function to solve least-cost assignment problems
. completion: support branch-diff
. branch-diff: add a man page
. branch-diff --dual-color: work around bogus white-space warning
. branch-diff: offer to dual-color the diffs
. diff: add an internal option to dual-color diffs of diffs
. color: provide inverted colors, too
. branch-diff: use color for the commit pairs
. branch-diff: add tests
. branch-diff: do not show "function names" in hunk headers
. branch-diff: adjust the output of the commit pairs
. branch-diff: suppress the diff headers
. branch-diff: indent the diffs just like tbdiff
. branch-diff: right-trim commit messages
. branch-diff: also show the diff between patches
. branch-diff: improve the order of the shown commits
. branch-diff: first rudimentary implementation
. Add a new builtin: branch-diff
. Add a function to solve least-cost assignment problems
"git tbdiff" that lets us compare individual patches in two
iterations of a topic has been rewritten and made into a built-in
command.
^ permalink raw reply [relevance 3%]
* [PATCH v2 2/2] read-cache: fix directory/file conflict handling in read_index_unmerged()
@ 2018-07-13 16:33 2% ` Elijah Newren
1 sibling, 0 replies; 200+ results
From: Elijah Newren @ 2018-07-13 16:33 UTC (permalink / raw)
To: gitster; +Cc: git, sunshine, Elijah Newren
read_index_unmerged() has two intended purposes:
* return 1 if there are any unmerged entries, 0 otherwise
* drops any higher-stage entries down to stage #0
There are several callers of read_index_unmerged() that check the return
value to see if it is non-zero, all of which then die() if that condition
is met. For these callers, dropping higher-stage entries down to stage #0
is a waste of resources, and returning immediately on first unmerged entry
would be better. But it's probably only a very minor difference and isn't
the focus of this series.
The remaining callers ignore the return value and call this function for
the side effect of dropping higher-stage entries down to stage #0. As
mentioned in commit e11d7b596970 ("'reset --merge': fix unmerged case",
2009-12-31),
The _only_ reason we want to keep a previously unmerged entry in the
index at stage #0 is so that we don't forget the fact that we have
corresponding file in the work tree in order to be able to remove it
when the tree we are resetting to does not have the path.
In fact, prior to commit d1a43f2aa4bf ("reset --hard/read-tree --reset -u:
remove unmerged new paths", 2008-10-15), read_index_unmerged() did just
remove unmerged entries from the cache immediately but that had the
unwanted effect of leaving around new untracked files in the tree from
aborted merges.
So, that's the intended purpose of this function. The problem is that
when directory/files conflicts are present, trying to add the file to the
index at stage 0 fails (because there is still a directory in the way),
and the function returns early with a -1 return code to signify the error.
As noted above, none of the callers who want the drop-to-stage-0 behavior
check the return status, though, so this means all remaining unmerged
entries remain in the index and the callers proceed assuming otherwise.
Users then see errors of the form:
error: 'DIR-OR-FILE' appears as both a file and as a directory
error: DIR-OR-FILE: cannot drop to stage #0
and potentially also messages about other unmerged entries which came
lexicographically later than whatever pathname was both a file and a
directory. Google finds a few hits searching for those messages,
suggesting there were probably a couple people who hit this besides me.
Luckily, calling `git reset --hard` multiple times would workaround
this bug.
Since the whole purpose here is to just put the entry *temporarily* into
the index so that any associated file in the working copy can be removed,
we can just skip the DFCHECK and allow both the file and directory to
appear in the index. The temporary simultaneous appearance of the
directory and file entries in the index will be removed by the callers
by calling unpack_trees(), which excludes these unmerged entries marked
with CE_CONFLICTED flag from the resulting index, before they attempt to
write the index anywhere.
Signed-off-by: Elijah Newren <newren@gmail.com>
---
read-cache.c | 13 ++++++++-----
t/t1015-read-index-unmerged.sh | 8 ++++----
t/t6020-merge-df.sh | 3 ---
t/t6042-merge-rename-corner-cases.sh | 1 -
4 files changed, 12 insertions(+), 13 deletions(-)
diff --git a/read-cache.c b/read-cache.c
index 372588260e..666d295a5a 100644
--- a/read-cache.c
+++ b/read-cache.c
@@ -2632,10 +2632,13 @@ int write_locked_index(struct index_state *istate, struct lock_file *lock,
/*
* Read the index file that is potentially unmerged into given
- * index_state, dropping any unmerged entries. Returns true if
- * the index is unmerged. Callers who want to refuse to work
- * from an unmerged state can call this and check its return value,
- * instead of calling read_cache().
+ * index_state, dropping any unmerged entries to stage #0 (potentially
+ * resulting in a path appearing as both a file and a directory in the
+ * index; the caller is responsible to clear out the extra entries
+ * before writing the index to a tree). Returns true if the index is
+ * unmerged. Callers who want to refuse to work from an unmerged
+ * state can call this and check its return value, instead of calling
+ * read_cache().
*/
int read_index_unmerged(struct index_state *istate)
{
@@ -2658,7 +2661,7 @@ int read_index_unmerged(struct index_state *istate)
new_ce->ce_flags = create_ce_flags(0) | CE_CONFLICTED;
new_ce->ce_namelen = len;
new_ce->ce_mode = ce->ce_mode;
- if (add_index_entry(istate, new_ce, 0))
+ if (add_index_entry(istate, new_ce, ADD_CACHE_SKIP_DFCHECK))
return error("%s: cannot drop to stage #0",
new_ce->name);
}
diff --git a/t/t1015-read-index-unmerged.sh b/t/t1015-read-index-unmerged.sh
index 32ef6bdcfa..55d22da32c 100755
--- a/t/t1015-read-index-unmerged.sh
+++ b/t/t1015-read-index-unmerged.sh
@@ -30,7 +30,7 @@ test_expect_success 'setup modify/delete + directory/file conflict' '
)
'
-test_expect_failure 'read-tree --reset cleans unmerged entries' '
+test_expect_success 'read-tree --reset cleans unmerged entries' '
test_when_finished "git -C df_plus_modify_delete clean -f" &&
test_when_finished "git -C df_plus_modify_delete reset --hard" &&
(
@@ -45,7 +45,7 @@ test_expect_failure 'read-tree --reset cleans unmerged entries' '
)
'
-test_expect_failure 'One reset --hard cleans unmerged entries' '
+test_expect_success 'One reset --hard cleans unmerged entries' '
test_when_finished "git -C df_plus_modify_delete clean -f" &&
test_when_finished "git -C df_plus_modify_delete reset --hard" &&
(
@@ -87,7 +87,7 @@ test_expect_success 'setup directory/file conflict + simple edit/edit' '
)
'
-test_expect_failure 'git merge --abort succeeds despite D/F conflict' '
+test_expect_success 'git merge --abort succeeds despite D/F conflict' '
test_when_finished "git -C df_plus_edit_edit clean -f" &&
test_when_finished "git -C df_plus_edit_edit reset --hard" &&
(
@@ -103,7 +103,7 @@ test_expect_failure 'git merge --abort succeeds despite D/F conflict' '
)
'
-test_expect_failure 'git am --skip succeeds despite D/F conflict' '
+test_expect_success 'git am --skip succeeds despite D/F conflict' '
test_when_finished "git -C df_plus_edit_edit clean -f" &&
test_when_finished "git -C df_plus_edit_edit reset --hard" &&
(
diff --git a/t/t6020-merge-df.sh b/t/t6020-merge-df.sh
index 2af1beec5f..46b506b3b7 100755
--- a/t/t6020-merge-df.sh
+++ b/t/t6020-merge-df.sh
@@ -89,9 +89,6 @@ test_expect_success 'modify/delete + directory/file conflict' '
'
test_expect_success 'modify/delete + directory/file conflict; other way' '
- # Yes, we really need the double reset since "letters" appears as
- # both a file and a directory.
- git reset --hard &&
git reset --hard &&
git clean -f &&
git checkout modify^0 &&
diff --git a/t/t6042-merge-rename-corner-cases.sh b/t/t6042-merge-rename-corner-cases.sh
index 1cbd946fc2..583e68997e 100755
--- a/t/t6042-merge-rename-corner-cases.sh
+++ b/t/t6042-merge-rename-corner-cases.sh
@@ -323,7 +323,6 @@ test_expect_success 'rename/directory conflict + content merge conflict' '
(
cd rename-directory-1 &&
- git reset --hard &&
git reset --hard &&
git clean -fdqx &&
--
2.18.0.645.g72fe132ec2
^ permalink raw reply related [relevance 2%]
* What's cooking in git.git (Jul 2018, #01; Wed, 11)
@ 2018-07-11 19:02 3% Junio C Hamano
0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2018-07-11 19:02 UTC (permalink / raw)
To: git
Here are the topics that have been cooking. Commits prefixed with
'-' are only in 'pu' (proposed updates) while commits prefixed with
'+' are in 'next'. The ones marked with '.' do not appear in any of
the integration branches, but I am still holding onto them.
The tip of 'next' has been rewound and it currently has only 4
topics. Quite a many topics are cooking in 'pu' and need to be
sifted into good bins (for 'next') and the remainder. Help is
appreciated in that area ;-)
You can find the changes described here in the integration branches
of the repositories listed at
http://git-blame.blogspot.com/p/git-public-repositories.html
--------------------------------------------------
[New Topics]
* ag/rebase-i-in-c (2018-07-10) 13 commits
- rebase -i: rewrite the rest of init_revisions_and_shortrevisions in C
- rebase -i: implement the logic to initialize the variable $revision in C
- rebase--interactive: remove unused modes and functions
- rebase--interactive: rewrite complete_action() in C
- sequencer: change the way skip_unnecessary_picks() returns its result
- sequencer: refactor append_todo_help() to write its message to a buffer
- rebase -i: rewrite checkout_onto() in C
- rebase -i: rewrite setup_reflog_action() in C
- sequencer: add a new function to silence a command, except if it fails
- rebase-interactive: rewrite the edit-todo functionality in C
- editor: add a function to launch the sequence editor
- rebase--interactive: rewrite append_todo_help() in C
- sequencer: make two functions and an enum from sequencer.c public
Piecemeal rewrite of the remaining "rebase -i" machinery in C.
Expecting a reroll.
The early parts of the series seem solidifying; perhaps with a
reroll or two, they become 'next' material?
* en/apply-comment-fix (2018-06-28) 1 commit
- apply: fix grammar error in comment
Will merge to 'next'.
* en/t5407-rebase-m-fix (2018-06-28) 1 commit
- t5407: fix test to cover intended arguments
Will merge to 'next'.
* sb/mailmap (2018-06-29) 1 commit
(merged to 'next' on 2018-07-11 at d9dc53e374)
+ .mailmap: merge different spellings of names
Will merge to 'master'.
* sb/object-store-lookup (2018-06-29) 33 commits
- commit.c: allow lookup_commit_reference to handle arbitrary repositories
- commit.c: allow lookup_commit_reference_gently to handle arbitrary repositories
- tag.c: allow deref_tag to handle arbitrary repositories
- object.c: allow parse_object to handle arbitrary repositories
- object.c: allow parse_object_buffer to handle arbitrary repositories
- commit.c: allow get_cached_commit_buffer to handle arbitrary repositories
- commit.c: allow set_commit_buffer to handle arbitrary repositories
- commit.c: migrate the commit buffer to the parsed object store
- commit-slabs: remove realloc counter outside of slab struct
- commit.c: allow parse_commit_buffer to handle arbitrary repositories
- tag: allow parse_tag_buffer to handle arbitrary repositories
- tag: allow lookup_tag to handle arbitrary repositories
- commit: allow lookup_commit to handle arbitrary repositories
- tree: allow lookup_tree to handle arbitrary repositories
- blob: allow lookup_blob to handle arbitrary repositories
- object: allow lookup_object to handle arbitrary repositories
- object: allow object_as_type to handle arbitrary repositories
- tag: add repository argument to deref_tag
- tag: add repository argument to parse_tag_buffer
- tag: add repository argument to lookup_tag
- commit: add repository argument to get_cached_commit_buffer
- commit: add repository argument to set_commit_buffer
- commit: add repository argument to parse_commit_buffer
- commit: add repository argument to lookup_commit
- commit: add repository argument to lookup_commit_reference
- commit: add repository argument to lookup_commit_reference_gently
- tree: add repository argument to lookup_tree
- blob: add repository argument to lookup_blob
- object: add repository argument to object_as_type
- object: add repository argument to parse_object_buffer
- object: add repository argument to lookup_object
- object: add repository argument to parse_object
- Merge branch 'sb/object-store-grafts' into sb/object-store-lookup
(this branch uses sb/object-store-grafts.)
lookup_commit_reference() and friends have been updated to find
in-core object for a specific in-core repository instance.
Will merge to 'next'.
* ag/rebase-p (2018-07-06) 1 commit
- git-rebase--preserve-merges: fix formatting of todo help message
The help message shown in the editor to edit todo list in "rebase -p"
has regressed recently, which has been corrected.
Will merge to 'next'.
* bb/pedantic (2018-07-09) 8 commits
- utf8.c: avoid char overflow
- string-list.c: avoid conversion from void * to function pointer
- sequencer.c: avoid empty statements at top level
- convert.c: replace "\e" escapes with "\033".
- fixup! refs/refs-internal.h: avoid forward declaration of an enum
- refs/refs-internal.h: avoid forward declaration of an enum
- fixup! connect.h: avoid forward declaration of an enum
- connect.h: avoid forward declaration of an enum
The codebase has been updated to compile cleanly with -pedantic
option.
Will merge to 'next'.
* bb/unicode-11-width (2018-07-09) 1 commit
- unicode: update the width tables to Unicode 11
The character display width table has been updated to match the
latest Unicode standard.
Will merge to 'next'.
* bc/object-id (2018-07-09) 17 commits
- pretty: switch hard-coded constants to the_hash_algo
- sha1-file: convert constants to uses of the_hash_algo
- log-tree: switch GIT_SHA1_HEXSZ to the_hash_algo->hexsz
- diff: switch GIT_SHA1_HEXSZ to use the_hash_algo
- builtin/merge-recursive: make hash independent
- builtin/merge: switch to use the_hash_algo
- builtin/fmt-merge-msg: make hash independent
- builtin/update-index: simplify parsing of cacheinfo
- builtin/update-index: convert to using the_hash_algo
- refs/files-backend: use the_hash_algo for writing refs
- commit: increase commit message buffer size
- sha1-name: use the_hash_algo when parsing object names
- strbuf: allocate space with GIT_MAX_HEXSZ
- commit: express tree entry constants in terms of the_hash_algo
- hex: switch to using the_hash_algo
- tree-walk: replace hard-coded constants with the_hash_algo
- cache: update object ID functions for the_hash_algo
Conversion from uchar[40] to struct object_id continues.
Expecting a reroll.
cf. <20180709232656.GA535220@genre.crustytoothpaste.net>
* bc/send-email-auto-cte (2018-07-09) 4 commits
- docs: correct RFC specifying email line length
- send-email: automatically determine transfer-encoding
- send-email: accept long lines with suitable transfer encoding
- send-email: add an auto option for transfer encoding
The content-transfer-encoding of the message "git send-email" sends
out by default was 8bit, which can cause trouble when there is an
overlong line to bust RFC 5322/2822 limit. A new option 'auto' to
automatically switch to quoted-printable when there is such a line
in the payload has been introduced and is made the default.
Will merge to 'next'.
* en/dirty-merge-fixes (2018-07-11) 9 commits
- merge: fix misleading pre-merge check documentation
- merge-recursive: enforce rule that index matches head before merging
- t6044: add more testcases with staged changes before a merge is invoked
- merge-recursive: fix assumption that head tree being merged is HEAD
- merge-recursive: make sure when we say we abort that we actually abort
- t6044: add a testcase for index matching head, when head doesn't match HEAD
- t6044: verify that merges expected to abort actually abort
- index_has_changes(): avoid assuming operating on the_index
- read-cache.c: move index_has_changes() from merge.c
The recursive merge strategy did not properly ensure there was no
change between HEAD and the index before performing its operation,
which has been corrected.
Will merge to 'next'.
* en/t6036-merge-recursive-tests (2018-07-11) 6 commits
- t6036: add a failed conflict detection case: regular files, different modes
- t6036: add a failed conflict detection case with conflicting types
- t6036: add a failed conflict detection case with submodule add/add
- t6036: add a failed conflict detection case with submodule modify/modify
- t6036: add a failed conflict detection case with symlink add/add
- t6036: add a failed conflict detection case with symlink modify/modify
Tests to cover various conflicting cases have been added for
merge-recursive.
Will merge to 'next'.
* en/t6036-recursive-corner-cases (2018-07-06) 1 commit
- t6036: add lots of detail for directory/file conflicts in recursive case
Tests to cover more D/F conflict cases have been added for
merge-recursive.
Will merge to 'next'.
* en/t6042-insane-merge-rename-testcases (2018-07-03) 3 commits
- t6042: add testcase covering long chains of rename conflicts
- t6042: add testcase covering rename/rename(2to1)/delete/delete conflict
- t6042: add testcase covering rename/add/delete conflict type
Various glitches in the heuristics of merge-recursive strategy have
been documented in new tests.
Will merge to 'next'.
I am not sure if there is a single "correct" answer everybody can
agree on for each of these "insane" cases, though.
* en/t7405-recursive-submodule-conflicts (2018-07-11) 3 commits
- t7405: verify 'merge --abort' works after submodule/path conflicts
- t7405: add a directory/submodule conflict
- t7405: add a file/submodule conflict
Tests to cover conflict cases that involve submodules have been
added for merge-recursive.
Will merge to 'next'.
* es/test-fixes (2018-07-03) 25 commits
- t9119: fix broken &&-chains
- t9000-t9999: fix broken &&-chains
- t7000-t7999: fix broken &&-chains
- t6000-t6999: fix broken &&-chains
- t5000-t5999: fix broken &&-chains
- t4000-t4999: fix broken &&-chains
- t3030: fix broken &&-chains
- t3000-t3999: fix broken &&-chains
- t2000-t2999: fix broken &&-chains
- t1000-t1999: fix broken &&-chains
- t0000-t0999: fix broken &&-chains
- t9814: simplify convoluted check that command correctly errors out
- t9001: fix broken "invoke hook" test
- t7810: use test_expect_code() instead of hand-rolled comparison
- t7400: fix broken "submodule add/reconfigure --force" test
- t7201: drop pointless "exit 0" at end of subshell
- t6036: fix broken "merge fails but has appropriate contents" tests
- t5505: modernize and simplify hard-to-digest test
- t5406: use write_script() instead of birthing shell script manually
- t5405: use test_must_fail() instead of checking exit code manually
- t/lib-submodule-update: fix "absorbing" test
- t: drop unnecessary terminating semicolon in subshell
- t: use sane_unset() rather than 'unset' with broken &&-chain
- t: use test_write_lines() instead of series of 'echo' commands
- t: use test_might_fail() instead of manipulating exit code manually
Test clean-up and corrections.
Will merge to 'next'.
* jk/empty-pick-fix (2018-07-11) 2 commits
- sequencer: don't say BUG on bogus input
- sequencer: handle empty-set cases consistently
Handling of an empty range by "git cherry-pick" was inconsistent
depending on how the range ended up to be empty, which has been
corrected.
Will merge to 'next'.
* jk/fetch-all-peeled-fix (2018-07-06) 1 commit
- t5500: prettify non-commit tag tests
Test modernization.
Will merge to 'next'.
* jk/for-each-ref-icase (2018-07-03) 3 commits
- ref-filter: avoid backend filtering with --ignore-case
- for-each-ref: consistently pass WM_IGNORECASE flag
- t6300: add a test for --ignore-case
The "--ignore-case" option of "git for-each-ref" (and its friends)
did not work correctly, which has been fixed.
Will merge to 'next'.
* jk/fsck-gitmodules-gently (2018-07-03) 5 commits
- fsck: silence stderr when parsing .gitmodules
- fsck: silence stderr when parsing .gitmodules
- config: add options parameter to git_config_from_mem
- config: add CONFIG_ERROR_SILENT handler
- config: turn die_on_error into caller-facing enum
What's the status of this one?
* js/range-diff (2018-07-09) 20 commits
- range-diff: make --dual-color the default mode
- range-diff: left-pad patch numbers
- completion: support `git range-diff`
- range-diff: add a man page
- range-diff --dual-color: work around bogus white-space warning
- range-diff: offer to dual-color the diffs
- diff: add an internal option to dual-color diffs of diffs
- color: add the meta color GIT_COLOR_REVERSE
- range-diff: use color for the commit pairs
- range-diff: add tests
- range-diff: do not show "function names" in hunk headers
- range-diff: adjust the output of the commit pairs
- range-diff: suppress the diff headers
- range-diff: indent the diffs just like tbdiff
- range-diff: right-trim commit messages
- range-diff: also show the diff between patches
- range-diff: improve the order of the shown commits
- range-diff: first rudimentary implementation
- Introduce `range-diff` to compare iterations of a topic branch
- linear-assignment: a function to solve least-cost assignment problems
"git tbdiff" that lets us compare individual patches in two
iterations of a topic has been rewritten and made into a built-in
command.
Supersedes js/branch-diff topic that added a similar command under
a different name.
* jt/commit-graph-per-object-store (2018-07-09) 6 commits
. commit-graph: add repo arg to graph readers
. commit-graph: store graph in struct object_store
. commit-graph: add free_commit_graph
. commit-graph: add missing forward declaration
. object-store: add missing include
. commit-graph: refactor preparing commit graph
(this branch uses ds/commit-graph-fsck.)
The singleton commit-graph in-core instance is made per in-core
repository instance.
Expecting a reroll, as it breaks 32-bit build.
cf. https://travis-ci.org/git/git/jobs/402422108
* jt/partial-clone-fsck-connectivity (2018-07-09) 2 commits
- clone: check connectivity even if clone is partial
- upload-pack: send refs' objects despite "filter"
(this branch uses bw/ref-in-want and jt/connectivity-check-after-unshallow.)
Partial clone support of "git clone" has been updated to correctly
validate the objects it receives from the other side. The server
side has been corrected to send objects that are directly
requested, even if they may match the filtering criteria (e.g. when
doing a "lazy blob" partial clone).
Will merge to 'next'.
* kg/gc-auto-windows-workaround (2018-07-09) 1 commit
- gc --auto: release pack files before auto packing
"git gc --auto" opens file descriptors for the packfiles before
spawning "git repack/prune", which would upset Windows that does
not want a process to work on a file that is open by another
process. The issue has been worked around.
Will merge to 'next'.
* kn/userdiff-php (2018-07-06) 2 commits
- userdiff: support new keywords in PHP hunk header
- t4018: add missing test cases for PHP
The userdiff pattern for .php has been updated.
Will merge to 'next'.
* lt/date-human (2018-07-09) 1 commit
- Add 'human' date format
* mh/fast-import-no-diff-delta-empty (2018-07-06) 1 commit
- fast-import: do not call diff_delta() with empty buffer
"git fast-import" has been updated to avoid attempting to create
delta against a zero-byte-long string, which is pointless.
Will merge to 'next'.
* ot/ref-filter-object-info (2018-07-09) 4 commits
. ref-filter: use oid_object_info() to get object
. ref-filter: merge get_obj and get_object
. ref-filter: add empty values to technical fields
. ref-filter: add info_source to valid_atom
Expecting a reroll, as it breaks compilation with uninitialized var.
cf. https://travis-ci.org/git/git/jobs/402422102
* pk/rebase-in-c (2018-07-09) 4 commits
- builtin/rebase: support running "git rebase <upstream>"
- sequencer: refactor the code to detach HEAD to checkout.c
- rebase: refactor common shell functions into their own file
- rebase: start implementing it as a builtin
Piecemeal rewrite of the "rebase" machinery in C.
Expecting a reroll, but it seems that this is getting quite close.
cf. <CAOZc8M8YmLwJOzG-1jyz8ft4W_tJMwNs6kSV8inX1q_zmDW8Sg@mail.gmail.com>
* tb/config-default (2018-07-06) 1 commit
- builtin/config: work around an unsized array forward declaration
Compilation fix.
Will merge to 'next'.
* bp/log-ref-write-fd-with-strbuf (2018-07-10) 1 commit
- convert log_ref_write_fd() to use strbuf
Code clean-up.
Will merge to 'next'.
* hs/push-cert-check-cleanup (2018-07-11) 2 commits
- gpg-interface: make parse_gpg_output static and remove from interface header
- builtin/receive-pack: use check_signature from gpg-interface
Code clean-up.
Will merge to 'next'.
* mk/merge-in-sparse-checkout (2018-07-11) 1 commit
- unpack-trees: do not fail reset because of unmerged skipped entry
"git reset --merge" (hence "git merge ---abort") and "git reset --hard"
had trouble working correctly in a sparsely checked out working
tree after a conflict, which has been corrected.
Will merge to 'next'.
--------------------------------------------------
[Stalled]
* pw/add-p-select (2018-03-16) 3 commits
- add -p: optimize line selection for short hunks
- add -p: allow line selection to be inverted
- add -p: select individual hunk lines
"git add -p" interactive interface learned to let users choose
individual added/removed lines to be used in the operation, instead
of accepting or rejecting a whole hunk.
Expecting a reroll to reignite the discussion.
cf. <9895c7b7-eac4-28c1-90c6-443acd1131b7@talktalk.net>
* jh/json-writer (2018-06-13) 1 commit
- json_writer: new routines to create JSON data
Preparatory code to later add json output for unspecified telemetry
data.
We do not add random code that does not have real users to our
codebase, so let's have it wait until such a real code materializes
before too long.
* hn/bisect-first-parent (2018-04-21) 1 commit
- bisect: create 'bisect_flags' parameter in find_bisection()
Preliminary code update to allow passing more flags down the
bisection codepath in the future.
We do not add random code that does not have real users to our
codebase, so let's have it wait until such a real code materializes
before too long.
* av/fsmonitor-updates (2018-01-04) 6 commits
- fsmonitor: use fsmonitor data in `git diff`
- fsmonitor: remove debugging lines from t/t7519-status-fsmonitor.sh
- fsmonitor: make output of test-dump-fsmonitor more concise
- fsmonitor: update helper tool, now that flags are filled later
- fsmonitor: stop inline'ing mark_fsmonitor_valid / _invalid
- dir.c: update comments to match argument name
Code clean-up on fsmonitor integration, plus optional utilization
of the fsmonitor data in diff-files.
Waiting for an update.
cf. <alpine.DEB.2.21.1.1801042335130.32@MININT-6BKU6QN.europe.corp.microsoft.com>
* pb/bisect-helper-2 (2018-06-13) 8 commits
- t6030: make various test to pass GETTEXT_POISON tests
- bisect--helper: `bisect_start` shell function partially in C
- bisect--helper: `get_terms` & `bisect_terms` shell function in C
- bisect--helper: `bisect_next_check` shell function in C
- bisect--helper: `check_and_set_terms` shell function in C
- wrapper: move is_empty_file() and rename it as is_empty_or_missing_file()
- bisect--helper: `bisect_write` shell function in C
- bisect--helper: `bisect_reset` shell function in C
Expecting a reroll.
cf. <0102015f5e5ee171-f30f4868-886f-47a1-a4e4-b4936afc545d-000000@eu-west-1.amazonses.com>
I just rebased the topic to a newer base as it did not build
standalone with the base I originally queued the topic on, but
otherwise there is no update to address any of the review comments
in the thread above---we are still waiting for a reroll.
* mk/http-backend-content-length (2018-06-11) 3 commits
- http-backend: respect CONTENT_LENGTH for receive-pack
- http-backend: respect CONTENT_LENGTH as specified by rfc3875
- http-backend: cleanup writing to child process
The http-backend (used for smart-http transport) used to slurp the
whole input until EOF, without paying attention to CONTENT_LENGTH
that is supplied in the environment and instead expecting the Web
server to close the input stream. This has been fixed.
* jk/drop-ancient-curl (2017-08-09) 5 commits
- http: #error on too-old curl
- curl: remove ifdef'd code never used with curl >=7.19.4
- http: drop support for curl < 7.19.4
- http: drop support for curl < 7.16.0
- http: drop support for curl < 7.11.1
Some code in http.c that has bitrot is being removed.
Expecting a reroll.
* mk/use-size-t-in-zlib (2017-08-10) 1 commit
. zlib.c: use size_t for size
The wrapper to call into zlib followed our long tradition to use
"unsigned long" for sizes of regions in memory, which have been
updated to use "size_t".
Needs resurrecting by making sure the fix is good and still applies
(or adjusted to today's codebase).
--------------------------------------------------
[Cooking]
* ao/config-from-gitmodules (2018-06-26) 6 commits
(merged to 'next' on 2018-07-11 at 5d88dc6fb7)
+ submodule-config: reuse config_from_gitmodules in repo_read_gitmodules
+ submodule-config: pass repository as argument to config_from_gitmodules
+ submodule-config: make 'config_from_gitmodules' private
+ submodule-config: add helper to get 'update-clone' config from .gitmodules
+ submodule-config: add helper function to get 'fetch' config from .gitmodules
+ config: move config_from_gitmodules to submodule-config.c
Tighten the API to make it harder to misuse in-tree .gitmodules
file, even though it shares the same syntax with configuration
files, to read random configuration items from it.
Will merge to 'master'.
* as/sequencer-customizable-comment-char (2018-06-28) 1 commit
- sequencer: use configured comment character
Honor core.commentchar when preparing the list of commits to replay
in "rebase -i".
Needs inter-contributor coordination.
cf. <e8973797-fc5f-2ca5-1881-5ee66fc8279b@living180.net>
* dj/runtime-prefix (2018-06-26) 1 commit
(merged to 'next' on 2018-07-11 at 27d99fef94)
+ Makefile: tweak sed invocation
POSIX portability fix in Makefile to fix a glitch introduced a few
releases ago.
Will merge to 'master'.
* ds/commit-graph (2018-06-28) 1 commit
(merged to 'next' on 2018-07-11 at d579f733ed)
+ commit-graph: fix documentation inconsistencies
Docfix.
Will merge to 'master'.
* en/rebase-i-microfixes (2018-06-27) 3 commits
(merged to 'next' on 2018-07-11 at d913ca0f77)
+ git-rebase--merge: modernize "git-$cmd" to "git $cmd"
+ Fix use of strategy options with interactive rebases
+ t3418: add testcase showing problems with rebase -i and strategy options
Will merge to 'master'.
* js/enhanced-version-info (2018-06-29) 1 commit
(merged to 'next' on 2018-07-11 at 815b2ea2bc)
+ Makefile: fix the "built from commit" code
Build fix.
Will merge to 'master'.
* js/rebase-recreate-merge (2018-06-27) 1 commit
(merged to 'next' on 2018-07-11 at eb8f33aaef)
+ rebase: fix documentation formatting
Docfix.
Will merge to 'master'.
* jt/connectivity-check-after-unshallow (2018-07-03) 1 commit
- fetch-pack: write shallow, then check connectivity
(this branch is used by jt/partial-clone-fsck-connectivity; uses bw/ref-in-want.)
"git fetch" failed to correctly validate the set of objects it
received when making a shallow history deeper, which has been
corrected.
Will merge to 'next'.
* jt/fetch-nego-tip (2018-07-03) 1 commit
- fetch-pack: support negotiation tip whitelist
(this branch uses jt/fetch-pack-negotiator.)
"git fetch" learned a new option "--negotiation-tip" to limit the
set of commits it tells the other end as "have", to reduce wasted
bandwidth and cycles, which would be helpful when the receiving
repository has a lot of refs that have little to do with the
history at the remote it is fetching from.
Will merge to 'next'.
* mb/filter-branch-optim (2018-06-26) 1 commit
(merged to 'next' on 2018-07-11 at e43a0136c2)
+ filter-branch: skip commits present on --state-branch
"git filter-branch" when used with the "--state-branch" option
still attempted to rewrite the commits whose filtered result is
known from the previous attempt (which is recorded on the state
branch); the command has been corrected not to waste cycles doing
so.
Will merge to 'master'.
* ms/core-icase-doc (2018-06-28) 1 commit
(merged to 'next' on 2018-07-11 at 8f0d71c32d)
+ Documentation: declare "core.ignoreCase" as internal variable
Clarify that setting core.ignoreCase to deviate from reality would
not turn a case-incapable filesystem into a case-capable one.
Will merge to 'master'.
* rj/submodule-fsck-skip (2018-07-03) 1 commit
(merged to 'next' on 2018-07-11 at 985f88cf7e)
+ fsck: check skiplist for object in fsck_blob()
"fsck.skipList" did not prevent a blob object listed there from
being inspected for is contents (e.g. we recently started to
inspect the contents of ".gitmodules" for certain malicious
patterns), which has been corrected.
Will merge to 'master'.
* tb/grep-only-matching (2018-07-09) 2 commits
- grep.c: teach 'git grep --only-matching'
- grep.c: extract show_line_header()
(this branch uses tb/grep-column.)
"git grep" learned the "--only-matching" option.
Will merge to 'next'.
* tz/exclude-doc-smallfixes (2018-06-27) 2 commits
(merged to 'next' on 2018-07-11 at 5134f1ca72)
+ dir.c: fix typos in core.excludesfile comment
+ gitignore.txt: clarify default core.excludesfile path
Doc updates.
Will merge to 'master'.
* ld/p423 (2018-06-19) 6 commits
(merged to 'next' on 2018-06-29 at af76acb664)
+ git-p4: python3: fix octal constants
+ git-p4: python3: use print() function
+ git-p4: python3: basestring workaround
+ git-p4: python3: remove backticks
+ git-p4: python3: replace dict.has_key(k) with "k in dict"
+ git-p4: python3: replace <> with !=
Code preparation to make "git p4" closer to be usable with Python 3.
Will merge to 'master'.
* pw/rebase-i-keep-reword-after-conflict (2018-06-19) 1 commit
(merged to 'next' on 2018-06-29 at 538337be74)
+ sequencer: do not squash 'reword' commits when we hit conflicts
Bugfix for "rebase -i" corner case regression.
Will merge to 'master'.
* xy/format-patch-prereq-patch-id-fix (2018-06-19) 1 commit
(merged to 'next' on 2018-06-29 at 0dffc46ce2)
+ format-patch: clear UNINTERESTING flag before prepare_bases
Recently added "--base" option to "git format-patch" command did
not correctly generate prereq patch ids.
Will merge to 'master'.
* bw/config-refer-to-gitsubmodules-doc (2018-06-21) 1 commit
(merged to 'next' on 2018-06-29 at da6f49d292)
+ docs: link to gitsubmodules
Docfix.
Will merge to 'master'.
* bw/ref-in-want (2018-06-28) 8 commits
- fetch-pack: implement ref-in-want
- fetch-pack: put shallow info in output parameter
- fetch: refactor to make function args narrower
- fetch: refactor fetch_refs into two functions
- fetch: refactor the population of peer ref OIDs
- upload-pack: test negotiation with changing repository
- upload-pack: implement ref-in-want
- test-pkt-line: add unpack-sideband subcommand
(this branch is used by jt/connectivity-check-after-unshallow and jt/partial-clone-fsck-connectivity.)
Protocol v2 has been updated to allow slightly out-of-sync set of
servers to work together to serve a single client, which would be
useful with load-balanced servers that talk smart HTTP transport.
Will merge to 'next'.
* en/rebase-consistency (2018-06-27) 9 commits
- git-rebase: make --allow-empty-message the default
- t3401: add directory rename testcases for rebase and am
- git-rebase.txt: document behavioral differences between modes
- directory-rename-detection.txt: technical docs on abilities and limitations
- git-rebase.txt: address confusion between --no-ff vs --force-rebase
- git-rebase: error out when incompatible options passed
- t3422: new testcases for checking when incompatible options passed
- git-rebase.sh: update help messages a bit
- git-rebase.txt: document incompatible options
"git rebase" behaved slightly differently depending on which one of
the three backends gets used; this has been documented and an
effort to make them more uniform has begun.
Will merge to 'next'.
* jt/remove-pack-bitmap-global (2018-06-21) 2 commits
(merged to 'next' on 2018-06-29 at 852857b04e)
+ pack-bitmap: add free function
+ pack-bitmap: remove bitmap_git global variable
The effort to move globals to per-repository in-core structure
continues.
Will merge to 'master'.
* sb/submodule-move-head-error-msg (2018-06-25) 1 commit
- submodule.c: report the submodule that an error occurs in
Will merge to 'next'.
* bw/protocol-v2 (2018-06-22) 1 commit
(merged to 'next' on 2018-06-29 at 78090cc343)
+ protocol-v2 doc: put HTTP headers after request
Doc fix.
Will merge to 'master'.
* jk/branch-l-1-repurpose (2018-06-22) 1 commit
- branch: make "-l" a synonym for "--list"
(this branch uses jk/branch-l-0-deprecation.)
Updated plan to repurpose the "-l" option to "git branch".
Will hold in 'pu' until jk/branch-l-0-deprecation progresses sufficiently.
* vs/typofixes (2018-06-22) 1 commit
(merged to 'next' on 2018-06-29 at 665c8db2f7)
+ Documentation: spelling and grammar fixes
Doc fix.
Will merge to 'master'.
* cc/remote-odb (2018-07-06) 10 commits
- SQUASH??? error: unused variable 'o' [-Werror=unused-variable]
- Documentation/config: add odb.<name>.promisorRemote
- t0410: test fetching from many promisor remotes
- Use odb.origin.partialclonefilter instead of core.partialclonefilter
- Use remote_odb_get_direct() and has_remote_odb()
- remote-odb: add remote_odb_reinit()
- remote-odb: implement remote_odb_get_many_direct()
- remote-odb: implement remote_odb_get_direct()
- Add initial remote odb support
- fetch-object: make functions return an error code
Needs a reroll.
* ds/multi-pack-index (2018-07-09) 24 commits
. midx: clear midx on repack
. packfile: skip loading index if in multi-pack-index
. midx: prevent duplicate packfile loads
. midx: use midx in approximate_object_count
. midx: use existing midx when writing new one
. midx: use midx in abbreviation calculations
. midx: read objects from multi-pack-index
. midx: prepare midxed_git struct
. config: create core.multiPackIndex setting
. midx: write object offsets
. midx: write object id fanout chunk
. midx: write object ids in a chunk
. midx: sort and deduplicate objects from packfiles
. midx: read pack names into array
. multi-pack-index: write pack names in chunk
. multi-pack-index: read packfile list
. packfile: generalize pack directory list
. multi-pack-index: expand test data
. multi-pack-index: load into memory
. midx: write header information to lockfile
. multi-pack-index: add 'write' verb
. multi-pack-index: add builtin
. multi-pack-index: add format details
. multi-pack-index: add design document
When there are too many packfiles in a repository (which is not
recommended), looking up an object in these would require
consulting many pack .idx files; a new mechanism to have a single
file that consolidates all of these .idx files is introduced.
Expecting a reroll to fix documentation build.
cf. https://travis-ci.org/git/git/jobs/402422110
* tb/grep-column (2018-06-22) 7 commits
(merged to 'next' on 2018-06-29 at 25dc70426e)
+ contrib/git-jump/git-jump: jump to exact location
+ grep.c: add configuration variables to show matched option
+ builtin/grep.c: add '--column' option to 'git-grep(1)'
+ grep.c: display column number of first match
+ grep.[ch]: extend grep_opt to allow showing matched column
+ grep.c: expose {,inverted} match column in match_line()
+ Documentation/config.txt: camel-case lineNumber for consistency
(this branch is used by tb/grep-only-matching.)
"git grep" learned the "--column" option that gives not just the
line number but the column number of the hit.
Will merge to 'master'.
* jt/fetch-pack-negotiator (2018-06-15) 7 commits
- fetch-pack: introduce negotiator API
- fetch-pack: move common check and marking together
- fetch-pack: make negotiation-related vars local
- fetch-pack: use ref adv. to prune "have" sent
- fetch-pack: directly end negotiation if ACK ready
- fetch-pack: clear marks before re-marking
- fetch-pack: split up everything_local()
(this branch is used by jt/fetch-nego-tip.)
Code restructuring and a small fix to transport protocol v2 during
fetching.
Will merge to 'next'.
* sb/submodule-core-worktree (2018-06-19) 3 commits
(merged to 'next' on 2018-06-28 at 96e1a8dbd1)
+ submodule deinit: unset core.worktree
+ submodule: ensure core.worktree is set after update
+ submodule: unset core.worktree if no working tree is present
Originally merged to 'next' on 2018-06-22
"git submodule" did not correctly adjust core.worktree setting that
indicates whether/where a submodule repository has its associated
working tree across various state transitions, which has been
corrected.
Will merge to 'master'.
* ds/ewah-cleanup (2018-06-21) 10 commits
(merged to 'next' on 2018-06-28 at 9cd7c0d54a)
+ ewah: delete unused 'rlwit_discharge_empty()'
+ ewah: drop ewah_serialize_native function
+ ewah: drop ewah_deserialize function
+ ewah_io: delete unused 'ewah_serialize()'
+ ewah_bitmap: delete unused 'ewah_or()'
+ ewah_bitmap: delete unused 'ewah_not()'
+ ewah_bitmap: delete unused 'ewah_and_not()'
+ ewah_bitmap: delete unused 'ewah_and()'
+ ewah/bitmap.c: delete unused 'bitmap_each_bit()'
+ ewah/bitmap.c: delete unused 'bitmap_clear()'
Originally merged to 'next' on 2018-06-22
Remove unused function definitions and declarations from ewah
bitmap subsystem.
Will merge to 'master'.
* is/parsing-line-range (2018-06-15) 2 commits
- log: prevent error if line range ends past end of file
- blame: prevent error if range ends past end of file
Parsing of -L[<N>][,[<M>]] parameters "git blame" and "git log"
take has been tweaked.
Will merge to 'next'.
* en/merge-recursive-cleanup (2018-06-12) 6 commits
(merged to 'next' on 2018-06-28 at 1a3646eb7d)
+ merge-recursive: add pointer about unduly complex looking code
+ merge-recursive: rename conflict_rename_*() family of functions
+ merge-recursive: clarify the rename_dir/RENAME_DIR meaning
+ merge-recursive: align labels with their respective code blocks
+ merge-recursive: fix numerous argument alignment issues
+ merge-recursive: fix miscellaneous grammar error in comment
Originally merged to 'next' on 2018-06-19
Code cleanup.
Will merge to 'master'.
* ab/checkout-default-remote (2018-06-11) 8 commits
- checkout & worktree: introduce checkout.defaultRemote
- checkout: add advice for ambiguous "checkout <branch>"
- builtin/checkout.c: use "ret" variable for return
- checkout: pass the "num_matches" up to callers
- checkout.c: change "unique" member to "num_matches"
- checkout.c: introduce an *_INIT macro
- checkout.h: wrap the arguments to unique_tracking_name()
- checkout tests: index should be clean after dwim checkout
"git checkout" and "git worktree add" learned to honor
checkout.defaultRemote when auto-vivifying a local branch out of a
remote tracking branch in a repository with multiple remotes that
have tracking branches that share the same names.
Will merge to 'next'.
* ds/commit-graph-fsck (2018-06-27) 22 commits
- commit-graph: update design document
- gc: automatically write commit-graph files
- commit-graph: add '--reachable' option
- commit-graph: use string-list API for input
- fsck: verify commit-graph
- commit-graph: verify contents match checksum
- commit-graph: test for corrupted octopus edge
- commit-graph: verify commit date
- commit-graph: verify generation number
- commit-graph: verify parent list
- commit-graph: verify root tree OIDs
- commit-graph: verify objects exist
- commit-graph: verify corrupt OID fanout and lookup
- commit-graph: verify required chunks are present
- commit-graph: verify catches corrupt signature
- commit-graph: add 'verify' subcommand
- commit-graph: load a root tree from specific graph
- commit: force commit to parse from object database
- commit-graph: parse commit from chosen graph
- commit-graph: fix GRAPH_MIN_SIZE
- commit-graph: UNLEAK before die()
- t5318-commit-graph.sh: use core.commitGraph
(this branch is used by jt/commit-graph-per-object-store.)
"git fsck" learns to make sure the optional commit-graph file is in
a sane state.
Will merge to 'next'.
* ma/wrapped-info (2018-05-28) 2 commits
- usage: prefix all lines in `vreportf()`, not just the first
- usage: extract `prefix_suffix_lines()` from `advise()`
An attempt to help making multi-line messages fed to warning(),
error(), and friends more easily translatable.
Will discard and wait for a cleaned-up rewrite.
cf. <20180529213957.GF7964@sigill.intra.peff.net>
* jm/cache-entry-from-mem-pool (2018-07-03) 8 commits
- block alloc: add validations around cache_entry lifecyle
- block alloc: allocate cache entries from mem_pool
- mem-pool: fill out functionality
- mem-pool: add life cycle management functions
- mem-pool: only search head block for available space
- block alloc: add lifecycle APIs for cache_entry structs
- read-cache: teach make_cache_entry to take object_id
- read-cache: teach refresh_cache_entry to take istate
For a large tree, the index needs to hold many cache entries
allocated on heap. These cache entries are now allocated out of a
dedicated memory pool to amortize malloc(3) overhead.
Will merge to 'next'.
This makes each cache-entry larger by either 4 or 8 bytes, which is
a bit sad, though.
* sb/object-store-grafts (2018-05-18) 19 commits
(merged to 'next' on 2018-06-28 at 02f70d6302)
+ commit: allow lookup_commit_graft to handle arbitrary repositories
+ commit: allow prepare_commit_graft to handle arbitrary repositories
+ shallow: migrate shallow information into the object parser
+ path.c: migrate global git_path_* to take a repository argument
+ cache: convert get_graft_file to handle arbitrary repositories
+ commit: convert read_graft_file to handle arbitrary repositories
+ commit: convert register_commit_graft to handle arbitrary repositories
+ commit: convert commit_graft_pos() to handle arbitrary repositories
+ shallow: add repository argument to is_repository_shallow
+ shallow: add repository argument to check_shallow_file_for_update
+ shallow: add repository argument to register_shallow
+ shallow: add repository argument to set_alternate_shallow_file
+ commit: add repository argument to lookup_commit_graft
+ commit: add repository argument to prepare_commit_graft
+ commit: add repository argument to read_graft_file
+ commit: add repository argument to register_commit_graft
+ commit: add repository argument to commit_graft_pos
+ object: move grafts to object parser
+ object-store: move object access functions to object-store.h
(this branch is used by sb/object-store-lookup.)
Originally merged to 'next' on 2018-06-22
The conversion to pass "the_repository" and then "a_repository"
throughout the object access API continues.
Will merge to 'master'.
* sb/diff-color-move-more (2018-06-29) 9 commits
- diff.c: add white space mode to move detection that allows indent changes
- diff.c: factor advance_or_nullify out of mark_color_as_moved
- diff.c: decouple white space treatment from move detection algorithm
- diff.c: add a blocks mode for moved code detection
- diff.c: adjust hash function signature to match hashmap expectation
- diff.c: do not pass diff options as keydata to hashmap
- t4015: avoid git as a pipe input
- xdiff/xdiffi.c: remove unneeded function declarations
- xdiff/xdiff.h: remove unused flags
"git diff --color-moved" feature has further been tweaked.
Will merge to 'next'.
* jk/branch-l-0-deprecation (2018-06-22) 3 commits
(merged to 'next' on 2018-06-29 at fac676dfb9)
+ branch: deprecate "-l" option
+ t: switch "branch -l" to "branch --create-reflog"
+ t3200: unset core.logallrefupdates when testing reflog creation
(this branch is used by jk/branch-l-1-repurpose.)
The "-l" option in "git branch -l" is an unfortunate short-hand for
"--create-reflog", but many users, both old and new, somehow expect
it to be something else, perhaps "--list". This step warns when "-l"
is used as a short-hand for "--create-reflog" and warns about the
future repurposing of the it when it is used.
Will merge to 'master'.
--------------------------------------------------
[Discarded]
* ag/rebase-i-append-todo-help (2018-06-14) 2 commits
. rebase--interactive: rewrite append_todo_help() in C
. Merge branch 'ag/rebase-p' into ag/rebase-i-append-todo-help
(this branch is used by ag/rebase-i-rewrite-todo.)
Stepwise rewriting of the machinery of "rebase -i" into C continues.
Now part of ag/rebase-i-in-c
* ag/rebase-i-rewrite-todo (2018-06-15) 3 commits
. rebase--interactive: rewrite the edit-todo functionality in C
. editor: add a function to launch the sequence editor
. Merge branch 'bc/t3430-fixup' into ag/rebase-i-rewrite-todo
(this branch uses ag/rebase-i-append-todo-help.)
Stepwise rewriting of the machinery of "rebase -i" into C continues.
Now part of ag/rebase-i-in-c
* ab/fetch-tags-noclobber (2018-05-16) 9 commits
- fixup! push tests: assert re-pushing annotated tags
- fetch: stop clobbering existing tags without --force
- fetch tests: add a test clobbering tag behavior
- fetch tests: correct a comment "remove it" -> "remove them"
- push doc: correct lies about how push refspecs work
- push tests: assert re-pushing annotated tags
- push tests: add more testing for forced tag pushing
- push tests: fix logic error in "push" test assertion
- push tests: remove redundant 'git push' invocation
Discarded per request.
cf. <87po09cnir.fsf@evledraar.gmail.com>
* nd/use-the-index-compat-less (2018-06-25) 13 commits
. wt-status.c: stop using index compat macros
. sha1-name.c: stop using index compat macros
. sequencer.c: stop using index compat macros
. revision.c: stop using index compat macros
. rerere.c: stop using index compat macros
. merge.c: stop using index compat macros
. merge-recursive.c: stop using index compat macros
. entry.c: stop using index compat macros
. diff.c: stop using index compat macros
. diff-lib.c: stop using index compat macros
. check-racy.c: stop using index compat macros
. blame.c: stop using index compat macros
. apply.c: stop using index compat macros
Retracted to be replaced with a more vertical approach where the
lower-level helper functions are taught to be capable of working on
an istate instance that is not the_index first, and then upwards to
support the application layer that wants to work on an arbitrary
istate instance, as the goal is not a mechanical replacement of
foo_cache(...) to foo_index(&the_index, ...).
* js/branch-diff (2018-05-16) 19 commits
. fixup! Add a function to solve least-cost assignment problems
. completion: support branch-diff
. branch-diff: add a man page
. branch-diff --dual-color: work around bogus white-space warning
. branch-diff: offer to dual-color the diffs
. diff: add an internal option to dual-color diffs of diffs
. color: provide inverted colors, too
. branch-diff: use color for the commit pairs
. branch-diff: add tests
. branch-diff: do not show "function names" in hunk headers
. branch-diff: adjust the output of the commit pairs
. branch-diff: suppress the diff headers
. branch-diff: indent the diffs just like tbdiff
. branch-diff: right-trim commit messages
. branch-diff: also show the diff between patches
. branch-diff: improve the order of the shown commits
. branch-diff: first rudimentary implementation
. Add a new builtin: branch-diff
. Add a function to solve least-cost assignment problems
"git tbdiff" that lets us compare individual patches in two
iterations of a topic has been rewritten and made into a built-in
command.
^ permalink raw reply [relevance 3%]
* [PATCH 2/2] read-cache: fix directory/file conflict handling in read_index_unmerged()
@ 2018-07-11 5:18 2% ` Elijah Newren
1 sibling, 0 replies; 200+ results
From: Elijah Newren @ 2018-07-11 5:18 UTC (permalink / raw)
To: git; +Cc: gitster, Elijah Newren
read_index_unmerged() has two intended purposes:
* return 1 if there are any unmerged entries, 0 otherwise
* drops any higher-stage entries down to stage #0
There are several callers of read_index_unmerged() that check the return
value to see if it is non-zero, all of which then die() if that condition
is met. For these callers, dropping higher-stage entries down to stage #0
is a waste of resources, and returning immediately on first unmerged entry
would be better. But it's probably only a very minor difference and isn't
the focus of this series.
The remaining callers ignore the return value and call this function for
the side effect of dropping higher-stage entries down to stage #0. As
mentioned in commit e11d7b596970 ("'reset --merge': fix unmerged case",
2009-12-31),
The _only_ reason we want to keep a previously unmerged entry in the
index at stage #0 is so that we don't forget the fact that we have
corresponding file in the work tree in order to be able to remove it
when the tree we are resetting to does not have the path.
In fact, prior to commit d1a43f2aa4bf ("reset --hard/read-tree --reset -u:
remove unmerged new paths", 2008-10-15), read_index_unmerged() did just
remove unmerged entries from the cache immediately but that had the
unwanted effect of leaving around new untracked files in the tree from
aborted merges.
So, that's the intended purpose of this function. The problem is that
when directory/files conflicts are present, trying to add the file to the
index at stage 0 fails (because there is still a directory in the way),
and the function returns early with a -1 return code to signify the error.
As noted above, none of the callers who want the drop-to-stage-0 behavior
check the return status, though, so this means all remaining unmerged
entries remain in the index and the callers proceed assuming otherwise.
Users then see errors of the form:
error: 'DIR-OR-FILE' appears as both a file and as a directory
error: DIR-OR-FILE: cannot drop to stage #0
and potentially also messages about other unmerged entries which came
lexicographically later than whatever pathname was both a file and a
directory. Google finds a few hits searching for those messages,
suggesting there were probably a couple people who hit this besides me.
Luckily, calling `git reset --hard` multiple times would workaround
this bug.
Since the whole purpose here is to just put the entry *temporarily* into
the index so that any associated file in the working copy can be removed,
we can just skip the DFCHECK and allow both the file and directory to
appear in the index. The temporary simultaneous appearance of the
directory and file entries in the index will be removed by the callers
before they attempt to write the index anywhere.
Signed-off-by: Elijah Newren <newren@gmail.com>
---
read-cache.c | 13 ++++++++-----
t/t1015-read-index-unmerged.sh | 8 ++++----
t/t6020-merge-df.sh | 3 ---
t/t6042-merge-rename-corner-cases.sh | 1 -
4 files changed, 12 insertions(+), 13 deletions(-)
diff --git a/read-cache.c b/read-cache.c
index 372588260..666d295a5 100644
--- a/read-cache.c
+++ b/read-cache.c
@@ -2632,10 +2632,13 @@ int write_locked_index(struct index_state *istate, struct lock_file *lock,
/*
* Read the index file that is potentially unmerged into given
- * index_state, dropping any unmerged entries. Returns true if
- * the index is unmerged. Callers who want to refuse to work
- * from an unmerged state can call this and check its return value,
- * instead of calling read_cache().
+ * index_state, dropping any unmerged entries to stage #0 (potentially
+ * resulting in a path appearing as both a file and a directory in the
+ * index; the caller is responsible to clear out the extra entries
+ * before writing the index to a tree). Returns true if the index is
+ * unmerged. Callers who want to refuse to work from an unmerged
+ * state can call this and check its return value, instead of calling
+ * read_cache().
*/
int read_index_unmerged(struct index_state *istate)
{
@@ -2658,7 +2661,7 @@ int read_index_unmerged(struct index_state *istate)
new_ce->ce_flags = create_ce_flags(0) | CE_CONFLICTED;
new_ce->ce_namelen = len;
new_ce->ce_mode = ce->ce_mode;
- if (add_index_entry(istate, new_ce, 0))
+ if (add_index_entry(istate, new_ce, ADD_CACHE_SKIP_DFCHECK))
return error("%s: cannot drop to stage #0",
new_ce->name);
}
diff --git a/t/t1015-read-index-unmerged.sh b/t/t1015-read-index-unmerged.sh
index bbd64587c..5034ed931 100755
--- a/t/t1015-read-index-unmerged.sh
+++ b/t/t1015-read-index-unmerged.sh
@@ -30,7 +30,7 @@ test_expect_success 'setup modify/delete + directory/file conflict' '
)
'
-test_expect_failure 'read-tree --reset cleans unmerged entries' '
+test_expect_success 'read-tree --reset cleans unmerged entries' '
test_when_finished "git -C df_plus_modify_delete clean -f" &&
test_when_finished "git -C df_plus_modify_delete reset --hard" &&
(
@@ -45,7 +45,7 @@ test_expect_failure 'read-tree --reset cleans unmerged entries' '
)
'
-test_expect_failure 'One reset --hard cleans unmerged entries' '
+test_expect_success 'One reset --hard cleans unmerged entries' '
test_when_finished "git -C df_plus_modify_delete clean -f" &&
test_when_finished "git -C df_plus_modify_delete reset --hard" &&
(
@@ -87,7 +87,7 @@ test_expect_success 'setup directory/file conflict + simple edit/edit' '
)
'
-test_expect_failure 'git merge --abort succeeds despite D/F conflict' '
+test_expect_success 'git merge --abort succeeds despite D/F conflict' '
test_when_finished "git -C df_plus_edit_edit clean -f" &&
test_when_finished "git -C df_plus_edit_edit reset --hard" &&
(
@@ -103,7 +103,7 @@ test_expect_failure 'git merge --abort succeeds despite D/F conflict' '
)
'
-test_expect_failure 'git am --skip succeeds despite D/F conflict' '
+test_expect_success 'git am --skip succeeds despite D/F conflict' '
test_when_finished "git -C df_plus_edit_edit clean -f" &&
test_when_finished "git -C df_plus_edit_edit reset --hard" &&
(
diff --git a/t/t6020-merge-df.sh b/t/t6020-merge-df.sh
index 2af1beec5..46b506b3b 100755
--- a/t/t6020-merge-df.sh
+++ b/t/t6020-merge-df.sh
@@ -89,9 +89,6 @@ test_expect_success 'modify/delete + directory/file conflict' '
'
test_expect_success 'modify/delete + directory/file conflict; other way' '
- # Yes, we really need the double reset since "letters" appears as
- # both a file and a directory.
- git reset --hard &&
git reset --hard &&
git clean -f &&
git checkout modify^0 &&
diff --git a/t/t6042-merge-rename-corner-cases.sh b/t/t6042-merge-rename-corner-cases.sh
index 1cbd946fc..583e68997 100755
--- a/t/t6042-merge-rename-corner-cases.sh
+++ b/t/t6042-merge-rename-corner-cases.sh
@@ -323,7 +323,6 @@ test_expect_success 'rename/directory conflict + content merge conflict' '
(
cd rename-directory-1 &&
- git reset --hard &&
git reset --hard &&
git clean -fdqx &&
--
2.18.0.138.g557c5d94c.dirty
^ permalink raw reply related [relevance 2%]
* [PATCH v2 9/9] merge: fix misleading pre-merge check documentation
2018-07-01 1:24 3% ` [PATCH v2 0/9] Fix merge issues with index not matching HEAD Elijah Newren
@ 2018-07-01 1:25 1% ` Elijah Newren
0 siblings, 0 replies; 200+ results
From: Elijah Newren @ 2018-07-01 1:25 UTC (permalink / raw)
To: git; +Cc: gitster, pclouds, Elijah Newren
builtin/merge.c contains this important requirement for merge strategies:
...the index must be in sync with the head commit. The strategies are
responsible to ensure this.
However, Documentation/git-merge.txt says:
...[merge will] abort if there are any changes registered in the index
relative to the `HEAD` commit. (One exception is when the changed
index entries are in the state that would result from the merge
already.)
Interestingly, prior to commit c0be8aa06b85 ("Documentation/git-merge.txt:
Partial rewrite of How Merge Works", 2008-07-19),
Documentation/git-merge.txt said much more:
...the index file must match the tree of `HEAD` commit...
[NOTE]
This is a bit of a lie. In certain special cases [explained
in detail]...
Otherwise, merge will refuse to do any harm to your repository
(that is...your working tree...and index are left intact).
So, this suggests that the exceptions existed because there were special
cases where it would case no harm, and potentially be slightly more
convenient for the user. While the current text in git-merge.txt does
list a condition under which it would be safe to proceed despite the index
not matching HEAD, it does not match what is actually implemented, in
three different ways:
* The exception is written to describe what unpack-trees allows. Not
all merge strategies allow such an exception, though, making this
description misleading. 'ours' and 'octopus' merges have strictly
enforced index==HEAD for a while, and the commit previous to this
one made 'recursive' do so as well.
* If someone did a three-way content merge on a specific file using
versions from the relevant commits and staged it prior to running
merge, then that path would technically satisfy the exception listed
in git-merge.txt. unpack-trees.c would still error out on the path,
though, because it defers the three-way content merge logic to other
parts of the code (resolve, octopus, or recursive) and has no way of
checking whether the index entry from before the merge will match
the end result of the merge.
* The exception as implemented in unpack-trees actually only checked
that the index matched the MERGE_HEAD version of the file and that
HEAD matched the merge base. Assuming no renames, that would indeed
provide cases where the index matches the end result we'd get from a
merge. But renames means unpack-trees is checking that it instead
matches something other than what the final result will be, risking
either erroring out when we shouldn't need to, or not erroring out
when we should and overwriting the user's staged changes.
In addition to the wording behind this exception being misleading, it is
also somewhat surprising to see how many times the code for the special
cases were wrong or the check to make sure the index matched head was
forgotten altogether:
* Prior to commit ee6566e8d70d ("[PATCH] Rewrite read-tree", 2005-09-05),
there were many cases where an unclean index entry was allowed (look for
merged_entry_allow_dirty()); it appears that in those cases, the merge
would have simply overwritten staged changes with the result of the
merge. Thus, the merge result would have been correct, but the user's
uncommitted changes could be thrown away without warning.
* Prior to commit 160252f81626 ("git-merge-ours: make sure our index
matches HEAD", 2005-11-03), the 'ours' merge strategy did not check
whether the index matched HEAD. If it didn't, the resulting merge
would include all the staged changes, and thus wasn't really an 'ours'
strategy.
* Prior to commit 3ec62ad9ffba ("merge-octopus: abort if index does not
match HEAD", 2016-04-09), 'octopus' merges did not check whether the
index matched HEAD, also resulting in any staged changes from before
the commit silently being folded into the resulting merge. commit
a6ee883b8eb5 ("t6044: new merge testcases for when index doesn't match
HEAD", 2016-04-09) was also added at the same time to try to test to
make sure all strategies did the necessary checking for the requirement
that the index match HEAD. Sadly, it didn't catch all the cases, as
evidenced by the remainder of this list...
* Prior to commit 65170c07d466 ("merge-recursive: avoid incorporating
uncommitted changes in a merge", 2017-12-21), merge-recursive simply
relied on unpack_trees() to do the necessary check, but in one special
case it avoided calling unpack_trees() entirely and accidentally ended
up silently including any staged changes from before the merge in the
resulting merge commit.
* The commit immediately before this one in this series noted that the
exceptions were written in a way that assumed no renames, making it
unsafe for merge-recursive to use. merge-recursive was modified to
use its own check to enforce that index==HEAD.
This history makes it very tempting to go into builtin/merge.c and replace
the comment that strategies must enforce that index matches HEAD with code
that just enforces it. At this point, that would only affect the
'resolve' strategy; all other strategies have each been modified to
manually enforce it. (However, note that index==HEAD is not strictly
enforced for fast-forward merges, as those are not considered a merge
strategy and they trigger in builtin/merge.c before the section in the
code where the relevant comment is found.)
But, even if we don't take the step of just fixing these problems by
enforcing index==HEAD for all strategies, we at least need to update this
misleading documentation in git-merge.txt. For now, just modify the claim
in Documentation/git-merge.txt to fix the error. The precise details
around combination of merges strategies and special cases probably is not
relevant to most users, so simply state that exceptions may exist but are
narrow and vary depending upon which merge strategy is in use.
Signed-off-by: Elijah Newren <newren@gmail.com>
---
Documentation/git-merge.txt | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/Documentation/git-merge.txt b/Documentation/git-merge.txt
index 6a5c00e2c..b050c8c2e 100644
--- a/Documentation/git-merge.txt
+++ b/Documentation/git-merge.txt
@@ -122,9 +122,9 @@ merge' may need to update.
To avoid recording unrelated changes in the merge commit,
'git pull' and 'git merge' will also abort if there are any changes
-registered in the index relative to the `HEAD` commit. (One
-exception is when the changed index entries are in the state that
-would result from the merge already.)
+registered in the index relative to the `HEAD` commit. (Special
+narrow exceptions to this rule may exist depending on which merge
+strategy is in use, but generally, the index must match HEAD.)
If all named commits are already ancestors of `HEAD`, 'git merge'
will exit early with the message "Already up to date."
--
2.18.0.137.g2a11d05a6.dirty
^ permalink raw reply related [relevance 1%]
* [PATCH v2 0/9] Fix merge issues with index not matching HEAD
2018-06-03 6:58 3% [RFC PATCH 0/7] merge requirement: index matches head Elijah Newren
2018-06-03 6:58 1% ` [RFC PATCH 7/7] merge: fix misleading pre-merge check documentation Elijah Newren
@ 2018-07-01 1:24 3% ` Elijah Newren
2018-07-01 1:25 1% ` [PATCH v2 9/9] merge: fix misleading pre-merge check documentation Elijah Newren
1 sibling, 1 reply; 200+ results
From: Elijah Newren @ 2018-07-01 1:24 UTC (permalink / raw)
To: git; +Cc: gitster, pclouds, Elijah Newren
This series exists to fix problems for merges when the index doesn't
match HEAD. We've had an almost comical number of these types of
problems in our history, as thoroughly documented in the commit
message for the final patch.
v1 can be found here:
https://public-inbox.org/git/20180603065810.23841-1-newren@gmail.com/
Changes since v1 (full branch-diff below):
* Minor wording tweaks to a few commit messages (fixing typos,
rewrapping, etc.)
* Move index_has_changes() to read-cache.c, and (partially) lift the
assumption that we're always operating on the_index -- as
suggested by Junio. A full lift of the assumption would conflict
with and duplicate work Duy is doing, so there is a simple BUG()
check in place for now.
* Add two new patches to the _beginning_ of the series, to implement
the last point. Reason: Since this series will probably conflict
slightly with Duy's not-yet-submitted work to remove assumption of
the_index throughout the codebase, I figured this would make it
the clearest and easiest for him to fix up small conflicts.
(Alternatively, if folks would rather that my series wait for his
to go through, it should make it much easier for me to rebase my
series on top of his work by having these placeholders at the
beginning.)
Questions I'm particularly interested in reviewers addressing:
* Do my two patches at the beginning make sense? In particular, is
the BUG() a reasonable way to limit conflicts with Duy for now,
while he works on more thoroughly stamping out assumed the_index
usage?
* Does the series flow well? I was curious if I should reorder the
series when I submitted v1, but no one commented on that question.
* The second to last patch points out that current git incorrectly
implements what would be a safe exception to the index matching
HEAD before a merge rule. Would it be more desireable to
correctly implement the safe exception (even though it would be
somewhat difficult), rather than just disallow the exception for
merge-recursive as I did in that patch?
* Given the large number of problems we've had in this area -- as
documented in the final commit message -- should we be more
defensive and disallow all merge strategies from having even
so-called safe exceptions? We could do this in a single place,
which would have prevented all the current and most if not all
historical problems in this area, by just enforcing that the index
match HEAD in builtin/merge.c. (See the second to last paragraph
of the last commit message for more details.)
Elijah Newren (9):
read-cache.c: move index_has_changes() from merge.c
index_has_changes(): avoid assuming operating on the_index
t6044: verify that merges expected to abort actually abort
t6044: add a testcase for index matching head, when head doesn't match
HEAD
merge-recursive: make sure when we say we abort that we actually abort
merge-recursive: fix assumption that head tree being merged is HEAD
t6044: add more testcases with staged changes before a merge is
invoked
merge-recursive: enforce rule that index matches head before merging
merge: fix misleading pre-merge check documentation
Documentation/git-merge.txt | 6 +-
builtin/am.c | 7 +-
cache.h | 16 +--
merge-recursive.c | 14 +--
merge.c | 31 ------
read-cache.c | 40 ++++++++
t/t6044-merge-unrelated-index-changes.sh | 67 +++++++++++--
t/t7504-commit-msg-hook.sh | 4 +-
t/t7611-merge-abort.sh | 118 -----------------------
9 files changed, 124 insertions(+), 179 deletions(-)
-: --------- > 1: ff2501ac4 read-cache.c: move index_has_changes() from merge.c
-: --------- > 2: 5813ca722 index_has_changes(): avoid assuming operating on the_index
1: 730e5e483 = 3: ca11503bd t6044: verify that merges expected to abort actually abort
2: 36f7cc0a3 = 4: 386390899 t6044: add a testcase for index matching head, when head doesn't match HEAD
3: 70899afa3 ! 5: 8a900d2ee merge-recursive: make sure when we say we abort that we actually abort
@@ -19,7 +19,7 @@
@@
struct strbuf sb = STRBUF_INIT;
- if (!o->call_depth && index_has_changes(&sb)) {
+ if (!o->call_depth && index_has_changes(&the_index, &sb)) {
- err(o, _("Dirty index: cannot merge (dirty: %s)"),
+ err(o, _("Your local changes to the following files would be overwritten by merge:\n %s"),
sb.buf);
4: eab2f36a4 ! 6: 2564b29e9 merge-recursive: fix assumption that head tree being merged is HEAD
@@ -6,10 +6,9 @@
base, head, and remote. Since the user is allowed to specify head, we can
not necesarily assume that head == HEAD.
- We modify index_has_changes() to take an extra argument specifying the
- tree to compare the index to. If NULL, it will compare to HEAD. We then
- use this from merge-recursive to make sure we compare to the
- user-specified head.
+ Modify index_has_changes() to take an extra argument specifying the tree
+ to compare against. If NULL, it will compare to HEAD. We then use this
+ from merge-recursive to make sure we compare to the user-specified head.
Signed-off-by: Elijah Newren <newren@gmail.com>
@@ -20,8 +19,8 @@
refresh_and_write_cache();
-- if (index_has_changes(&sb)) {
-+ if (index_has_changes(&sb, NULL)) {
+- if (index_has_changes(&the_index, &sb)) {
++ if (index_has_changes(&the_index, NULL, &sb)) {
write_state_bool(state, "dirtyindex", 1);
die(_("Dirty index: cannot apply patches (dirty: %s)"), sb.buf);
}
@@ -29,8 +28,9 @@
* Applying the patch to an earlier tree and merging
* the result may have produced the same tree as ours.
*/
-- if (!apply_status && !index_has_changes(NULL)) {
-+ if (!apply_status && !index_has_changes(NULL, NULL)) {
+- if (!apply_status && !index_has_changes(&the_index, NULL)) {
++ if (!apply_status &&
++ !index_has_changes(&the_index, NULL, NULL)) {
say(state, stdout, _("No changes -- Patch already applied."));
goto next;
}
@@ -38,8 +38,8 @@
say(state, stdout, _("Applying: %.*s"), linelen(state->msg), state->msg);
-- if (!index_has_changes(NULL)) {
-+ if (!index_has_changes(NULL, NULL)) {
+- if (!index_has_changes(&the_index, NULL)) {
++ if (!index_has_changes(&the_index, NULL, NULL)) {
printf_ln(_("No changes - did you forget to use 'git add'?\n"
"If there is nothing left to stage, chances are that something else\n"
"already introduced the same changes; you might want to skip this patch."));
@@ -48,20 +48,32 @@
--- a/cache.h
+++ b/cache.h
@@
- extern void move_index_extensions(struct index_state *dst, struct index_state *src);
+ /* Forward structure decls */
+ struct pathspec;
+ struct child_process;
++struct tree;
+
+ /*
+ * Copy the sha1 and stat state of a cache entry from one to
+@@
extern int unmerged_index(const struct index_state *);
--/**
-- * Returns 1 if the index differs from HEAD, 0 otherwise. When on an unborn
-- * branch, returns 1 if there are entries in the index, 0 otherwise. If an
-- * strbuf is provided, the space-separated list of files that differ will be
-- * appended to it.
-- */
--extern int index_has_changes(struct strbuf *sb);
--
+ /**
+- * Returns 1 if istate differs from HEAD, 0 otherwise. When on an unborn
+- * branch, returns 1 if there are entries in istate, 0 otherwise. If an
+- * strbuf is provided, the space-separated list of files that differ will
+- * be appended to it.
++ * Returns 1 if istate differs from tree, 0 otherwise. If tree is NULL,
++ * compares istate to HEAD. If tree is NULL and on an unborn branch,
++ * returns 1 if there are entries in istate, 0 otherwise. If an strbuf is
++ * provided, the space-separated list of files that differ will be appended
++ * to it.
+ */
+ extern int index_has_changes(const struct index_state *istate,
++ struct tree *tree,
+ struct strbuf *sb);
+
extern int verify_path(const char *path, unsigned mode);
- extern int strcmp_offset(const char *s1, const char *s2, size_t *first_change);
- extern int index_dir_exists(struct index_state *istate, const char *name, int namelen);
diff --git a/merge-recursive.c b/merge-recursive.c
--- a/merge-recursive.c
@@ -70,26 +82,31 @@
if (oid_eq(&common->object.oid, &merge->object.oid)) {
struct strbuf sb = STRBUF_INIT;
-- if (!o->call_depth && index_has_changes(&sb)) {
-+ if (!o->call_depth && index_has_changes(&sb, head)) {
+- if (!o->call_depth && index_has_changes(&the_index, &sb)) {
++ if (!o->call_depth && index_has_changes(&the_index, head, &sb)) {
err(o, _("Your local changes to the following files would be overwritten by merge:\n %s"),
sb.buf);
return -1;
-diff --git a/merge.c b/merge.c
---- a/merge.c
-+++ b/merge.c
+diff --git a/read-cache.c b/read-cache.c
+--- a/read-cache.c
++++ b/read-cache.c
@@
- return oid_to_hex(commit ? &commit->object.oid : the_hash_algo->empty_tree);
+ return 0;
}
--int index_has_changes(struct strbuf *sb)
-+int index_has_changes(struct strbuf *sb, struct tree *tree)
+-int index_has_changes(const struct index_state *istate, struct strbuf *sb)
++int index_has_changes(const struct index_state *istate,
++ struct tree *tree,
++ struct strbuf *sb)
{
- struct object_id head;
+ struct object_id cmp;
int i;
+ if (istate != &the_index) {
+ BUG("index_has_changes cannot yet accept istate != &the_index; do_diff_cache needs updating first.");
+ }
- if (!get_oid_tree("HEAD", &head)) {
+ if (tree)
+ cmp = tree->object.oid;
@@ -118,20 +135,3 @@
git reset --hard &&
git checkout C^0 &&
-
-diff --git a/tree.h b/tree.h
---- a/tree.h
-+++ b/tree.h
-@@
- extern int read_tree(struct tree *tree, int stage, struct pathspec *pathspec,
- struct index_state *istate);
-
-+/**
-+ * Returns 1 if the index differs from tree, 0 otherwise. If tree is NULL,
-+ * compares to HEAD. If tree is NULL and on an unborn branch, returns 1 if
-+ * there are entries in the index, 0 otherwise. If an strbuf is provided,
-+ * the space-separated list of files that differ will be appended to it.
-+ */
-+extern int index_has_changes(struct strbuf *sb, struct tree *tree);
-+
- #endif /* TREE_H */
5: 4aa0684c0 ! 7: 88a8e44a2 t6044: add more testcases with staged changes before a merge is invoked
@@ -5,8 +5,9 @@
According to Documentation/git-merge.txt,
...[merge will] abort if there are any changes registered in the index
- relative to the `HEAD` commit. (One exception is when the changed index
- entries are in the state that would result from the merge already.)
+ relative to the `HEAD` commit. (One exception is when the changed
+ index entries are in the state that would result from the merge
+ already.)
Add some tests showing that this exception, while it does accurately state
what would be a safe condition under which we could allow the merge to
6: 905f2683f ! 8: c0049b788 merge-recursive: enforce rule that index matches head before merging
@@ -48,16 +48,16 @@
commit, just like the 'ours' and 'octopus' strategies do.
Some testcase fixups were in order:
- t6044: We no longer expect stray staged changes to sometimes result
- in the merge continuing. Also, fixes a case where a merge
- didn't abort but should have.
- t7504: had a few tests that had stray staged changes that were not
- actually part of the test under consideration
t7611: had many tests designed to show that `git merge --abort` could
not always restore the index and working tree to the state they
were in before the merge started. The tests that were associated
with having changes in the index before the merge started are no
longer applicable, so they have been removed.
+ t7504: had a few tests that had stray staged changes that were not
+ actually part of the test under consideration
+ t6044: We no longer expect stray staged changes to sometimes result
+ in the merge continuing. Also, fix a case where a merge
+ didn't abort but should have.
Signed-off-by: Elijah Newren <newren@gmail.com>
@@ -70,7 +70,7 @@
int code, clean;
+ struct strbuf sb = STRBUF_INIT;
+
-+ if (!o->call_depth && index_has_changes(&sb, head)) {
++ if (!o->call_depth && index_has_changes(&the_index, head, &sb)) {
+ err(o, _("Your local changes to the following files would be overwritten by merge:\n %s"),
+ sb.buf);
+ return -1;
@@ -84,7 +84,7 @@
if (oid_eq(&common->object.oid, &merge->object.oid)) {
- struct strbuf sb = STRBUF_INIT;
-
-- if (!o->call_depth && index_has_changes(&sb, head)) {
+- if (!o->call_depth && index_has_changes(&the_index, head, &sb)) {
- err(o, _("Your local changes to the following files would be overwritten by merge:\n %s"),
- sb.buf);
- return -1;
7: 69f6fe8b1 ! 9: 557c5d94c merge: fix misleading pre-merge check documentation
@@ -20,7 +20,7 @@
...the index file must match the tree of `HEAD` commit...
[NOTE]
- This is a bit of a lite. In certain special cases [explained
+ This is a bit of a lie. In certain special cases [explained
in detail]...
Otherwise, merge will refuse to do any harm to your repository
(that is...your working tree...and index are left intact).
--
2.18.0.137.g2a11d05a6.dirty
^ permalink raw reply [relevance 3%]
* Re: [PATCH v3 00/32] object-store: lookup_commit
2018-06-29 18:03 2% ` Junio C Hamano
@ 2018-06-29 18:34 0% ` Stefan Beller
0 siblings, 0 replies; 200+ results
From: Stefan Beller @ 2018-06-29 18:34 UTC (permalink / raw)
To: Junio C Hamano; +Cc: git
On Fri, Jun 29, 2018 at 11:03 AM Junio C Hamano <gitster@pobox.com> wrote:
>
> Junio C Hamano <gitster@pobox.com> writes:
>
> > One technique these (not just this) recent efforts seem to be
> > forgetting is to introduce "new" names that take a_repo and then
> > make the existing one a thin wrapper that calls the new one with
> > &the_repo as the argument.
So you'd rather want to see it less invasive done similar to
NO_THE_INDEX_COMPATIBILITY_MACROS ? Someone (jrnieder?)
called that a failed experiment, as now we need to carry that baggage
for quite some time and never cleaned up the started migration;
only recently Duy started to kill off the_index, which would finish
that migration?
> FWIW, here is how I am resolving semantic conflicts that I found so
> far while merging this topic to 'pu', which is stored in the
> merge-fix/ mechanism so that I can reuse it while rebuilding 'pu'.
>
> -- >8 --
> Subject: [PATCH] merge-fix/sb/object-store-lookup
>
> ---
> builtin/bisect--helper.c | 2 +-
> builtin/branch-diff.c | 2 +-
> negotiator/default.c | 3 ++-
These look as if we can just use the_repository
(as you did below).
> commit-graph.c | 4 ++--
That is what I want to tackle next, and apparently you already did
by using the repository *r in there.
Thanks,
Stefan
^ permalink raw reply [relevance 0%]
* Re: [PATCH v3 00/32] object-store: lookup_commit
@ 2018-06-29 18:03 2% ` Junio C Hamano
2018-06-29 18:34 0% ` Stefan Beller
0 siblings, 1 reply; 200+ results
From: Junio C Hamano @ 2018-06-29 18:03 UTC (permalink / raw)
To: Stefan Beller; +Cc: git
Junio C Hamano <gitster@pobox.com> writes:
> One technique these (not just this) recent efforts seem to be
> forgetting is to introduce "new" names that take a_repo and then
> make the existing one a thin wrapper that calls the new one with
> &the_repo as the argument.
FWIW, here is how I am resolving semantic conflicts that I found so
far while merging this topic to 'pu', which is stored in the
merge-fix/ mechanism so that I can reuse it while rebuilding 'pu'.
-- >8 --
Subject: [PATCH] merge-fix/sb/object-store-lookup
---
builtin/bisect--helper.c | 2 +-
builtin/branch-diff.c | 2 +-
commit-graph.c | 4 ++--
negotiator/default.c | 3 ++-
4 files changed, 6 insertions(+), 5 deletions(-)
diff --git a/builtin/bisect--helper.c b/builtin/bisect--helper.c
index fc02f889e6..b27f645744 100644
--- a/builtin/bisect--helper.c
+++ b/builtin/bisect--helper.c
@@ -231,7 +231,7 @@ static int bisect_write(const char *state, const char *rev,
goto fail;
}
- commit = lookup_commit_reference(&oid);
+ commit = lookup_commit_reference(the_repository, &oid);
log_commit(fp, "%s", state, commit);
if (!nolog)
diff --git a/builtin/branch-diff.c b/builtin/branch-diff.c
index 8a16352e3a..b8604e3fec 100644
--- a/builtin/branch-diff.c
+++ b/builtin/branch-diff.c
@@ -329,7 +329,7 @@ static void output_pair_header(struct diff_options *diffopt, struct strbuf *buf,
strbuf_addf(buf, " %d: %s", j + 1,
find_unique_abbrev(&b_util->oid, DEFAULT_ABBREV));
- commit = lookup_commit_reference(oid);
+ commit = lookup_commit_reference(the_repository, oid);
if (commit) {
const char *commit_buffer = get_commit_buffer(commit, NULL);
const char *subject;
diff --git a/commit-graph.c b/commit-graph.c
index e4dee03679..41a0133ff7 100644
--- a/commit-graph.c
+++ b/commit-graph.c
@@ -924,7 +924,7 @@ int verify_commit_graph(struct repository *r, struct commit_graph *g)
cur_fanout_pos++;
}
- graph_commit = lookup_commit(&cur_oid);
+ graph_commit = lookup_commit(r, &cur_oid);
if (!parse_commit_in_graph_one(g, graph_commit))
graph_report("failed to parse %s from commit-graph",
oid_to_hex(&cur_oid));
@@ -950,7 +950,7 @@ int verify_commit_graph(struct repository *r, struct commit_graph *g)
hashcpy(cur_oid.hash, g->chunk_oid_lookup + g->hash_len * i);
- graph_commit = lookup_commit(&cur_oid);
+ graph_commit = lookup_commit(r, &cur_oid);
odb_commit = (struct commit *)create_object(r, cur_oid.hash, alloc_commit_node(r));
if (parse_commit_internal(odb_commit, 0, 0)) {
graph_report("failed to parse %s from object database",
diff --git a/negotiator/default.c b/negotiator/default.c
index 382fc77722..d8c92281bb 100644
--- a/negotiator/default.c
+++ b/negotiator/default.c
@@ -38,7 +38,8 @@ static void rev_list_push(struct negotiation_state *ns,
static int clear_marks(const char *refname, const struct object_id *oid,
int flag, void *cb_data)
{
- struct object *o = deref_tag(parse_object(oid), refname, 0);
+ struct object *o = deref_tag(the_repository,
+ parse_object(the_repository, oid), refname, 0);
if (o && o->type == OBJ_COMMIT)
clear_commit_marks((struct commit *)o,
--
2.18.0-129-ge3331758f1
^ permalink raw reply related [relevance 2%]
* [ANNOUNCE] Git v2.18.0
@ 2018-06-21 19:27 3% Junio C Hamano
0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2018-06-21 19:27 UTC (permalink / raw)
To: git; +Cc: Linux Kernel, git-packagers
The latest feature release Git v2.18.0 is now available at the
usual places. It is comprised of 903 non-merge commits since
v2.17.0, contributed by 80 people, 24 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.18.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.17.0 are as follows.
Welcome to the Git development community!
Bill Ritcher, Birger Skogeng Pedersen, Casey Fitzpatrick,
Dan Jacques, Drew DeVault, Eckhard S. Maaß, Erik E Brady,
Florian Gamböck, Harald Nordgren, Jeremy Linton, Karthikeyan
Singaravelan, Leif Middelschulte, Loganaden Velvindron, Luis
Marsano, Meng-Sung Wu, Paul-Sebastian Ungureanu, Pedro Alvarez
Piedehierro, Pratik Karki, Romain Merland, Ryan Dammrose,
Takuto Ikuta, Tao Qingyun, Wink Saville, and Yuki Kokubun.
Returning contributors who helped this release are as follows.
Thanks for your continued support.
Ævar Arnfjörð Bjarmason, Alexander Shopov, Anders Kaseorg,
Andreas Heiduk, Andre Hinrichs, Antonio Ospite, Beat Bolli,
Ben Peart, Brandon Williams, brian m. carlson, Changwoo Ryu,
Christian Couder, Christian Hesse, Christopher Diaz Riveros,
Clemens Buchacher, David Turner, Derrick Stolee, Elijah Newren,
Eric Sunshine, Jameson Miller, Jean-Noël Avila, Jeff King,
Jiang Xin, Johannes Schindelin, Johannes Sixt, Jonathan Nieder,
Jonathan Tan, Jordi Mas, Junio C Hamano, Kaartic Sivaraam,
Kyle Meyer, Lars Schneider, Lucas Werkmeister, Luke Diamand,
Martin Ågren, Michal Nazarewicz, Michele Locati, Nguyễn Thái
Ngọc Duy, Olga Telezhnaya, Orgad Shaneh, Peter Krefting, Philip
Oakley, Phillip Wood, Ralf Thielow, Ramsay Jones, René Scharfe,
Robert P. J. Day, Sergey Organov, Stefan Agner, Stefan Beller,
SZEDER Gábor, Taylor Blau, Thomas Gummerer, Todd Zullinger,
Torsten Bögershausen, and Trần Ngọc Quân.
----------------------------------------------------------------
Git 2.18 Release Notes
======================
Updates since v2.17
-------------------
UI, Workflows & Features
* Rename detection logic that is used in "merge" and "cherry-pick" has
learned to guess when all of x/a, x/b and x/c have moved to z/a,
z/b and z/c, it is likely that x/d added in the meantime would also
want to move to z/d by taking the hint that the entire directory
'x' moved to 'z'. A bug causing dirty files involved in a rename
to be overwritten during merge has also been fixed as part of this
work. Incidentally, this also avoids updating a file in the
working tree after a (non-trivial) merge whose result matches what
our side originally had.
* "git filter-branch" learned to use a different exit code to allow
the callers to tell the case where there was no new commits to
rewrite from other error cases.
* When built with more recent cURL, GIT_SSL_VERSION can now specify
"tlsv1.3" as its value.
* "git gui" learned that "~/.ssh/id_ecdsa.pub" and
"~/.ssh/id_ed25519.pub" are also possible SSH key files.
(merge 2e2f0288ef bb/git-gui-ssh-key-files later to maint).
* "git gui" performs commit upon CTRL/CMD+ENTER but the
CTRL/CMD+KP_ENTER (i.e. enter key on the numpad) did not have the
same key binding. It now does.
(merge 28a1d94a06 bp/git-gui-bind-kp-enter later to maint).
* "git gui" has been taught to work with old versions of tk (like
8.5.7) that do not support "ttk::style theme use" as a way to query
the current theme.
(merge 4891961105 cb/git-gui-ttk-style later to maint).
* "git rebase" has learned to honor "--signoff" option when using
backends other than "am" (but not "--preserve-merges").
* "git branch --list" during an interrupted "rebase -i" now lets
users distinguish the case where a detached HEAD is being rebased
and a normal branch is being rebased.
* "git mergetools" learned talking to guiffy.
* The scripts in contrib/emacs/ have outlived their usefulness and
have been replaced with a stub that errors out and tells the user
there are replacements.
* The new "working-tree-encoding" attribute can ask Git to convert the
contents to the specified encoding when checking out to the working
tree (and the other way around when checking in).
* The "git config" command uses separate options e.g. "--int",
"--bool", etc. to specify what type the caller wants the value to
be interpreted as. A new "--type=<typename>" option has been
introduced, which would make it cleaner to define new types.
* "git config --get" learned the "--default" option, to help the
calling script. Building on top of the above changes, the
"git config" learns "--type=color" type. Taken together, you can
do things like "git config --get foo.color --default blue" and get
the ANSI color sequence for the color given to foo.color variable,
or "blue" if the variable does not exist.
* "git ls-remote" learned an option to allow sorting its output based
on the refnames being shown.
* The command line completion (in contrib/) has been taught that "git
stash save" has been deprecated ("git stash push" is the preferred
spelling in the new world) and does not offer it as a possible
completion candidate when "git stash push" can be.
* "git gc --prune=nonsense" spent long time repacking and then
silently failed when underlying "git prune --expire=nonsense"
failed to parse its command line. This has been corrected.
* Error messages from "git push" can be painted for more visibility.
* "git http-fetch" (deprecated) had an optional and experimental
"feature" to fetch only commits and/or trees, which nobody used.
This has been removed.
* The functionality of "$GIT_DIR/info/grafts" has been superseded by
the "refs/replace/" mechanism for some time now, but the internal
code had support for it in many places, which has been cleaned up
in order to drop support of the "grafts" mechanism.
* "git worktree add" learned to check out an existing branch.
* "git --no-pager cmd" did not have short-and-sweet single letter
option. Now it does as "-P".
(merge 7213c28818 js/no-pager-shorthand later to maint).
* "git rebase" learned "--rebase-merges" to transplant the whole
topology of commit graph elsewhere.
* "git status" learned to pay attention to UI related diff
configuration variables such as diff.renames.
* The command line completion mechanism (in contrib/) learned to load
custom completion file for "git $command" where $command is a
custom "git-$command" that the end user has on the $PATH when using
newer version of bash-completion.
* "git send-email" can sometimes offer confirmation dialog "Send this
email?" with choices 'Yes', 'No', 'Quit', and 'All'. A new action
'Edit' has been added to this dialog's choice.
* With merge.renames configuration set to false, the recursive merge
strategy can be told not to spend cycles trying to find renamed
paths and merge them accordingly.
* "git status" learned to honor a new status.renames configuration to
skip rename detection, which could be useful for those who want to
do so without disabling the default rename detection done by the
"git diff" command.
* Command line completion (in contrib/) learned to complete pathnames
for various commands better.
* "git blame" learns to unhighlight uninteresting metadata from the
originating commit on lines that are the same as the previous one,
and also paint lines in different colors depending on the age of
the commit.
* Transfer protocol v2 learned to support the partial clone.
* When a short hexadecimal string is used to name an object but there
are multiple objects that share the string as the prefix of their
names, the code lists these ambiguous candidates in a help message.
These object names are now sorted according to their types for
easier eyeballing.
* "git fetch $there $refspec" that talks over protocol v2 can take
advantage of server-side ref filtering; the code has been extended
so that this mechanism triggers also when fetching with configured
refspec.
* Our HTTP client code used to advertise that we accept gzip encoding
from the other side; instead, just let cURL library to advertise
and negotiate the best one.
* "git p4" learned to "unshelve" shelved commit from P4.
(merge 123f631761 ld/p4-unshelve later to maint).
Performance, Internal Implementation, Development Support etc.
* A "git fetch" from a repository with insane number of refs into a
repository that is already up-to-date still wasted too many cycles
making many lstat(2) calls to see if these objects at the tips
exist as loose objects locally. These lstat(2) calls are optimized
away by enumerating all loose objects beforehand.
It is unknown if the new strategy negatively affects existing use
cases, fetching into a repository with many loose objects from a
repository with small number of refs.
* Git can be built to use either v1 or v2 of the PCRE library, and so
far, the build-time configuration USE_LIBPCRE=YesPlease instructed
the build procedure to use v1, but now it means v2. USE_LIBPCRE1
and USE_LIBPCRE2 can be used to explicitly choose which version to
use, as before.
* The build procedure learned to optionally use symbolic links
(instead of hardlinks and copies) to install "git-foo" for built-in
commands, whose binaries are all identical.
* Conversion from uchar[20] to struct object_id continues.
* The way "git worktree prune" worked internally has been simplified,
by assuming how "git worktree move" moves an existing worktree to a
different place.
* Code clean-up for the "repository" abstraction.
(merge 00a3da2a13 nd/remove-ignore-env-field later to maint).
* Code to find the length to uniquely abbreviate object names based
on packfile content, which is a relatively recent addtion, has been
optimized to use the same fan-out table.
* The mechanism to use parse-options API to automate the command line
completion continues to get extended and polished.
* Copies of old scripted Porcelain commands in contrib/examples/ have
been removed.
* Some tests that rely on the exact hardcoded values of object names
have been updated in preparation for hash function migration.
* Perf-test update.
* Test helper update.
* The effort continues to refactor the internal global data structure
to make it possible to open multiple repositories, work with and
then close them,
* Small test-helper programs have been consolidated into a single
binary.
* API clean-up around ref-filter code.
* Shell completion (in contrib) that gives list of paths have been
optimized somewhat.
* The index file is updated to record the fsmonitor section after a
full scan was made, to avoid wasting the effort that has already
spent.
* Performance measuring framework in t/perf learned to help bisecting
performance regressions.
* Some multi-word source filenames are being renamed to separate
words with dashes instead of underscores.
* An reusable "memory pool" implementation has been extracted from
fast-import.c, which in turn has become the first user of the
mem-pool API.
* A build-time option has been added to allow Git to be told to refer
to its associated files relative to the main binary, in the same
way that has been possible on Windows for quite some time, for
Linux, BSDs and Darwin.
* Precompute and store information necessary for ancestry traversal
in a separate file to optimize graph walking.
* The effort to pass the repository in-core structure throughout the
API continues. This round deals with the code that implements the
refs/replace/ mechanism.
* The build procedure "make DEVELOPER=YesPlease" learned to enable a
bit more warning options depending on the compiler used to help
developers more. There also is "make DEVOPTS=tokens" knob
available now, for those who want to help fixing warnings we
usually ignore, for example.
* A new version of the transport protocol is being worked on.
* The code to interface to GPG has been restructured somewhat to make
it cleaner to integrate with other types of signature systems later.
* The code has been taught to use the duplicated information stored
in the commit-graph file to learn the tree object name for a commit
to avoid opening and parsing the commit object when it makes sense
to do so.
* "git gc" in a large repository takes a lot of time as it considers
to repack all objects into one pack by default. The command has
been taught to pretend as if the largest existing packfile is
marked with ".keep" so that it is left untouched while objects in
other packs and loose ones are repacked.
* The transport protocol v2 is getting updated further.
* The codepath around object-info API has been taught to take the
repository object (which in turn tells the API which object store
the objects are to be located).
* "git pack-objects" needs to allocate tons of "struct object_entry"
while doing its work, and shrinking its size helps the performance
quite a bit.
* The implementation of "git rebase -i --root" has been updated to use
the sequencer machinery more.
* Developer support update, by using BUG() macro instead of die() to
mark codepaths that should not happen more clearly.
* Developer support. Use newer GCC on one of the builds done at
TravisCI.org to get more warnings and errors diagnosed.
* Conversion from uchar[20] to struct object_id continues.
* By code restructuring of submodule merge in merge-recursive,
informational messages from the codepath are now given using the
same mechanism as other output, and honor the merge.verbosity
configuration. The code also learned to give a few new messages
when a submodule three-way merge resolves cleanly when one side
records a descendant of the commit chosen by the other side.
* Avoid unchecked snprintf() to make future code auditing easier.
(merge ac4896f007 jk/snprintf-truncation later to maint).
* Many tests hardcode the raw object names, which would change once
we migrate away from SHA-1. While some of them must test against
exact object names, most of them do not have to use hardcoded
constants in the test. The latter kind of tests have been updated
to test the moral equivalent of the original without hardcoding the
actual object names.
* The list of commands with their various attributes were spread
across a few places in the build procedure, but it now is getting a
bit more consolidated to allow more automation.
* Quite a many tests assumed that newly created refs are made as
loose refs using the files backend, which have been updated to use
proper plumbing like rev-parse and update-ref, to avoid breakage
once we start using different ref backends.
Also contains various documentation updates and code clean-ups.
Fixes since v2.17
-----------------
* "git shortlog cruft" aborted with a BUG message when run outside a
Git repository. The command has been taught to complain about
extra and unwanted arguments on its command line instead in such a
case.
(merge 4aa0161e83 ma/shortlog-revparse later to maint).
* "git stash push -u -- <pathspec>" gave an unnecessary and confusing
error message when there was no tracked files that match the
<pathspec>, which has been fixed.
(merge 353278687e tg/stash-untracked-with-pathspec-fix later to maint).
* "git tag --contains no-such-commit" gave a full list of options
after giving an error message.
(merge 3bb0923f06 ps/contains-id-error-message later to maint).
* "diff-highlight" filter (in contrib/) learned to understand "git log
--graph" output better.
(merge 4551fbba14 jk/diff-highlight-graph-fix later to maint).
* when refs that do not point at committish are given, "git
filter-branch" gave a misleading error messages. This has been
corrected.
(merge f78ab355e7 yk/filter-branch-non-committish-refs later to maint).
* "git submodule status" misbehaved on a submodule that has been
removed from the working tree.
(merge 74b6bda32f rs/status-with-removed-submodule later to maint).
* When credential helper exits very quickly without reading its
input, it used to cause Git to die with SIGPIPE, which has been
fixed.
(merge a0d51e8d0e eb/cred-helper-ignore-sigpipe later to maint).
* "git rebase --keep-empty" still removed an empty commit if the
other side contained an empty commit (due to the "does an
equivalent patch exist already?" check), which has been corrected.
(merge 3d946165e1 pw/rebase-keep-empty-fixes later to maint).
* Some codepaths, including the refs API, get and keep relative
paths, that go out of sync when the process does chdir(2). The
chdir-notify API is introduced to let these codepaths adjust these
cached paths to the new current directory.
(merge fb9c2d2703 jk/relative-directory-fix later to maint).
* "cd sub/dir && git commit ../path" ought to record the changes to
the file "sub/path", but this regressed long time ago.
(merge 86238e07ef bw/commit-partial-from-subdirectory-fix later to maint).
* Recent introduction of "--log-destination" option to "git daemon"
did not work well when the daemon was run under "--inetd" mode.
(merge e67d906d73 lw/daemon-log-destination later to maint).
* Small fix to the autoconf build procedure.
(merge 249482daf0 es/fread-reads-dir-autoconf-fix later to maint).
* Fix an unexploitable (because the oversized contents are not under
attacker's control) buffer overflow.
(merge d8579accfa bp/fsmonitor-bufsize-fix later to maint).
* Recent simplification of build procedure forgot a bit of tweak to
the build procedure of contrib/mw-to-git/
(merge d8698987f3 ab/simplify-perl-makefile later to maint).
* Moving a submodule that itself has submodule in it with "git mv"
forgot to make necessary adjustment to the nested sub-submodules;
now the codepath learned to recurse into the submodules.
* "git config --unset a.b", when "a.b" is the last variable in an
otherwise empty section "a", left an empty section "a" behind, and
worse yet, a subsequent "git config a.c value" did not reuse that
empty shell and instead created a new one. These have been
(partially) corrected.
(merge c71d8bb38a js/empty-config-section-fix later to maint).
* "git worktree remove" learned that "-f" is a shorthand for
"--force" option, just like for "git worktree add".
(merge d228eea514 sb/worktree-remove-opt-force later to maint).
* The completion script (in contrib/) learned to clear cached list of
command line options upon dot-sourcing it again in a more efficient
way.
(merge 94408dc71c sg/completion-clear-cached later to maint).
* "git svn" had a minor thinko/typo which has been fixed.
(merge 51db271587 ab/git-svn-get-record-typofix later to maint).
* During a "rebase -i" session, the code could give older timestamp
to commits created by later "pick" than an earlier "reword", which
has been corrected.
(merge 12f7babd6b js/ident-date-fix later to maint).
* "git submodule status" did not check the symbolic revision name it
computed for the submodule HEAD is not the NULL, and threw it at
printf routines, which has been corrected.
(merge 0b5e2ea7cf nd/submodule-status-fix later to maint).
* When fed input that already has In-Reply-To: and/or References:
headers and told to add the same information, "git send-email"
added these headers separately, instead of appending to an existing
one, which is a violation of the RFC. This has been corrected.
(merge 256be1d3f0 sa/send-email-dedup-some-headers later to maint).
* "git fast-export" had a regression in v2.15.0 era where it skipped
some merge commits in certain cases, which has been corrected.
(merge be011bbe00 ma/fast-export-skip-merge-fix later to maint).
* The code did not propagate the terminal width to subprocesses via
COLUMNS environment variable, which it now does. This caused
trouble to "git column" helper subprocess when "git tag --column=row"
tried to list the existing tags on a display with non-default width.
(merge b5d5a567fb nd/term-columns later to maint).
* We learned that our source files with ".pl" and ".py" extensions
are Perl and Python files respectively and changes to them are
better viewed as such with appropriate diff drivers.
(merge 7818b619e2 ab/perl-python-attrs later to maint).
* "git rebase -i" sometimes left intermediate "# This is a
combination of N commits" message meant for the human consumption
inside an editor in the final result in certain corner cases, which
has been fixed.
(merge 15ef69314d js/rebase-i-clean-msg-after-fixup-continue later to maint).
* A test to see if the filesystem normalizes UTF-8 filename has been
updated to check what we need to know in a more direct way, i.e. a
path created in NFC form can be accessed with NFD form (or vice
versa) to cope with APFS as well as HFS.
(merge 742ae10e35 tb/test-apfs-utf8-normalization later to maint).
* "git format-patch --cover --attach" created a broken MIME multipart
message for the cover letter, which has been fixed by keeping the
cover letter as plain text file.
(merge 50cd54ef4e bc/format-patch-cover-no-attach later to maint).
* The split-index feature had a long-standing and dormant bug in
certain use of the in-core merge machinery, which has been fixed.
(merge 7db118303a en/unpack-trees-split-index-fix later to maint).
* Asciidoctor gives a reasonable imitation for AsciiDoc, but does not
render illustration in a literal block correctly when indented with
HT by default. The problem is fixed by forcing 8-space tabs.
(merge 379805051d bc/asciidoctor-tab-width later to maint).
* Code clean-up to adjust to a more recent lockfile API convention that
allows lockfile instances kept on the stack.
(merge 0fa5a2ed8d ma/lockfile-cleanup later to maint).
* the_repository->index is not a allocated piece of memory but
repo_clear() indiscriminately attempted to free(3) it, which has
been corrected.
(merge 74373b5f10 nd/repo-clear-keep-the-index later to maint).
* Code clean-up to avoid non-standard-conformant pointer arithmetic.
(merge c112084af9 rs/no-null-ptr-arith-in-fast-export later to maint).
* Code clean-up to turn history traversal more robust in a
semi-corrupt repository.
(merge 8702b30fd7 jk/unavailable-can-be-missing later to maint).
* "git update-ref A B" is supposed to ensure that ref A does not yet
exist when B is a NULL OID, but this check was not done correctly
for pseudo-refs outside refs/ hierarchy, e.g. MERGE_HEAD.
* "git submodule update" and "git submodule add" supported the
"--reference" option to borrow objects from a neighbouring local
repository like "git clone" does, but lacked the more recent
invention "--dissociate". Also "git submodule add" has been taught
to take the "--progress" option.
(merge a0ef29341a cf/submodule-progress-dissociate later to maint).
* Update credential-netrc helper (in contrib/) to allow customizing
the GPG used to decrypt the encrypted .netrc file.
(merge 786ef50a23 lm/credential-netrc later to maint).
* "git submodule update" attempts two different kinds of "git fetch"
against the upstream repository to grab a commit bound at the
submodule's path, but it incorrectly gave up if the first kind
(i.e. a normal fetch) failed, making the second "last resort" one
(i.e. fetching an exact commit object by object name) ineffective.
This has been corrected.
(merge e30d833671 sb/submodule-update-try-harder later to maint).
* Error behaviour of "git grep" when it cannot read the index was
inconsistent with other commands that uses the index, which has
been corrected to error out early.
(merge b2aa84c789 sb/grep-die-on-unreadable-index later to maint).
* We used to call regfree() after regcomp() failed in some codepaths,
which have been corrected.
(merge 17154b1576 ma/regex-no-regfree-after-comp-fail later to maint).
* The import-tars script (in contrib/) has been taught to handle
tarballs with overly long paths that use PAX extended headers.
(merge 12ecea46e3 pa/import-tars-long-names later to maint).
* "git rev-parse Y..." etc. misbehaved when given endpoints were
not committishes.
(merge 0ed556d38f en/rev-parse-invalid-range later to maint).
* "git pull --recurse-submodules --rebase", when the submodule
repository's history did not have anything common between ours and
the upstream's, failed to execute. We need to fetch from them to
continue even in such a case.
(merge 4d36f88be7 jt/submodule-pull-recurse-rebase later to maint).
* "git remote update" can take both a single remote nickname and a
nickname for remote groups, but only one of them was documented.
(merge a97447a42a nd/remote-update-doc later to maint).
* "index-pack --strict" has been taught to make sure that it runs the
final object integrity checks after making the freshly indexed
packfile available to itself.
(merge 3737746120 jk/index-pack-maint later to maint).
* Make zlib inflate codepath more robust against versions of zlib
that clobber unused portion of outbuf.
(merge b611396e97 jl/zlib-restore-nul-termination later to maint).
* Fix old merge glitch in Documentation during v2.13-rc0 era.
(merge 28cb06020b mw/doc-merge-enumfix later to maint).
* The code to read compressed bitmap was not careful to avoid reading
past the end of the file, which has been corrected.
(merge 1140bf01ec jk/ewah-bounds-check later to maint).
* "make NO_ICONV=NoThanks" did not override NEEDS_LIBICONV
(i.e. linkage of -lintl, -liconv, etc. that are platform-specific
tweaks), which has been corrected.
(merge fdb1fbbc7d es/make-no-iconv later to maint).
* Other minor doc, test and build updates and code cleanups.
(merge 248f66ed8e nd/trace-with-env later to maint).
(merge 14ced5562c ys/bisect-object-id-missing-conversion-fix later to maint).
(merge 5988eb631a ab/doc-hash-brokenness later to maint).
(merge a4d4e32a70 pk/test-avoid-pipe-hiding-exit-status later to maint).
(merge 05e293c1ac jk/flockfile-stdio later to maint).
(merge e9184b0789 jk/t5561-missing-curl later to maint).
(merge b1801b85a3 nd/worktree-move later to maint).
(merge bbd374dd20 ak/bisect-doc-typofix later to maint).
(merge 4855f06fb3 mn/send-email-credential-doc later to maint).
(merge 8523b1e355 en/doc-typoes later to maint).
(merge 43b44ccfe7 js/t5404-path-fix later to maint).
(merge decf711fc1 ps/test-chmtime-get later to maint).
(merge 22d11a6e8e es/worktree-docs later to maint).
(merge 92a5dbbc22 tg/use-git-contacts later to maint).
(merge adc887221f tq/t1510 later to maint).
(merge bed21a8ad6 sg/doc-gc-quote-mismatch-fix later to maint).
(merge 73364e4f10 tz/doc-git-urls-reference later to maint).
(merge cd1e606bad bc/mailmap-self later to maint).
(merge f7997e3682 ao/config-api-doc later to maint).
(merge ee930754d8 jk/apply-p-doc later to maint).
(merge 011b648646 nd/pack-format-doc later to maint).
(merge 87a6bb701a sg/t5310-jgit-bitmap-test later to maint).
(merge f6b82970aa sg/t5516-fixes later to maint).
(merge 4362da078e sg/t7005-spaces-in-filenames-cleanup later to maint).
(merge 7d0ee47c11 js/test-unset-prereq later to maint).
(merge 5356a3c354 ah/misc-doc-updates later to maint).
(merge 92c4a7a129 nd/completion-aliasfiletype-typofix later to maint).
(merge 58bd77b66a nd/pack-unreachable-objects-doc later to maint).
(merge 4ed79d5203 sg/t6500-no-redirect-of-stdin later to maint).
(merge 17b8a2d6cd jk/config-blob-sans-repo later to maint).
(merge 590551ca2c rd/tag-doc-lightweight later to maint).
(merge 44f560fc16 rd/init-typo later to maint).
(merge f156a0934a rd/p4-doc-markup-env later to maint).
(merge 2a00502b14 tg/doc-sec-list later to maint).
(merge 47cc91310a jk/submodule-fsck-loose-fixup later to maint).
(merge efde7b725c rd/comment-typofix-in-sha1-file later to maint).
(merge 7eedad15df rd/diff-options-typofix later to maint).
(merge 58ebd936cc km/doc-workflows-typofix later to maint).
(merge 30aa96cdf8 rd/doc-remote-tracking-with-hyphen later to maint).
(merge cf317877e3 ks/branch-set-upstream later to maint).
(merge 8de19d6be8 sg/t7406-chain-fix later to maint).
----------------------------------------------------------------
Changes since v2.17.0 are as follows:
Alexander Shopov (2):
l10n: bg.po: Updated Bulgarian translation (3608t)
l10n: bg.po: Updated Bulgarian translation (3608t)
Anders Kaseorg (1):
Documentation/git-bisect.txt: git bisect term → git bisect terms
Andre Hinrichs (1):
l10n: de.po: fix typos
Andreas Heiduk (9):
git-svn: search --authors-prog in PATH too
git-svn: allow empty email-address using authors-prog and authors-file
doc: improve formatting in githooks.txt
doc: align 'diff --no-index' in text and synopsis
doc: clarify ignore rules for git ls-files
doc: add '-d' and '-o' for 'git push'
git-svn: remove ''--add-author-from' for 'commit-diff'
doc: add note about shell quoting to revision.txt
doc: normalize [--options] to [options] in git-diff
Antonio Ospite (1):
doc: fix config API documentation about config_with_options
Beat Bolli (1):
git-gui: search for all current SSH key types
Ben Peart (7):
fsmonitor: fix incorrect buffer size when printing version number
fsmonitor: force index write after full scan
test-drop-caches: simplify delay loading of NtSetSystemInformation
merge: update documentation for {merge,diff}.renameLimit
merge: add merge.renames config setting
merge: pass aggressive when rename detection is turned off
add status config and command line options for rename detection
Bill Ritcher (1):
mergetools: add support for guiffy
Birger Skogeng Pedersen (1):
git-gui: bind CTRL/CMD+numpad ENTER to do_commit
Brandon Williams (79):
pkt-line: introduce packet_read_with_status
pkt-line: allow peeking a packet line without consuming it
pkt-line: add delim packet support
upload-pack: convert to a builtin
upload-pack: factor out processing lines
transport: use get_refs_via_connect to get refs
connect: convert get_remote_heads to use struct packet_reader
connect: discover protocol version outside of get_remote_heads
transport: store protocol version
protocol: introduce enum protocol_version value protocol_v2
test-pkt-line: introduce a packet-line test helper
serve: introduce git-serve
ls-refs: introduce ls-refs server command
connect: request remote refs using v2
transport: convert get_refs_list to take a list of ref prefixes
transport: convert transport_get_remote_refs to take a list of ref prefixes
ls-remote: pass ref prefixes when requesting a remote's refs
fetch: pass ref prefixes when fetching
push: pass ref prefixes when pushing
upload-pack: introduce fetch server command
fetch-pack: perform a fetch using v2
fetch-pack: support shallow requests
connect: refactor git_connect to only get the protocol version once
connect: don't request v2 when pushing
transport-helper: remove name parameter
transport-helper: refactor process_connect_service
transport-helper: introduce stateless-connect
pkt-line: add packet_buf_write_len function
remote-curl: create copy of the service name
remote-curl: store the protocol version the server responded with
http: allow providing extra headers for http requests
http: don't always add Git-Protocol header
http: eliminate "# service" line when using protocol v2
remote-curl: implement stateless-connect command
remote-curl: don't request v2 when pushing
commit: allow partial commits with relative paths
serve: introduce the server-option capability
ls-remote: send server options when using protocol v2
fetch: send server options when using protocol v2
refspec: move refspec parsing logic into its own file
refspec: rename struct refspec to struct refspec_item
refspec: factor out parsing a single refspec
refspec: introduce struct refspec
refspec: convert valid_fetch_refspec to use parse_refspec
submodule--helper: convert push_check to use struct refspec
pull: convert get_tracking_branch to use refspec_item_init
transport: convert transport_push to use struct refspec
remote: convert check_push_refs to use struct refspec
remote: convert match_push_refs to use struct refspec
clone: convert cmd_clone to use refspec_item_init
fast-export: convert to use struct refspec
remote: convert push refspecs to struct refspec
remote: convert fetch refspecs to struct refspec
remote: remove add_prune_tags_to_fetch_refspec
transport-helper: convert to use struct refspec
fetch: convert fetch_one to use struct refspec
fetch: convert refmap to use struct refspec
refspec: remove the deprecated functions
fetch: convert do_fetch to take a struct refspec
fetch: convert get_ref_map to take a struct refspec
fetch: convert prune_refs to take a struct refspec
remote: convert get_stale_heads to take a struct refspec
remote: convert apply_refspecs to take a struct refspec
remote: convert query_refspecs to take a struct refspec
remote: convert get_ref_match to take a struct refspec
remote: convert match_explicit_refs to take a struct refspec
push: check for errors earlier
push: convert to use struct refspec
transport: convert transport_push to take a struct refspec
send-pack: store refspecs in a struct refspec
transport: remove transport_verify_remote_names
http-push: store refspecs in a struct refspec
remote: convert match_push_refs to take a struct refspec
remote: convert check_push_refs to take a struct refspec
submodule: convert push_unpushed_submodules to take a struct refspec
refspec: consolidate ref-prefix generation logic
fetch: generate ref-prefixes when using a configured refspec
remote-curl: accept all encodings supported by curl
remote-curl: accept compressed responses with protocol v2
Casey Fitzpatrick (3):
submodule: clean up substitutions in script
submodule: add --progress option to add command
submodule: add --dissociate option to add/update commands
Changwoo Ryu (1):
l10n: ko.po: Update Korean translation
Christian Couder (7):
perf/aggregate: add display_dir()
perf/aggregate: add --sort-by=regression option
perf/run: add --subsection option
t/perf: add scripts to bisect performance regressions
perf/aggregate: use Getopt::Long for option parsing
perf/bisect_run_script: disable codespeed
t990X: use '.git/objects' as 'deep inside .git' path
Christian Hesse (2):
perl: fix installing modules from contrib
Makefile: mark perllibdir as a .PHONY target
Christopher Diaz Riveros (3):
l10n: es.po: Spanish update for v2.18.0 round 1
l10n: es.po: Spanish update for v2.18.0 round 2
l10n: es.po: Spanish update for v2.18.0 round 3
Clemens Buchacher (2):
git-gui: workaround ttk:style theme use
completion: improve ls-files filter performance
Dan Jacques (3):
Makefile: generate Perl header from template file
Makefile: add Perl runtime prefix support
exec_cmd: RUNTIME_PREFIX on some POSIX systems
David Turner (1):
t: make many tests depend less on the refs being files
Derrick Stolee (20):
packfile: define and use bsearch_pack()
sha1_name: use bsearch_pack() for abbreviations
csum-file: rename hashclose() to finalize_hashfile()
csum-file: refactor finalize_hashfile() method
commit-graph: add format document
graph: add commit graph design document
commit-graph: create git-commit-graph builtin
commit-graph: implement write_commit_graph()
commit-graph: implement git-commit-graph write
commit-graph: implement git commit-graph read
commit-graph: add core.commitGraph setting
commit-graph: close under reachability
commit: integrate commit graph with commit parsing
commit-graph: read only from specific pack-indexes
commit-graph: build graph from starting commits
commit-graph: implement "--append" option
treewide: rename tree to maybe_tree
commit: create get_commit_tree() method
treewide: replace maybe_tree with accessor methods
commit-graph: lazy-load trees for commits
Drew DeVault (1):
git-send-email: allow re-editing of message
Eckhard S. Maaß (1):
wt-status: use settings from git_diff_ui_config
Elijah Newren (73):
directory rename detection: basic testcases
directory rename detection: directory splitting testcases
directory rename detection: testcases to avoid taking detection too far
directory rename detection: partially renamed directory testcase/discussion
directory rename detection: files/directories in the way of some renames
directory rename detection: testcases checking which side did the rename
directory rename detection: more involved edge/corner testcases
directory rename detection: testcases exploring possibly suboptimal merges
directory rename detection: miscellaneous testcases to complete coverage
directory rename detection: tests for handling overwriting untracked files
directory rename detection: tests for handling overwriting dirty files
merge-recursive: move the get_renames() function
merge-recursive: introduce new functions to handle rename logic
merge-recursive: fix leaks of allocated renames and diff_filepairs
merge-recursive: make !o->detect_rename codepath more obvious
merge-recursive: split out code for determining diff_filepairs
merge-recursive: make a helper function for cleanup for handle_renames
merge-recursive: add get_directory_renames()
merge-recursive: check for directory level conflicts
merge-recursive: add computation of collisions due to dir rename & merging
merge-recursive: check for file level conflicts then get new name
merge-recursive: when comparing files, don't include trees
merge-recursive: apply necessary modifications for directory renames
merge-recursive: avoid clobbering untracked files with directory renames
merge-recursive: fix overwriting dirty files involved in renames
merge-recursive: fix remaining directory rename + dirty overwrite cases
directory rename detection: new testcases showcasing a pair of bugs
merge-recursive: avoid spurious rename/rename conflict from dir renames
merge-recursive: ensure we write updates for directory-renamed file
Documentation: fix several one-character-off spelling errors
Documentation: normalize spelling of 'normalised'
directory rename detection: basic testcases
directory rename detection: directory splitting testcases
directory rename detection: testcases to avoid taking detection too far
directory rename detection: partially renamed directory testcase/discussion
directory rename detection: files/directories in the way of some renames
directory rename detection: testcases checking which side did the rename
directory rename detection: more involved edge/corner testcases
directory rename detection: testcases exploring possibly suboptimal merges
directory rename detection: miscellaneous testcases to complete coverage
directory rename detection: tests for handling overwriting untracked files
directory rename detection: tests for handling overwriting dirty files
merge-recursive: move the get_renames() function
merge-recursive: introduce new functions to handle rename logic
merge-recursive: fix leaks of allocated renames and diff_filepairs
merge-recursive: make !o->detect_rename codepath more obvious
merge-recursive: split out code for determining diff_filepairs
merge-recursive: make a helper function for cleanup for handle_renames
Make running git under other debugger-like programs easy
unpack_trees: fix breakage when o->src_index != o->dst_index
merge-recursive: add get_directory_renames()
merge-recursive: check for directory level conflicts
merge-recursive: add computation of collisions due to dir rename & merging
merge-recursive: check for file level conflicts then get new name
merge-recursive: when comparing files, don't include trees
merge-recursive: apply necessary modifications for directory renames
merge-recursive: avoid clobbering untracked files with directory renames
merge-recursive: fix overwriting dirty files involved in renames
merge-recursive: fix remaining directory rename + dirty overwrite cases
directory rename detection: new testcases showcasing a pair of bugs
merge-recursive: avoid spurious rename/rename conflict from dir renames
merge-recursive: improve add_cacheinfo error handling
merge-recursive: move more is_dirty handling to merge_content
merge-recursive: avoid triggering add_cacheinfo error with dirty mod
t6046: testcases checking whether updates can be skipped in a merge
merge-recursive: fix was_tracked() to quit lying with some renamed paths
merge-recursive: fix remainder of was_dirty() to use original index
merge-recursive: make "Auto-merging" comment show for other merges
merge-recursive: fix check for skipability of working tree updates
merge-recursive: provide pair of `unpack_trees_{start,finish}()`
rev-parse: check lookup'ed commit references for NULL
RelNotes: remove duplicate release note
RelNotes 2.18: clarify where directory rename detection applies
Eric Sunshine (6):
t3200: verify "branch --list" sanity when rebasing from detached HEAD
t2028: tighten grep expression to make "move worktree" test more robust
git-worktree.txt: recommend 'git worktree remove' over manual deletion
git-worktree.txt: unify command-line prompt in example blocks
configure.ac: fix botched FREAD_READS_DIRECTORIES check
Makefile: make NO_ICONV really mean "no iconv"
Erik E Brady (1):
credential: ignore SIGPIPE when writing to credential helpers
Florian Gamböck (1):
completion: load completion file for external subcommand
Harald Nordgren (1):
ls-remote: create '--sort' option
Jameson Miller (3):
fast-import: rename mem_pool type to mp_block
fast-import: introduce mem_pool type
mem-pool: move reusable parts of memory pool into its own file
Jean-Noël Avila (2):
l10n: fr.po v2.18 round 1
l10n: fr.po v2.18.0 round 3
Jeff King (60):
diff-highlight: correct test graph diagram
diff-highlight: use test_tick in graph test
diff-highlight: prefer "echo" to "cat" in tests
diff-highlight: test interleaved parallel lines of history
diff-highlight: test graphs with --color
diff-highlight: use flush() helper consistently
diff-highlight: detect --graph by indent
set_git_dir: die when setenv() fails
add chdir-notify API
set_work_tree: use chdir_notify
refs: use chdir_notify to update cached relative paths
config: move flockfile() closer to unlocked functions
t5561: drop curl stderr redirects
t5561: skip tests if curl is not available
ref-filter: use "struct object_id" consistently
ref-filter: make ref_array_item allocation more consistent
ref-filter: factor ref_array pushing into its own function
t7004: fix mistaken tag name
gpg-interface: handle bool user.signingkey
gpg-interface: modernize function declarations
gpg-interface: use size_t for signature buffer size
gpg-interface: fix const-correctness of "eol" pointer
gpg-interface: extract gpg line matching helper
gpg-interface: find the last gpg signature line
apply: clarify "-p" documentation
pager: set COLUMNS to term_columns()
mark_tree_contents_uninteresting(): drop missing object check
mark_parents_uninteresting(): drop missing object check
mark_parents_uninteresting(): replace list with stack
mark_parents_uninteresting(): avoid most allocation
get_main_ref_store: BUG() when outside a repository
config: die when --blob is used outside a repository
http: use strbufs instead of fixed buffers
log_write_email_headers: use strbufs
shorten_unambiguous_ref: use xsnprintf
fmt_with_err: add a comment that truncation is OK
submodule-config: verify submodule names as paths
is_ntfs_dotgit: use a size_t for traversing string
is_hfs_dotgit: match other .git files
skip_prefix: add case-insensitive variant
verify_path: drop clever fallthrough
verify_dotfile: mention case-insensitivity in comment
update-index: stat updated files earlier
verify_path: disallow symlinks in .gitmodules
index-pack: make fsck error message more specific
fsck: simplify ".git" check
fsck: actually fsck blob data
fsck: detect gitmodules files
fsck: handle promisor objects in .gitmodules check
fsck: check .gitmodules content
fsck: call fsck_finish() after fscking objects
unpack-objects: call fsck_finish() after fscking objects
index-pack: check .gitmodules files with --strict
fsck: complain when .gitmodules is a symlink
prepare_commit_graft: treat non-repository as a noop
index-pack: handle --strict checks of non-repo packs
t7415: don't bother creating commit for symlink test
fsck: avoid looking at NULL blob->object
ewah_read_mmap: bounds-check mmap reads
ewah: adjust callers of ewah_read_mmap()
Jeremy Linton (1):
packfile: correct zlib buffer handling
Jiang Xin (4):
l10n: git.pot: v2.18.0 round 1 (108 new, 14 removed)
l10n: git.pot: v2.18.0 round 2 (144 new, 6 removed)
l10n: git.pot: v2.18.0 round 3 (1 new, 1 removed)
l10n: zh_CN: for git v2.18.0 l10n round 1 to 3
Johannes Schindelin (69):
git_config_set: fix off-by-two
t1300: rename it to reflect that `repo-config` was deprecated
t1300: demonstrate that --replace-all can "invent" newlines
config --replace-all: avoid extra line breaks
t1300: avoid relying on a bug
t1300: remove unreasonable expectation from TODO
t5404: relax overzealous test
t1300: add a few more hairy examples of sections becoming empty
t1300: `--unset-all` can leave an empty section behind (bug)
config: introduce an optional event stream while parsing
config: avoid using the global variable `store`
config_set_store: rename some fields for consistency
git_config_set: do not use a state machine
git_config_set: make use of the config parser's event stream
git config --unset: remove empty sections (in the common case)
git_config_set: reuse empty sections
exec_cmd: provide a new-style RUNTIME_PREFIX helper for Windows
mingw/msvc: use the new-style RUNTIME_PREFIX helper
color: introduce support for colorizing stderr
push: test to verify that push errors are colored
config: document the settings to colorize push errors/hints
gettext: avoid initialization if the locale dir is not present
git_setup_gettext: plug memory leak
sequencer: avoid using errno clobbered by rollback_lock_file()
sequencer: make rearrange_squash() a bit more obvious
sequencer: refactor how original todo list lines are accessed
sequencer: offer helpful advice when a command was rescheduled
sequencer: introduce new commands to reset the revision
sequencer: introduce the `merge` command
sequencer: fast-forward `merge` commands, if possible
rebase-helper --make-script: introduce a flag to rebase merges
rebase: introduce the --rebase-merges option
sequencer: make refs generated by the `label` command worktree-local
sequencer: handle post-rewrite for merge commands
rebase --rebase-merges: avoid "empty merges"
pull: accept --rebase=merges to recreate the branch topology
rebase -i: introduce --rebase-merges=[no-]rebase-cousins
rebase -i --rebase-merges: add a section to the man page
argv_array: offer to split a string by whitespace
commit: Let the callback of for_each_mergetag return on error
replace: avoid using die() to indicate a bug
tests: introduce test_unset_prereq, for debugging
replace: "libify" create_graft() and callees
replace: prepare create_graft() for converting graft files wholesale
replace: introduce --convert-graft-file
Add a test for `git replace --convert-graft-file`
Deprecate support for .git/info/grafts
filter-branch: stop suggesting to use grafts
technical/shallow: stop referring to grafts
technical/shallow: describe why shallow cannot use replace refs
Remove obsolete script to convert grafts to replace refs
rebase -i: demonstrate bugs with fixup!/squash! commit messages
rebase -i: Handle "combination of <n> commits" with GETTEXT_POISON
sequencer: always commit without editing when asked for
rebase --skip: clean up commit message after a failed fixup/squash
sequencer: extract helper to update active_cache_tree
sequencer: allow introducing new root commits
rebase --rebase-merges: a "merge" into a new root is a fast-forward
sequencer: learn about the special "fake root commit" handling
rebase --rebase-merges: root commits can be cousins, too
rebase -i --root: let the sequencer handle even the initial part
test-tool: help verifying BUG() code paths
run-command: use BUG() to report bugs, not die()
Replace all die("BUG: ...") calls by BUG() ones
Convert remaining die*(BUG) messages
config: a user-provided invalid section is not a BUG
is_ntfs_dotgit: match other .git files
is_{hfs,ntfs}_dotgitmodules: add tests
rebase --root: fix amending root commit messages
Johannes Sixt (2):
sequencer: reset the committer date before commits
git: add -P as a short option for --no-pager
Jonathan Nieder (6):
sha1_file: allow map_sha1_file_1 to handle arbitrary repositories
sha1_file: allow sha1_loose_object_info to handle arbitrary repositories
Makefile: remove unused @@PERLLIBDIR@@ substitution variable
Makefile: quote $INSTLIBDIR when passing it to sed
packfile: add repository argument to packed_object_info
fetch: do not pass ref-prefixes for fetch by exact SHA1
Jonathan Tan (5):
grep: remove "repo" arg from non-supporting funcs
upload-pack: fix error message typo
upload-pack: read config when serving protocol v2
{fetch,upload}-pack: support filter in protocol v2
submodule: do not pass null OID to setup_revisions
Jordi Mas (1):
l10n: Update Catalan translation
Junio C Hamano (27):
stash: fix nonsense pipeline
The first batch for 2.18 cycle
The second batch for 2.18
The third batch for 2.18
Revert "Merge branch 'en/rename-directory-detection'"
gc: do not upcase error message shown with die()
parseopt: handle malformed --expire arguments more nicely
The fourth batch for 2.18
The fifth batch for 2.18
argv-array: return the pushed string from argv_push*()
Git 2.13.7
Git 2.14.4
Git 2.15.2
Git 2.16.4
Git 2.17.1
The sixth batch for 2.18
The seventh batch for 2.18
Git 2.18-rc0
refspec-api: avoid uninitialized field in refspec item
A bit more topics before -rc1
Git 2.18-rc1
RelNotes 2.18: typofixes
index-pack: correct install_packed_git() args
Git 2.18-rc2
A bunch of micro-fixes before going 2.18 final
Almost 2.18 final
Git 2.18
Kaartic Sivaraam (2):
branch --list: print useful info whilst interactive rebasing a detached HEAD
t3200: clarify description of --set-upstream test
Karthikeyan Singaravelan (1):
doc: fix typos in documentation and release notes
Kyle Meyer (1):
gitworkflows: fix grammar in 'Merge upwards' rule
Lars Schneider (10):
strbuf: remove unnecessary NUL assignment in xstrdup_tolower()
strbuf: add xstrdup_toupper()
strbuf: add a case insensitive starts_with()
utf8: teach same_encoding() alternative UTF encoding names
utf8: add function to detect prohibited UTF-16/32 BOM
utf8: add function to detect a missing UTF-16/32 BOM
convert: add 'working-tree-encoding' attribute
convert: check for detectable errors in UTF encodings
convert: add tracing for 'working-tree-encoding' attribute
convert: add round trip check based on 'core.checkRoundtripEncoding'
Leif Middelschulte (2):
merge-recursive: give notice when submodule commit gets fast-forwarded
merge-submodule: reduce output verbosity
Loganaden Velvindron (1):
http: allow use of TLS 1.3
Lucas Werkmeister (1):
daemon.c: fix condition for redirecting stderr
Luis Marsano (2):
git-credential-netrc: adapt to test framework for git
git-credential-netrc: accept gpg option
Luke Diamand (7):
git-p4: add unshelve command
git-p4: disable-rebase: allow setting this via configuration
git-p4: add option to disable syncing of p4/master with p4
git-p4: better error reporting when p4 fails
git-p4: raise exceptions from p4CmdList based on error from p4 server
git-p4: narrow the scope of exceptions caught when parsing an int
git-p4: auto-size the block
Martin Ågren (24):
git-shortlog.txt: reorder usages
shortlog: add usage-string for stdin-reading
shortlog: disallow left-over arguments outside repo
doc: convert \--option to --option
doc: convert [\--] to [--]
git-[short]log.txt: unify quoted standalone --
git-submodule.txt: quote usage in monospace, drop backslash
fast-export: fix regression skipping some merge-commits
http-fetch: make `-a` standard behaviour
walker: drop fields of `struct walker` which are always 1
t/helper/test-write-cache: clean up lock-handling
refs.c: do not die if locking fails in `write_pseudoref()`
refs.c: do not die if locking fails in `delete_pseudoref()`
lock_file: make function-local locks non-static
lock_file: move static locks into functions
refs.c: refer to "object ID", not "sha1", in error messages
t1400: add tests around adding/deleting pseudorefs
refs: handle zero oid for pseudorefs
merge: setup `opts` later in `checkout_fast_forward()`
config: free resources of `struct config_store_data`
config: let `config_store_data_clear()` handle `value_regex`
config: let `config_store_data_clear()` handle `key`
regex: do not call `regfree()` if compilation fails
unpack_trees_options: free messages when done
Meng-Sung Wu (1):
doc: update the order of the syntax `git merge --continue`
Michal Nazarewicz (1):
send-email: simplify Gmail example in the documentation
Michele Locati (1):
filter-branch: return 2 when nothing to rewrite
Nguyễn Thái Ngọc Duy (108):
repository: initialize the_repository in main()
repository.c: move env-related setup code back to environment.c
repository.c: delete dead functions
sha1_file.c: move delayed getenv(altdb) back to setup_git_env()
repository: delete ignore_env member
gc.txt: more details about what gc does
worktree: delete dead code
worktree prune: improve prune logic when worktree is moved
repository.h: add comment and clarify repo_set_gitdir
git.c: move cmd_struct declaration up
git.c: add hidden option --list-parseopt-builtins
completion: mention the oldest version we need to support
completion: factor out _git_xxx calling code
completion: add --option completion for most builtin commands
completion: delete option-only completion commands
completion: use __gitcomp_builtin in _git_ls_tree
completion: use __gitcomp_builtin in _git_cherry
packfile: keep prepare_packed_git() private
t/helper: add an empty test-tool program
t/helper: merge test-chmtime into test-tool
t/helper: merge test-sha1 into test-tool
t/helper: merge test-lazy-init-name-hash into test-tool
t/helper: merge test-config into test-tool
t/helper: merge test-ctype into test-tool
t/helper: merge test-date into test-tool
t/helper: merge (unused) test-delta into test-tool
t/helper: merge test-drop-caches into test-tool
t/helper: merge test-dump-cache-tree into test-tool
t/helper: merge test-dump-split-index into test-tool
t/helper: merge test-example-decorate into test-tool
t/helper: merge test-genrandom into test-tool
t/helper: merge test-hashmap into test-tool
t/helper: merge test-index-version into test-tool
t/helper: merge (unused) test-match-trees into test-tool
t/helper: merge (unused) test-mergesort into test-tool
t/helper: merge test-mktemp into test-tool
t/helper: merge test-online-cpus into test-tool
t/helper: merge test-path-utils into test-tool
t/helper: merge test-prio-queue into test-tool
t/helper: merge test-read-cache into test-tool
t/helper: merge test-ref-store into test-tool
t/helper: merge test-regex into test-tool
t/helper: merge test-revision-walking into test-tool
t/helper: merge test-run-command into test-tool
t/helper: merge test-scrap-cache-tree into test-tool
t/helper: merge test-sha1-array into test-tool
t/helper: merge test-sigchain into test-tool
t/helper: merge test-strcmp-offset into test-tool
t/helper: merge test-string-list into test-tool
t/helper: merge test-submodule-config into test-tool
t/helper: merge test-subprocess into test-tool
t/helper: merge test-urlmatch-normalization into test-tool
t/helper: merge test-wildmatch into test-tool
t/helper: merge test-write-cache into test-tool
trace.c: export trace_setup_key
read-cache.c: make $GIT_TEST_SPLIT_INDEX boolean
pack-objects: a bit of document about struct object_entry
pack-objects: turn type and in_pack_type to bitfields
pack-objects: use bitfield for object_entry::dfs_state
pack-objects: use bitfield for object_entry::depth
pack-objects: move in_pack_pos out of struct object_entry
pack-objects: move in_pack out of struct object_entry
pack-objects: refer to delta objects by index instead of pointer
pack-objects: shrink z_delta_size field in struct object_entry
pack-objects: don't check size when the object is bad
pack-objects: clarify the use of object_entry::size
pack-objects: shrink size field in struct object_entry
pack-objects: shrink delta_size field in struct object_entry
pack-objects: reorder members to shrink struct object_entry
ci: exercise the whole test suite with uncommon code in pack-objects
t7700: have closing quote of a test at the beginning of line
repack: add --keep-pack option
gc: add --keep-largest-pack option
gc: add gc.bigPackThreshold config
gc: handle a corner case in gc.bigPackThreshold
gc --auto: exclude base pack if not enough mem to "repack -ad"
pack-objects: show some progress when counting kept objects
connect.c: mark die_initial_contact() NORETURN
Makefile: detect compiler and enable more warnings in DEVELOPER=1
submodule--helper: don't print null in 'submodule status'
doc: keep first level section header in upper case
pack-objects: validation and documentation about unreachable options
completion: fix misspelled config key aliasesfiletype
repository: fix free problem with repo_clear(the_repository)
generate-cmds.sh: factor out synopsis extract code
generate-cmds.sh: export all commands to command-list.h
help: use command-list.h for common command list
Remove common-cmds.h
pack-format.txt: more details on pack file format
column: fix off-by-one default width
commit.h: rearrange 'index' to shrink struct commit
git.c: convert --list-* to --list-cmds=*
git --list-cmds: collect command list in a string_list
completion: implement and use --list-cmds=main,others
git: support --list-cmds=list-<category>
help: add "-a --verbose" to list all commands with synopsis
help: use command-list.txt for the source of guides
command-list.txt: documentation and guide line
completion: let git provide the completable command list
completion: reduce completable command list
Move declaration for alias.c to alias.h
completion: add and use --list-cmds=nohelpers
completion: add and use --list-cmds=alias
completion: allow to customize the completable command list
travis-ci: run gcc-8 on linux-gcc jobs
Use OPT_SET_INT_F() for cmdline option specification
remote.txt: update documentation for 'update' command
remote: doc typofix
Olga Telezhnaya (6):
ref-filter: add shortcut to work with strbufs
ref-filter: start adding strbufs with errors
ref-filter: add return value && strbuf to handlers
ref-filter: change parsing function error handling
ref-filter: add return value to parsers
ref-filter: libify get_ref_atom_value()
Orgad Shaneh (1):
git-rebase--interactive: fix copy-paste mistake
Paul-Sebastian Ungureanu (2):
parse-options: do not show usage upon invalid option value
t/helper: 'test-chmtime (--get|-g)' to print only the mtime
Pedro Alvarez Piedehierro (1):
import-tars: read overlong names from pax extended header
Peter Krefting (2):
l10n: sv.po: Update Swedish translation (3470t0f0u)
l10n: sv.po: Update Swedish translation (3608t0f0u)
Philip Oakley (1):
Avoid multiple PREFIX definitions
Phillip Wood (7):
rebase --root: stop assuming squash_onto is unset
rebase -i --keep-empty: don't prune empty commits
rebase: respect --no-keep-empty
rebase: extend --signoff support
rebase -p: error out if --signoff is given
rebase --keep-empty: always use interactive rebase
rebase --rebase-merges: add test for --keep-empty
Pratik Karki (1):
test: avoid pipes in git related commands for test
Ralf Thielow (1):
l10n: TEAMS: remove inactive de team members
Ramsay Jones (1):
BUG_exit_code: fix sparse "symbol not declared" warning
René Scharfe (11):
sha1_name: use bsearch_pack() in unique_in_pack()
bisect: use oid_to_hex() for converting object_id hashes to hex strings
run-command: use strbuf_addstr() for adding a string to a strbuf
submodule: check for NULL return of get_submodule_ref_store()
replace_object: use oidmap
fast-export: avoid NULL pointer arithmetic
t5512: run git fetch inside test
fsmonitor: use internal argv_array of struct child_process
merge-recursive: use xstrdup() instead of fixed buffer
blame: release string_list after use in parse_color_fields()
merge-recursive: use xstrdup() instead of fixed buffer
Robert P. J. Day (7):
Use proper syntax for replaceables in command docs
tag: clarify in the doc that a tag can refer to a non-commit object
init: fix grammar in "templates not found" msg
p4.txt: Use backquotes for variable names
sha1-file.c: correct $GITDIR to $GIT_DIR in a comment
diff-options.txt: fix minor typos, font inconsistencies, in docs
Use hyphenated "remote-tracking branch" (docs and comments)
Romain Merland (1):
git-p4: add options --commit and --disable-rebase
Ryan Dammrose (1):
push: colorize errors
SZEDER Gábor (25):
test_must_be_empty: simplify file existence check
t9902-completion: add tests demonstrating issues with quoted pathnames
completion: move __git_complete_index_file() next to its helpers
completion: simplify prefix path component handling during path completion
completion: support completing non-ASCII pathnames
completion: improve handling quoted paths on the command line
completion: let 'ls-files' and 'diff-index' filter matching paths
completion: use 'awk' to strip trailing path components
t9902-completion: ignore COMPREPLY element order in some tests
completion: remove repeated dirnames with 'awk' during path completion
completion: improve handling quoted paths in 'git ls-files's output
completion: fill COMPREPLY directly when completing paths
completion: reduce overhead of clearing cached --options
docs/git-gc: fix minor rendering issue
coccinelle: avoid wrong transformation suggestions from commit.cocci
t6050-replace: don't disable stdin for the whole test script
t5310-pack-bitmaps: make JGit tests work with GIT_TEST_SPLIT_INDEX
t5516-fetch-push: fix 'push with dry-run' test
t5516-fetch-push: fix broken &&-chain
t7005-editor: get rid of the SPACES_IN_FILENAMES prereq
completion: don't return with error from __gitcomp_file_direct()
t9902-completion: exercise __git_complete_index_file() directly
completion: correct zsh detection when run from git-completion.zsh
t7406-submodule-update: fix broken &&-chains
RelNotes 2.18: minor fix to entry about dynamically loading completions
Sergey Organov (1):
glossary: substitute "ancestor" for "direct ancestor" in 'push' description.
Stefan Agner (1):
send-email: avoid duplicate In-Reply-To/References
Stefan Beller (82):
repository: introduce raw object store field
object-store: migrate alternates struct and functions from cache.h
object-store: move alt_odb_list and alt_odb_tail to object store
object-store: free alt_odb_list
object-store: move packed_git and packed_git_mru to object store
object-store: close all packs upon clearing the object store
pack: move prepare_packed_git_run_once to object store
pack: move approximate object count to object store
sha1_file: add raw_object_store argument to alt_odb_usable
sha1_file: add repository argument to link_alt_odb_entry
sha1_file: add repository argument to read_info_alternates
sha1_file: add repository argument to link_alt_odb_entries
sha1_file: add repository argument to prepare_alt_odb
sha1_file: allow link_alt_odb_entries to handle arbitrary repositories
sha1_file: allow prepare_alt_odb to handle arbitrary repositories
sha1_file: add repository argument to sha1_file_name
sha1_file: add repository argument to stat_sha1_file
sha1_file: add repository argument to open_sha1_file
sha1_file: add repository argument to map_sha1_file_1
sha1_file: add repository argument to map_sha1_file
sha1_file: add repository argument to sha1_loose_object_info
sha1_file: allow sha1_file_name to handle arbitrary repositories
sha1_file: allow stat_sha1_file to handle arbitrary repositories
sha1_file: allow open_sha1_file to handle arbitrary repositories
sha1_file: allow map_sha1_file to handle arbitrary repositories
packfile: allow prepare_packed_git_mru to handle arbitrary repositories
packfile: allow rearrange_packed_git to handle arbitrary repositories
packfile: allow install_packed_git to handle arbitrary repositories
packfile: add repository argument to prepare_packed_git_one
packfile: add repository argument to prepare_packed_git
packfile: add repository argument to reprepare_packed_git
packfile: allow prepare_packed_git_one to handle arbitrary repositories
packfile: allow prepare_packed_git to handle arbitrary repositories
packfile: allow reprepare_packed_git to handle arbitrary repositories
packfile: add repository argument to find_pack_entry
packfile: allow find_pack_entry to handle arbitrary repositories
submodule.h: drop declaration of connect_work_tree_and_git_dir
submodule-config: allow submodule_free to handle arbitrary repositories
submodule-config: add repository argument to submodule_from_{name, path}
submodule-config: remove submodule_from_cache
submodule: fixup nested submodules after moving the submodule
write_or_die.c: rename to use dashes in file name
unicode_width.h: rename to use dash in file name
exec_cmd: rename to use dash in file name
sha1_name.c: rename to use dash in file name
sha1_file.c: rename to use dash in file name
replace_object.c: rename to use dash in file name
replace-object: move replace_map to object store
object-store: move lookup_replace_object to replace-object.h
replace-object: eliminate replace objects prepared flag
replace-object: check_replace_refs is safe in multi repo environment
refs: add repository argument to get_main_ref_store
refs: add repository argument to for_each_replace_ref
replace-object: add repository argument to prepare_replace_object
replace-object: add repository argument to do_lookup_replace_object
replace-object: add repository argument to lookup_replace_object
refs: store the main ref store inside the repository struct
refs: allow for_each_replace_ref to handle arbitrary repositories
replace-object: allow prepare_replace_object to handle arbitrary repositories
replace-object: allow do_lookup_replace_object to handle arbitrary repositories
replace-object: allow lookup_replace_object to handle arbitrary repositories
worktree: accept -f as short for --force for removal
builtin/blame: dim uninteresting metadata lines
builtin/blame: highlight recently changed lines
builtin/blame: add new coloring scheme config
cache.h: add repository argument to oid_object_info_extended
cache.h: add repository argument to oid_object_info
packfile: add repository argument to retry_bad_packed_offset
packfile: add repository argument to packed_to_object_type
packfile: add repository argument to read_object
packfile: add repository argument to unpack_entry
packfile: add repository argument to cache_or_unpack_entry
cache.h: allow oid_object_info to handle arbitrary repositories
git-rebase--interactive: clarify arguments
object.c: free replace map in raw_object_store_clear
replace-object.c: remove the_repository from prepare_replace_object
grep: handle corrupt index files early
git-submodule.sh: try harder to fetch a submodule
submodule.c: move submodule merging to merge-recursive.c
merge-recursive: i18n submodule merge output and respect verbosity
object.c: clear replace map before freeing it
t7400: encapsulate setup code in test_expect_success
Takuto Ikuta (1):
fetch-pack.c: use oidset to check existence of loose object
Tao Qingyun (1):
t1510-repo-setup.sh: remove useless mkdir
Taylor Blau (5):
builtin/config.c: treat type specifiers singularly
builtin/config.c: support `--type=<type>` as preferred alias for `--<type>`
builtin/config: introduce `--default`
config.c: introduce 'git_config_color' to parse ANSI colors
builtin/config: introduce `color` type specifier
Thomas Gummerer (12):
stash push: avoid printing errors
stash push -u: don't create empty stash
stash: drop superfluos pathspec parameter
SubmittingPatches: mention the git contacts command
completion: stop showing 'save' for stash by default
completion: make stash -p and alias for stash push -p
worktree: remove extra members from struct add_opts
worktree: improve message when creating a new worktree
worktree: factor out dwim_branch function
worktree: teach "add" to check out existing branches
SubmittingPatches: replace numbered attributes with names
note git-security@googlegroups.com in more places
Todd Zullinger (3):
doc/clone: update caption for GIT URLS cross-reference
rebase --root: demonstrate a bug while amending root commit messages
t3404: check root commit in 'rebase -i --root reword root commit'
Torsten Bögershausen (1):
test: correct detection of UTF8_NFD_TO_NFC for APFS
Trần Ngọc Quân (3):
l10n: vi(3470t): Updated Vietnamese translation for v2.18.0
l10n: vi.po(3608t): Update Vietnamese translation for v2.18.0 round2
l10n: vi.po(3608t): Update Vietnamese translation for v2.18.0 round 3
Wink Saville (8):
rebase-interactive: simplify pick_on_preserving_merges
rebase: update invocation of rebase dot-sourced scripts
rebase: reindent function git_rebase__interactive
rebase: extract functions out of git_rebase__interactive
rebase: add and use git_rebase__interactive__preserve_merges
rebase: remove unused code paths from git_rebase__interactive
rebase: remove unused code paths from git_rebase__interactive__preserve_merges
rebase: remove merges_option and a blank line
Yuki Kokubun (1):
filter-branch: fix errors caused by refs that point at non-committish
brian m. carlson (123):
bulk-checkin: convert index_bulk_checkin to struct object_id
builtin/write-tree: convert to struct object_id
cache-tree: convert write_*_as_tree to object_id
cache-tree: convert remnants to struct object_id
resolve-undo: convert struct resolve_undo_info to object_id
tree: convert read_tree_recursive to struct object_id
ref-filter: convert grab_objectname to struct object_id
strbuf: convert strbuf_add_unique_abbrev to use struct object_id
wt-status: convert struct wt_status_state to object_id
Convert find_unique_abbrev* to struct object_id
http-walker: convert struct object_request to use struct object_id
send-pack: convert remaining functions to struct object_id
replace_object: convert struct replace_object to object_id
builtin/mktag: convert to struct object_id
archive: convert write_archive_entry_fn_t to object_id
archive: convert sha1_file_to_archive to struct object_id
builtin/index-pack: convert struct ref_delta_entry to object_id
sha1_file: convert read_loose_object to use struct object_id
sha1_file: convert check_sha1_signature to struct object_id
streaming: convert open_istream to use struct object_id
builtin/mktree: convert to struct object_id
sha1_file: convert assert_sha1_type to object_id
sha1_file: convert retry_bad_packed_offset to struct object_id
packfile: convert unpack_entry to struct object_id
Convert remaining callers of sha1_object_info_extended to object_id
sha1_file: convert sha1_object_info* to object_id
builtin/fmt-merge-msg: convert remaining code to object_id
builtin/notes: convert static functions to object_id
tree-walk: convert get_tree_entry_follow_symlinks internals to object_id
streaming: convert istream internals to struct object_id
tree-walk: convert tree entry functions to object_id
sha1_file: convert read_object_with_reference to object_id
sha1_file: convert read_sha1_file to struct object_id
Convert lookup_replace_object to struct object_id
sha1_file: introduce a constant for max header length
convert: convert to struct object_id
sha1_name: convert struct min_abbrev_data to object_id
t1011: abstract away SHA-1-specific constants
t1304: abstract away SHA-1-specific constants
t1300: abstract away SHA-1-specific constants
t1405: sort reflog entries in a hash-independent way
t1411: abstract away SHA-1-specific constants
t1507: abstract away SHA-1-specific constants
t2020: abstract away SHA-1 specific constants
t2101: modernize test style
t2101: abstract away SHA-1-specific constants
t2107: abstract away SHA-1-specific constants
format-patch: make cover letters always text/plain
cache: add a function to read an object ID from a buffer
server-info: remove unused members from struct pack_info
Remove unused member in struct object_context
packfile: remove unused member from struct pack_entry
packfile: convert has_sha1_pack to object_id
sha1-file: convert freshen functions to object_id
packfile: convert find_pack_entry to object_id
packfile: abstract away hash constant values
pack-objects: abstract away hash algorithm
pack-redundant: abstract away hash algorithm
tree-walk: avoid hard-coded 20 constant
tree-walk: convert get_tree_entry_follow_symlinks to object_id
fsck: convert static functions to struct object_id
submodule-config: convert structures to object_id
split-index: convert struct split_index to object_id
Update struct index_state to use struct object_id
pack-redundant: convert linked lists to use struct object_id
index-pack: abstract away hash function constant
commit: convert uses of get_sha1_hex to get_oid_hex
dir: convert struct untracked_cache_dir to object_id
http: eliminate hard-coded constants
revision: replace use of hard-coded constants
upload-pack: replace use of several hard-coded constants
diff: specify abbreviation size in terms of the_hash_algo
builtin/receive-pack: avoid hard-coded constants for push certs
sha1-file: add functions for hex empty tree and blob OIDs
builtin/am: convert uses of EMPTY_TREE_SHA1_BIN to the_hash_algo
builtin/merge: switch tree functions to use object_id
merge: convert empty tree constant to the_hash_algo
sequencer: convert one use of EMPTY_TREE_SHA1_HEX
submodule: convert several uses of EMPTY_TREE_SHA1_HEX
wt-status: convert two uses of EMPTY_TREE_SHA1_HEX
builtin/receive-pack: convert one use of EMPTY_TREE_SHA1_HEX
builtin/reset: convert use of EMPTY_TREE_SHA1_BIN
sha1_file: convert cached object code to struct object_id
cache-tree: use is_empty_tree_oid
sequencer: use the_hash_algo for empty tree object ID
dir: use the_hash_algo for empty blob object ID
sha1_file: only expose empty object constants through git_hash_algo
Update shell scripts to compute empty tree object ID
add--interactive: compute the empty tree value
merge-one-file: compute empty blob object ID
Documentation: use 8-space tabs with Asciidoctor
Documentation: render revisions correctly under Asciidoctor
mailmap: update brian m. carlson's email address
t/test-lib: add an SHA1 prerequisite
t/test-lib: introduce ZERO_OID
t: switch $_z40 to $ZERO_OID
t/test-lib: introduce OID_REGEX
t: switch $_x40 to $OID_REGEX
t0000: annotate with SHA1 prerequisite
t1007: annotate with SHA1 prerequisite
t1512: skip test if not using SHA-1
t4044: skip test if not using SHA-1
t: skip pack tests if not using SHA-1
t2203: abstract away SHA-1-specific constants
t3103: abstract away SHA-1-specific constants
t3702: abstract away SHA-1-specific constants
t3905: abstract away SHA-1-specific constants
t4007: abstract away SHA-1-specific constants
t4008: abstract away SHA-1-specific constants
t4014: abstract away SHA-1-specific constants
t4020: abstract away SHA-1-specific constants
t4022: abstract away SHA-1-specific constants
t4029: fix test indentation
t4029: abstract away SHA-1-specific constants
t4030: abstract away SHA-1-specific constants
t/lib-diff-alternative: abstract away SHA-1-specific constants
t4205: sort log output in a hash-independent way
t4042: abstract away SHA-1-specific constants
t4045: abstract away SHA-1-specific constants
t4208: abstract away SHA-1-specific constants
t5300: abstract away SHA-1-specific constants
sequencer: ensure labels that are object IDs are rewritten
t3430: test clean-up
Ævar Arnfjörð Bjarmason (22):
configure: fix a regression in PCRE v1 detection
configure: detect redundant --with-libpcre & --with-libpcre1
Makefile: make USE_LIBPCRE=YesPlease mean v2, not v1
Makefile: fix broken bindir_relative variable
Makefile: add a gitexecdir_relative variable
Makefile: optionally symlink libexec/git-core binaries to bin/git
Remove contrib/examples/*
doc hash-function-transition: clarify how older gits die on NewHash
doc hash-function-transition: clarify what SHAttered means
git-svn: avoid warning on undef readline()
Makefile: add a DEVOPTS to suppress -Werror under DEVELOPER
Makefile: add a DEVOPTS to get all of -Wextra
git{,-blame}.el: remove old bitrotting Emacs code
.gitattributes: add *.pl extension for Perl
.gitattributes: use the "perl" differ for Perl
.gitattributes: add a diff driver for Python
sha1-name.c: remove stray newline
sha1-array.h: align function arguments
git-p4: change "commitish" typo to "committish"
sha1-name.c: move around the collect_ambiguous() function
get_short_oid: sort ambiguous objects by type, then SHA-1
git-credential-netrc: remove use of "autodie"
^ permalink raw reply [relevance 3%]
* [ANNOUNCE] Git v2.18.0-rc2
@ 2018-06-13 22:12 3% Junio C Hamano
0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2018-06-13 22:12 UTC (permalink / raw)
To: git; +Cc: Linux Kernel, git-packagers
A release candidate Git v2.18.0-rc2 is now available for testing
at the usual places. It is comprised of 852 non-merge commits
since v2.17.0, contributed by 65 people, 20 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.18.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.17.0 are as follows.
Welcome to the Git development community!
Bill Ritcher, Birger Skogeng Pedersen, Casey Fitzpatrick,
Dan Jacques, Drew DeVault, Eckhard S. Maaß, Erik E Brady,
Florian Gamböck, Harald Nordgren, Leif Middelschulte,
Loganaden Velvindron, Luis Marsano, Paul-Sebastian Ungureanu,
Pedro Alvarez Piedehierro, Pratik Karki, Ryan Dammrose, Takuto
Ikuta, Tao Qingyun, Wink Saville, and Yuki Kokubun.
Returning contributors who helped this release are as follows.
Thanks for your continued support.
Ævar Arnfjörð Bjarmason, Anders Kaseorg, Andreas Heiduk,
Antonio Ospite, Beat Bolli, Ben Peart, Brandon Williams, brian
m. carlson, Christian Couder, Christian Hesse, Clemens Buchacher,
David Turner, Derrick Stolee, Elijah Newren, Eric Sunshine,
Jameson Miller, Jeff King, Johannes Schindelin, Johannes Sixt,
Jonathan Nieder, Jonathan Tan, Junio C Hamano, Kaartic Sivaraam,
Lars Schneider, Lucas Werkmeister, Luke Diamand, Martin Ågren,
Michal Nazarewicz, Michele Locati, Nguyễn Thái Ngọc Duy,
Olga Telezhnaya, Orgad Shaneh, Philip Oakley, Phillip Wood,
Ramsay Jones, René Scharfe, Robert P. J. Day, Sergey Organov,
Stefan Agner, Stefan Beller, SZEDER Gábor, Taylor Blau, Thomas
Gummerer, Todd Zullinger, and Torsten Bögershausen.
----------------------------------------------------------------
Git 2.18 Release Notes (draft)
==============================
Updates since v2.17
-------------------
UI, Workflows & Features
* Rename detection logic that is used in "merge" and "cherry-pick" has
learned to guess when all of x/a, x/b and x/c have moved to z/a,
z/b and z/c, it is likely that x/d added in the meantime would also
want to move to z/d by taking the hint that the entire directory
'x' moved to 'z'. A bug causing dirty files involved in a rename
to be overwritten during merge has also been fixed as part of this
work. Incidentally, this also avoids updating a file in the
working tree after a (non-trivial) merge whose result matches what
our side originally had.
* "git filter-branch" learned to use a different exit code to allow
the callers to tell the case where there was no new commits to
rewrite from other error cases.
* When built with more recent cURL, GIT_SSL_VERSION can now specify
"tlsv1.3" as its value.
* "git gui" learned that "~/.ssh/id_ecdsa.pub" and
"~/.ssh/id_ed25519.pub" are also possible SSH key files.
(merge 2e2f0288ef bb/git-gui-ssh-key-files later to maint).
* "git gui" performs commit upon CTRL/CMD+ENTER but the
CTRL/CMD+KP_ENTER (i.e. enter key on the numpad) did not have the
same key binding. It now does.
(merge 28a1d94a06 bp/git-gui-bind-kp-enter later to maint).
* "git gui" has been taught to work with old versions of tk (like
8.5.7) that do not support "ttk::style theme use" as a way to query
the current theme.
(merge 4891961105 cb/git-gui-ttk-style later to maint).
* "git rebase" has learned to honor "--signoff" option when using
backends other than "am" (but not "--preserve-merges").
* "git branch --list" during an interrupted "rebase -i" now lets
users distinguish the case where a detached HEAD is being rebased
and a normal branch is being rebased.
* "git mergetools" learned talking to guiffy.
* The scripts in contrib/emacs/ have outlived their usefulness and
have been replaced with a stub that errors out and tells the user
there are replacements.
* The new "working-tree-encoding" attribute can ask Git to convert the
contents to the specified encoding when checking out to the working
tree (and the other way around when checking in).
* The "git config" command uses separate options e.g. "--int",
"--bool", etc. to specify what type the caller wants the value to
be interpreted as. A new "--type=<typename>" option has been
introduced, which would make it cleaner to define new types.
* "git config --get" learned the "--default" option, to help the
calling script. Building on top of the above changes, the
"git config" learns "--type=color" type. Taken together, you can
do things like "git config --get foo.color --default blue" and get
the ANSI color sequence for the color given to foo.color variable,
or "blue" if the variable does not exist.
* "git ls-remote" learned an option to allow sorting its output based
on the refnames being shown.
* The command line completion (in contrib/) has been taught that "git
stash save" has been deprecated ("git stash push" is the preferred
spelling in the new world) and does not offer it as a possible
completion candidate when "git stash push" can be.
* "git gc --prune=nonsense" spent long time repacking and then
silently failed when underlying "git prune --expire=nonsense"
failed to parse its command line. This has been corrected.
* Error messages from "git push" can be painted for more visibility.
* "git http-fetch" (deprecated) had an optional and experimental
"feature" to fetch only commits and/or trees, which nobody used.
This has been removed.
* The functionality of "$GIT_DIR/info/grafts" has been superseded by
the "refs/replace/" mechanism for some time now, but the internal
code had support for it in many places, which has been cleaned up
in order to drop support of the "grafts" mechanism.
* "git worktree add" learned to check out an existing branch.
* "git --no-pager cmd" did not have short-and-sweet single letter
option. Now it does as "-P".
(merge 7213c28818 js/no-pager-shorthand later to maint).
* "git rebase" learned "--rebase-merges" to transplant the whole
topology of commit graph elsewhere.
* "git status" learned to pay attention to UI related diff
configuration variables such as diff.renames.
* The command line completion mechanism (in contrib/) learned to load
custom completion file for "git $command" where $command is a
custom "git-$command" that the end user has on the $PATH when using
newer version of bash.
* "git send-email" can sometimes offer confirmation dialog "Send this
email?" with choices 'Yes', 'No', 'Quit', and 'All'. A new action
'Edit' has been added to this dialog's choice.
* With merge.renames configuration set to false, the recursive merge
strategy can be told not to spend cycles trying to find renamed
paths and merge them accordingly.
* "git status" learned to honor a new status.renames configuration to
skip rename detection, which could be useful for those who want to
do so without disabling the default rename detection done by the
"git diff" command.
* Command line completion (in contrib/) learned to complete pathnames
for various commands better.
* "git blame" learns to unhighlight uninteresting metadata from the
originating commit on lines that are the same as the previous one,
and also paint lines in different colors depending on the age of
the commit.
* Transfer protocol v2 learned to support the partial clone.
* When a short hexadecimal string is used to name an object but there
are multiple objects that share the string as the prefix of their
names, the code lists these ambiguous candidates in a help message.
These object names are now sorted according to their types for
easier eyeballing.
* "git fetch $there $refspec" that talks over protocol v2 can take
advantage of server-side ref filtering; the code has been extended
so that this mechanism triggers also when fetching with configured
refspec.
* Our HTTP client code used to advertise that we accept gzip encoding
from the other side; instead, just let cURL library to advertise
and negotiate the best one.
* "git p4" learned to "unshelve" shelved commit from P4.
(merge 123f631761 ld/p4-unshelve later to maint).
Performance, Internal Implementation, Development Support etc.
* A "git fetch" from a repository with insane number of refs into a
repository that is already up-to-date still wasted too many cycles
making many lstat(2) calls to see if these objects at the tips
exist as loose objects locally. These lstat(2) calls are optimized
away by enumerating all loose objects beforehand.
It is unknown if the new strategy negatively affects existing use
cases, fetching into a repository with many loose objects from a
repository with small number of refs.
* Git can be built to use either v1 or v2 of the PCRE library, and so
far, the build-time configuration USE_LIBPCRE=YesPlease instructed
the build procedure to use v1, but now it means v2. USE_LIBPCRE1
and USE_LIBPCRE2 can be used to explicitly choose which version to
use, as before.
* The build procedure learned to optionally use symbolic links
(instead of hardlinks and copies) to install "git-foo" for built-in
commands, whose binaries are all identical.
* Conversion from uchar[20] to struct object_id continues.
* The way "git worktree prune" worked internally has been simplified,
by assuming how "git worktree move" moves an existing worktree to a
different place.
* Code clean-up for the "repository" abstraction.
(merge 00a3da2a13 nd/remove-ignore-env-field later to maint).
* Code to find the length to uniquely abbreviate object names based
on packfile content, which is a relatively recent addtion, has been
optimized to use the same fan-out table.
* The mechanism to use parse-options API to automate the command line
completion continues to get extended and polished.
* Copies of old scripted Porcelain commands in contrib/examples/ have
been removed.
* Some tests that rely on the exact hardcoded values of object names
have been updated in preparation for hash function migration.
* Perf-test update.
* Test helper update.
* The effort continues to refactor the internal global data structure
to make it possible to open multiple repositories, work with and
then close them,
* Small test-helper programs have been consolidated into a single
binary.
* API clean-up around ref-filter code.
* Shell completion (in contrib) that gives list of paths have been
optimized somewhat.
* The index file is updated to record the fsmonitor section after a
full scan was made, to avoid wasting the effort that has already
spent.
* Performance measuring framework in t/perf learned to help bisecting
performance regressions.
* Some multi-word source filenames are being renamed to separate
words with dashes instead of underscores.
* An reusable "memory pool" implementation has been extracted from
fast-import.c, which in turn has become the first user of the
mem-pool API.
* A build-time option has been added to allow Git to be told to refer
to its associated files relative to the main binary, in the same
way that has been possible on Windows for quite some time, for
Linux, BSDs and Darwin.
* Precompute and store information necessary for ancestry traversal
in a separate file to optimize graph walking.
* The effort to pass the repository in-core structure throughout the
API continues. This round deals with the code that implements the
refs/replace/ mechanism.
* The build procedure "make DEVELOPER=YesPlease" learned to enable a
bit more warning options depending on the compiler used to help
developers more. There also is "make DEVOPTS=tokens" knob
available now, for those who want to help fixing warnings we
usually ignore, for example.
* A new version of the transport protocol is being worked on.
* The code to interface to GPG has been restructured somewhat to make
it cleaner to integrate with other types of signature systems later.
* The code has been taught to use the duplicated information stored
in the commit-graph file to learn the tree object name for a commit
to avoid opening and parsing the commit object when it makes sense
to do so.
* "git gc" in a large repository takes a lot of time as it considers
to repack all objects into one pack by default. The command has
been taught to pretend as if the largest existing packfile is
marked with ".keep" so that it is left untouched while objects in
other packs and loose ones are repacked.
* The transport protocol v2 is getting updated further.
* The codepath around object-info API has been taught to take the
repository object (which in turn tells the API which object store
the objects are to be located).
* "git pack-objects" needs to allocate tons of "struct object_entry"
while doing its work, and shrinking its size helps the performance
quite a bit.
* The implementation of "git rebase -i --root" has been updated to use
the sequencer machinery more.
* Developer support update, by using BUG() macro instead of die() to
mark codepaths that should not happen more clearly.
* Developer support. Use newer GCC on one of the builds done at
TravisCI.org to get more warnings and errors diagnosed.
* Conversion from uchar[20] to struct object_id continues.
* By code restructuring of submodule merge in merge-recursive,
informational messages from the codepath are now given using the
same mechanism as other output, and honor the merge.verbosity
configuration. The code also learned to give a few new messages
when a submodule three-way merge resolves cleanly when one side
records a descendant of the commit chosen by the other side.
* Avoid unchecked snprintf() to make future code auditing easier.
(merge ac4896f007 jk/snprintf-truncation later to maint).
* Many tests hardcode the raw object names, which would change once
we migrate away from SHA-1. While some of them must test against
exact object names, most of them do not have to use hardcoded
constants in the test. The latter kind of tests have been updated
to test the moral equivalent of the original without hardcoding the
actual object names.
* The list of commands with their various attributes were spread
across a few places in the build procedure, but it now is getting a
bit more consolidated to allow more automation.
* Quite a many tests assumed that newly created refs are made as
loose refs using the files backend, which have been updated to use
proper plumbing like rev-parse and update-ref, to avoid breakage
once we start using different ref backends.
Also contains various documentation updates and code clean-ups.
Fixes since v2.17
-----------------
* "git shortlog cruft" aborted with a BUG message when run outside a
Git repository. The command has been taught to complain about
extra and unwanted arguments on its command line instead in such a
case.
(merge 4aa0161e83 ma/shortlog-revparse later to maint).
* "git stash push -u -- <pathspec>" gave an unnecessary and confusing
error message when there was no tracked files that match the
<pathspec>, which has been fixed.
(merge 353278687e tg/stash-untracked-with-pathspec-fix later to maint).
* "git tag --contains no-such-commit" gave a full list of options
after giving an error message.
(merge 3bb0923f06 ps/contains-id-error-message later to maint).
* "diff-highlight" filter (in contrib/) learned to undertand "git log
--graph" output better.
(merge 4551fbba14 jk/diff-highlight-graph-fix later to maint).
* when refs that do not point at committish are given, "git
filter-branch" gave a misleading error messages. This has been
corrected.
(merge f78ab355e7 yk/filter-branch-non-committish-refs later to maint).
* "git submodule status" misbehaved on a submodule that has been
removed from the working tree.
(merge 74b6bda32f rs/status-with-removed-submodule later to maint).
* When credential helper exits very quickly without reading its
input, it used to cause Git to die with SIGPIPE, which has been
fixed.
(merge a0d51e8d0e eb/cred-helper-ignore-sigpipe later to maint).
* "git rebase --keep-empty" still removed an empty commit if the
other side contained an empty commit (due to the "does an
equivalent patch exist already?" check), which has been corrected.
(merge 3d946165e1 pw/rebase-keep-empty-fixes later to maint).
* Some codepaths, including the refs API, get and keep relative
paths, that go out of sync when the process does chdir(2). The
chdir-notify API is introduced to let these codepaths adjust these
cached paths to the new current directory.
(merge fb9c2d2703 jk/relative-directory-fix later to maint).
* "cd sub/dir && git commit ../path" ought to record the changes to
the file "sub/path", but this regressed long time ago.
(merge 86238e07ef bw/commit-partial-from-subdirectory-fix later to maint).
* Recent introduction of "--log-destination" option to "git daemon"
did not work well when the daemon was run under "--inetd" mode.
(merge e67d906d73 lw/daemon-log-destination later to maint).
* Small fix to the autoconf build procedure.
(merge 249482daf0 es/fread-reads-dir-autoconf-fix later to maint).
* Fix an unexploitable (because the oversized contents are not under
attacker's control) buffer overflow.
(merge d8579accfa bp/fsmonitor-bufsize-fix later to maint).
* Recent simplification of build procedure forgot a bit of tweak to
the build procedure of contrib/mw-to-git/
(merge d8698987f3 ab/simplify-perl-makefile later to maint).
* Moving a submodule that itself has submodule in it with "git mv"
forgot to make necessary adjustment to the nested sub-submodules;
now the codepath learned to recurse into the submodules.
* "git config --unset a.b", when "a.b" is the last variable in an
otherwise empty section "a", left an empty section "a" behind, and
worse yet, a subsequent "git config a.c value" did not reuse that
empty shell and instead created a new one. These have been
(partially) corrected.
(merge c71d8bb38a js/empty-config-section-fix later to maint).
* "git worktree remove" learned that "-f" is a shorthand for
"--force" option, just like for "git worktree add".
(merge d228eea514 sb/worktree-remove-opt-force later to maint).
* The completion script (in contrib/) learned to clear cached list of
command line options upon dot-sourcing it again in a more efficient
way.
(merge 94408dc71c sg/completion-clear-cached later to maint).
* "git svn" had a minor thinko/typo which has been fixed.
(merge 51db271587 ab/git-svn-get-record-typofix later to maint).
* During a "rebase -i" session, the code could give older timestamp
to commits created by later "pick" than an earlier "reword", which
has been corrected.
(merge 12f7babd6b js/ident-date-fix later to maint).
* "git submodule status" did not check the symbolic revision name it
computed for the submodule HEAD is not the NULL, and threw it at
printf routines, which has been corrected.
(merge 0b5e2ea7cf nd/submodule-status-fix later to maint).
* When fed input that already has In-Reply-To: and/or References:
headers and told to add the same information, "git send-email"
added these headers separately, instead of appending to an existing
one, which is a violation of the RFC. This has been corrected.
(merge 256be1d3f0 sa/send-email-dedup-some-headers later to maint).
* "git fast-export" had a regression in v2.15.0 era where it skipped
some merge commits in certain cases, which has been corrected.
(merge be011bbe00 ma/fast-export-skip-merge-fix later to maint).
* The code did not propagate the terminal width to subprocesses via
COLUMNS environment variable, which it now does. This caused
trouble to "git column" helper subprocess when "git tag --column=row"
tried to list the existing tags on a display with non-default width.
(merge b5d5a567fb nd/term-columns later to maint).
* We learned that our source files with ".pl" and ".py" extensions
are Perl and Python files respectively and changes to them are
better viewed as such with appropriate diff drivers.
(merge 7818b619e2 ab/perl-python-attrs later to maint).
* "git rebase -i" sometimes left intermediate "# This is a
combination of N commits" message meant for the human consumption
inside an editor in the final result in certain corner cases, which
has been fixed.
(merge 15ef69314d js/rebase-i-clean-msg-after-fixup-continue later to maint).
* A test to see if the filesystem normalizes UTF-8 filename has been
updated to check what we need to know in a more direct way, i.e. a
path created in NFC form can be accessed with NFD form (or vice
versa) to cope with APFS as well as HFS.
(merge 742ae10e35 tb/test-apfs-utf8-normalization later to maint).
* "git format-patch --cover --attach" created a broken MIME multipart
message for the cover letter, which has been fixed by keeping the
cover letter as plain text file.
(merge 50cd54ef4e bc/format-patch-cover-no-attach later to maint).
* The split-index feature had a long-standing and dormant bug in
certain use of the in-core merge machinery, which has been fixed.
(merge 7db118303a en/unpack-trees-split-index-fix later to maint).
* Asciidoctor gives a reasonable imitation for AsciiDoc, but does not
render illustration in a literal block correctly when indented with
HT by default. The problem is fixed by forcing 8-space tabs.
(merge 379805051d bc/asciidoctor-tab-width later to maint).
* Code clean-up to adjust to a more recent lockfile API convention that
allows lockfile instances kept on the stack.
(merge 0fa5a2ed8d ma/lockfile-cleanup later to maint).
* the_repository->index is not a allocated piece of memory but
repo_clear() indiscriminately attempted to free(3) it, which has
been corrected.
(merge 74373b5f10 nd/repo-clear-keep-the-index later to maint).
* Code clean-up to avoid non-standard-conformant pointer arithmetic.
(merge c112084af9 rs/no-null-ptr-arith-in-fast-export later to maint).
* Code clean-up to turn history traversal more robust in a
semi-corrupt repository.
(merge 8702b30fd7 jk/unavailable-can-be-missing later to maint).
* "git update-ref A B" is supposed to ensure that ref A does not yet
exist when B is a NULL OID, but this check was not done correctly
for pseudo-refs outside refs/ hierarchy, e.g. MERGE_HEAD.
* "git submodule update" and "git submodule add" supported the
"--reference" option to borrow objects from a neighbouring local
repository like "git clone" does, but lacked the more recent
invention "--dissociate". Also "git submodule add" has been taught
to take the "--progress" option.
(merge a0ef29341a cf/submodule-progress-dissociate later to maint).
* Update credential-netrc helper (in contrib/) to allow customizing
the GPG used to decrypt the encrypted .netrc file.
(merge 786ef50a23 lm/credential-netrc later to maint).
* "git submodule update" attempts two different kinds of "git fetch"
against the upstream repository to grab a commit bound at the
submodule's path, but it incorrectly gave up if the first kind
(i.e. a normal fetch) failed, making the second "last resort" one
(i.e. fetching an exact commit object by object name) ineffective.
This has been corrected.
(merge e30d833671 sb/submodule-update-try-harder later to maint).
* Error behaviour of "git grep" when it cannot read the index was
inconsistent with other commands that uses the index, which has
been corrected to error out early.
(merge b2aa84c789 sb/grep-die-on-unreadable-index later to maint).
* We used to call regfree() after regcomp() failed in some codepaths,
which have been corrected.
(merge 17154b1576 ma/regex-no-regfree-after-comp-fail later to maint).
* The import-tars script (in contrib/) has been taught to handle
tarballs with overly long paths that use PAX extended headers.
(merge 12ecea46e3 pa/import-tars-long-names later to maint).
* "git rev-parse Y..." etc. misbehaved when given endpoints were
not committishes.
(merge 0ed556d38f en/rev-parse-invalid-range later to maint).
* "git pull --recurse-submodules --rebase", when the submodule
repository's history did not have anything common between ours and
the upstream's, failed to execute. We need to fetch from them to
continue even in such a case.
(merge 4d36f88be7 jt/submodule-pull-recurse-rebase later to maint).
* "git remote update" can take both a single remote nickname and a
nickname for remote groups, but only one of them was documented.
(merge a97447a42a nd/remote-update-doc later to maint).
* "index-pack --strict" has been taught to make sure that it runs the
final object integrity checks after making the freshly indexed
packfile available to itself.
(merge 3737746120 jk/index-pack-maint later to maint).
* Other minor doc, test and build updates and code cleanups.
(merge 248f66ed8e nd/trace-with-env later to maint).
(merge 14ced5562c ys/bisect-object-id-missing-conversion-fix later to maint).
(merge 5988eb631a ab/doc-hash-brokenness later to maint).
(merge a4d4e32a70 pk/test-avoid-pipe-hiding-exit-status later to maint).
(merge 05e293c1ac jk/flockfile-stdio later to maint).
(merge e9184b0789 jk/t5561-missing-curl later to maint).
(merge b1801b85a3 nd/worktree-move later to maint).
(merge bbd374dd20 ak/bisect-doc-typofix later to maint).
(merge 4855f06fb3 mn/send-email-credential-doc later to maint).
(merge 8523b1e355 en/doc-typoes later to maint).
(merge 43b44ccfe7 js/t5404-path-fix later to maint).
(merge decf711fc1 ps/test-chmtime-get later to maint).
(merge 22d11a6e8e es/worktree-docs later to maint).
(merge 92a5dbbc22 tg/use-git-contacts later to maint).
(merge adc887221f tq/t1510 later to maint).
(merge bed21a8ad6 sg/doc-gc-quote-mismatch-fix later to maint).
(merge 73364e4f10 tz/doc-git-urls-reference later to maint).
(merge cd1e606bad bc/mailmap-self later to maint).
(merge f7997e3682 ao/config-api-doc later to maint).
(merge ee930754d8 jk/apply-p-doc later to maint).
(merge 011b648646 nd/pack-format-doc later to maint).
(merge 87a6bb701a sg/t5310-jgit-bitmap-test later to maint).
(merge f6b82970aa sg/t5516-fixes later to maint).
(merge 4362da078e sg/t7005-spaces-in-filenames-cleanup later to maint).
(merge 7d0ee47c11 js/test-unset-prereq later to maint).
(merge 5356a3c354 ah/misc-doc-updates later to maint).
(merge 92c4a7a129 nd/completion-aliasfiletype-typofix later to maint).
(merge 58bd77b66a nd/pack-unreachable-objects-doc later to maint).
(merge 4ed79d5203 sg/t6500-no-redirect-of-stdin later to maint).
(merge 17b8a2d6cd jk/config-blob-sans-repo later to maint).
(merge 590551ca2c rd/tag-doc-lightweight later to maint).
(merge 44f560fc16 rd/init-typo later to maint).
(merge f156a0934a rd/p4-doc-markup-env later to maint).
(merge 2a00502b14 tg/doc-sec-list later to maint).
(merge 47cc91310a jk/submodule-fsck-loose-fixup later to maint).
^ permalink raw reply [relevance 3%]
* Re: [RFC PATCH 7/7] merge: fix misleading pre-merge check documentation
2018-06-03 6:58 1% ` [RFC PATCH 7/7] merge: fix misleading pre-merge check documentation Elijah Newren
@ 2018-06-07 5:27 3% ` Elijah Newren
0 siblings, 0 replies; 200+ results
From: Elijah Newren @ 2018-06-07 5:27 UTC (permalink / raw)
To: Git Mailing List; +Cc: Jonathan Nieder, Elijah Newren
On Sat, Jun 2, 2018 at 11:58 PM, Elijah Newren <newren@gmail.com> wrote:
> builtin/merge.c contains this important requirement for merge strategies:
>
> ...the index must be in sync with the head commit. The strategies are
> responsible to ensure this.
>
> However, Documentation/git-merge.txt says:
>
> ...[merge will] abort if there are any changes registered in the index
> relative to the `HEAD` commit. (One exception is when the changed
> index entries are in the state that would result from the merge
> already.)
>
> Interestingly, prior to commit c0be8aa06b85 ("Documentation/git-merge.txt:
> Partial rewrite of How Merge Works", 2008-07-19),
> Documentation/git-merge.txt said much more:
>
> ...the index file must match the tree of `HEAD` commit...
> [NOTE]
> This is a bit of a lite. In certain special cases [explained
> in detail]...
> Otherwise, merge will refuse to do any harm to your repository
> (that is...your working tree...and index are left intact).
>
> So, this suggests that the exceptions existed because there were special
> cases where it would case no harm, and potentially be slightly more
> convenient for the user. While the current text in git-merge.txt does
> list a condition under which it would be safe to proceed despite the index
> not matching HEAD, it does not match what is actually implemented, in
> three different ways:
>
> * The exception is written to describe what unpack-trees allows. Not
> all merge strategies allow such an exception, though, making this
> description misleading. 'ours' and 'octopus' merges have strictly
> enforced index==HEAD for a while, and the commit previous to this
> one made 'recursive' do so as well.
>
> * If someone did a three-way content merge on a specific file using
> versions from the relevant commits and staged it prior to running
> merge, then that path would technically satisfy the exception listed
> in git-merge.txt. unpack-trees.c would still error out on the path,
> though, because it defers the three-way content merge logic to other
> parts of the code (resolve, octopus, or recursive) and has no way of
> checking whether the index entry from before the merge will match
> the end result of the merge.
>
> * The exception as implemented in unpack-trees actually only checked
> that the index matched the MERGE_HEAD version of the file and that
> HEAD matched the merge base. Assuming no renames, that would indeed
> provide cases where the index matches the end result we'd get from a
> merge. But renames means unpack-trees is checking that it instead
> matches something other than what the final result will be, risking
> either erroring out when we shouldn't need to, or not erroring out
> when we should and overwriting the user's staged changes.
>
> In addition to the wording behind this exception being misleading, it is
> also somewhat surprising to see how many times the code for the special
> cases were wrong or the check to make sure the index matched head was
> forgotten altogether:
>
> * Prior to commit ee6566e8d70d ("[PATCH] Rewrite read-tree", 2005-09-05),
> there were many cases where an unclean index entry was allowed (look for
> merged_entry_allow_dirty()); it appears that in those cases, the merge
> would have simply overwritten staged changes with the result of the
> merge. Thus, the merge result would have been correct, but the user's
> uncommitted changes could be thrown away without warning.
>
> * Prior to commit 160252f81626 ("git-merge-ours: make sure our index
> matches HEAD", 2005-11-03), the 'ours' merge strategy did not check
> whether the index matched HEAD. If it didn't, the resulting merge
> would include all the staged changes, and thus wasn't really an 'ours'
> strategy.
>
> * Prior to commit 3ec62ad9ffba ("merge-octopus: abort if index does not
> match HEAD", 2016-04-09), 'octopus' merges did not check whether the
> index matched HEAD, also resulting in any staged changes from before
> the commit silently being folded into the resulting merge. commit
> a6ee883b8eb5 ("t6044: new merge testcases for when index doesn't match
> HEAD", 2016-04-09) was also added at the same time to try to test to
> make sure all strategies did the necessary checking for the requirement
> that the index match HEAD. Sadly, it didn't catch all the cases, as
> evidenced by the remainder of this list...
>
> * Prior to commit 65170c07d466 ("merge-recursive: avoid incorporating
> uncommitted changes in a merge", 2017-12-21), merge-recursive simply
> relied on unpack_trees() to do the necessary check, but in one special
> case it avoided calling unpack_trees() entirely and accidentally ended
> up silently including any staged changes from before the merge in the
> resulting merge commit.
>
> * The commit immediately before this one in this series noted that the
> exceptions were written in a way that assumed no renames, making it
> unsafe for merge-recursive to use. merge-recursive was modified to
> use its own check to enforce that index==HEAD.
>
> This history makes it very tempting to go into builtin/merge.c and replace
> the comment that strategies must enforce that index matches HEAD with code
> that just enforces it. At this point, that would only affect the
> 'resolve' strategy; all other strategies have each been modified to
> manually enforce it.
I'm curious if anyone has comments on this last paragraph above.
Would anyone object to strictly enforcing index matches HEAD before
all types of merges?
^ permalink raw reply [relevance 3%]
* [ANNOUNCE] Git v2.18.0-rc1
@ 2018-06-04 13:53 3% Junio C Hamano
0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2018-06-04 13:53 UTC (permalink / raw)
To: git; +Cc: Linux Kernel, git-packagers
A release candidate Git v2.18.0-rc1 is now available for testing
at the usual places. It is comprised of 842 non-merge commits
since v2.17.0, contributed by 65 people, 20 of which are new faces.
I plan to go offline for most of the remainder of the week, and then
tag (hopefully) the last -rc early next week, with any urgent
regression fix accumulated on the list during this week. Happy bug
hunting ;-)
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.18.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.17.0 are as follows.
Welcome to the Git development community!
Bill Ritcher, Birger Skogeng Pedersen, Casey Fitzpatrick,
Dan Jacques, Drew DeVault, Eckhard S. Maaß, Erik E Brady,
Florian Gamböck, Harald Nordgren, Leif Middelschulte,
Loganaden Velvindron, Luis Marsano, Paul-Sebastian Ungureanu,
Pedro Alvarez Piedehierro, Pratik Karki, Ryan Dammrose, Takuto
Ikuta, Tao Qingyun, Wink Saville, and Yuki Kokubun.
Returning contributors who helped this release are as follows.
Thanks for your continued support.
Ævar Arnfjörð Bjarmason, Anders Kaseorg, Andreas Heiduk,
Antonio Ospite, Beat Bolli, Ben Peart, Brandon Williams, brian
m. carlson, Christian Couder, Christian Hesse, Clemens Buchacher,
David Turner, Derrick Stolee, Elijah Newren, Eric Sunshine,
Jameson Miller, Jeff King, Johannes Schindelin, Johannes Sixt,
Jonathan Nieder, Jonathan Tan, Junio C Hamano, Kaartic Sivaraam,
Lars Schneider, Lucas Werkmeister, Luke Diamand, Martin Ågren,
Michal Nazarewicz, Michele Locati, Nguyễn Thái Ngọc Duy,
Olga Telezhnaya, Orgad Shaneh, Philip Oakley, Phillip Wood,
Ramsay Jones, René Scharfe, Robert P. J. Day, Sergey Organov,
Stefan Agner, Stefan Beller, SZEDER Gábor, Taylor Blau, Thomas
Gummerer, Todd Zullinger, and Torsten Bögershausen.
----------------------------------------------------------------
Git 2.18 Release Notes (draft)
==============================
Updates since v2.17
-------------------
UI, Workflows & Features
* Rename detection logic in "diff" family that is used in "merge" has
learned to guess when all of x/a, x/b and x/c have moved to z/a,
z/b and z/c, it is likely that x/d added in the meantime would also
want to move to z/d by taking the hint that the entire directory
'x' moved to 'z'. A bug causing dirty files involved in a rename
to be overwritten during merge has also been fixed as part of this
work. Incidentally, this also avoids updating a file in the
working tree after a (non-trivial) merge whose result matches what
our side originally had.
* "git filter-branch" learned to use a different exit code to allow
the callers to tell the case where there was no new commits to
rewrite from other error cases.
* When built with more recent cURL, GIT_SSL_VERSION can now specify
"tlsv1.3" as its value.
* "git gui" learned that "~/.ssh/id_ecdsa.pub" and
"~/.ssh/id_ed25519.pub" are also possible SSH key files.
(merge 2e2f0288ef bb/git-gui-ssh-key-files later to maint).
* "git gui" performs commit upon CTRL/CMD+ENTER but the
CTRL/CMD+KP_ENTER (i.e. enter key on the numpad) did not have the
same key binding. It now does.
(merge 28a1d94a06 bp/git-gui-bind-kp-enter later to maint).
* "git gui" has been taught to work with old versions of tk (like
8.5.7) that do not support "ttk::style theme use" as a way to query
the current theme.
(merge 4891961105 cb/git-gui-ttk-style later to maint).
* "git rebase" has learned to honor "--signoff" option when using
backends other than "am" (but not "--preserve-merges").
* "git branch --list" during an interrupted "rebase -i" now lets
users distinguish the case where a detached HEAD is being rebased
and a normal branch is being rebased.
* "git mergetools" learned talking to guiffy.
* The scripts in contrib/emacs/ have outlived their usefulness and
have been replaced with a stub that errors out and tells the user
there are replacements.
* The new "checkout-encoding" attribute can ask Git to convert the
contents to the specified encoding when checking out to the working
tree (and the other way around when checking in).
* The "git config" command uses separate options e.g. "--int",
"--bool", etc. to specify what type the caller wants the value to
be interpreted as. A new "--type=<typename>" option has been
introduced, which would make it cleaner to define new types.
* "git config --get" learned the "--default" option, to help the
calling script. Building on top of the above changes, the
"git config" learns "--type=color" type. Taken together, you can
do things like "git config --get foo.color --default blue" and get
the ANSI color sequence for the color given to foo.color variable,
or "blue" if the variable does not exist.
* "git ls-remote" learned an option to allow sorting its output based
on the refnames being shown.
* The command line completion (in contrib/) has been taught that "git
stash save" has been deprecated ("git stash push" is the preferred
spelling in the new world) and does not offer it as a possible
completion candidate when "git stash push" can be.
* "git gc --prune=nonsense" spent long time repacking and then
silently failed when underlying "git prune --expire=nonsense"
failed to parse its command line. This has been corrected.
* Error messages from "git push" can be painted for more visibility.
* "git http-fetch" (deprecated) had an optional and experimental
"feature" to fetch only commits and/or trees, which nobody used.
This has been removed.
* The functionality of "$GIT_DIR/info/grafts" has been superseded by
the "refs/replace/" mechanism for some time now, but the internal
code had support for it in many places, which has been cleaned up
in order to drop support of the "grafts" mechanism.
* "git worktree add" learned to check out an existing branch.
* "git --no-pager cmd" did not have short-and-sweet single letter
option. Now it does as "-P".
(merge 7213c28818 js/no-pager-shorthand later to maint).
* "git rebase" learned "--rebase-merges" to transplant the whole
topology of commit graph elsewhere.
* "git status" learned to pay attention to UI related diff
configuration variables such as diff.renames.
* The command line completion mechanism (in contrib/) learned to load
custom completion file for "git $command" where $command is a
custom "git-$command" that the end user has on the $PATH when using
newer version of bash.
* "git send-email" can sometimes offer confirmation dialog "Send this
email?" with choices 'Yes', 'No', 'Quit', and 'All'. A new action
'Edit' has been added to this dialog's choice.
* With merge.renames configuration set to false, the recursive merge
strategy can be told not to spend cycles trying to find renamed
paths and merge them accordingly.
* "git status" learned to honor a new status.renames configuration to
skip rename detection, which could be useful for those who want to
do so without disabling the default rename detection done by the
"git diff" command.
* Command line completion (in contrib/) learned to complete pathnames
for various commands better.
* "git blame" learns to unhighlight uninteresting metadata from the
originating commit on lines that are the same as the previous one,
and also paint lines in different colors depending on the age of
the commit.
* Transfer protocol v2 learned to support the partial clone.
* When a short hexadecimal string is used to name an object but there
are multiple objects that share the string as the prefix of their
names, the code lists these ambiguous candidates in a help message.
These object names are now sorted according to their types for
easier eyeballing.
* "git fetch $there $refspec" that talks over protocol v2 can take
advantage of server-side ref filtering; the code has been extended
so that this mechanism triggers also when fetching with configured
refspec.
* Our HTTP client code used to advertise that we accept gzip encoding
from the other side; instead, just let cURL library to advertise
and negotiate the best one.
* "git p4" learned to "unshelve" shelved commit from P4.
(merge 123f631761 ld/p4-unshelve later to maint).
Performance, Internal Implementation, Development Support etc.
* A "git fetch" from a repository with insane number of refs into a
repository that is already up-to-date still wasted too many cycles
making many lstat(2) calls to see if these objects at the tips
exist as loose objects locally. These lstat(2) calls are optimized
away by enumerating all loose objects beforehand.
It is unknown if the new strategy negatively affects existing use
cases, fetching into a repository with many loose objects from a
repository with small number of refs.
* Git can be built to use either v1 or v2 of the PCRE library, and so
far, the build-time configuration USE_LIBPCRE=YesPlease instructed
the build procedure to use v1, but now it means v2. USE_LIBPCRE1
and USE_LIBPCRE2 can be used to explicitly choose which version to
use, as before.
* The build procedure learned to optionally use symbolic links
(instead of hardlinks and copies) to install "git-foo" for built-in
commands, whose binaries are all identical.
* Conversion from uchar[20] to struct object_id continues.
* The way "git worktree prune" worked internally has been simplified,
by assuming how "git worktree move" moves an existing worktree to a
different place.
* Code clean-up for the "repository" abstraction.
(merge 00a3da2a13 nd/remove-ignore-env-field later to maint).
* Code to find the length to uniquely abbreviate object names based
on packfile content, which is a relatively recent addtion, has been
optimized to use the same fan-out table.
* The mechanism to use parse-options API to automate the command line
completion continues to get extended and polished.
* Copies of old scripted Porcelain commands in contrib/examples/ have
been removed.
* Some tests that rely on the exact hardcoded values of object names
have been updated in preparation for hash function migration.
* Perf-test update.
* Test helper update.
* The effort continues to refactor the internal global data structure
to make it possible to open multiple repositories, work with and
then close them,
* Small test-helper programs have been consolidated into a single
binary.
* API clean-up around ref-filter code.
* Shell completion (in contrib) that gives list of paths have been
optimized somewhat.
* The index file is updated to record the fsmonitor section after a
full scan was made, to avoid wasting the effort that has already
spent.
* Performance measuring framework in t/perf learned to help bisecting
performance regressions.
* Some multi-word source filenames are being renamed to separate
words with dashes instead of underscores.
* An reusable "memory pool" implementation has been extracted from
fast-import.c, which in turn has become the first user of the
mem-pool API.
* A build-time option has been added to allow Git to be told to refer
to its associated files relative to the main binary, in the same
way that has been possible on Windows for quite some time, for
Linux, BSDs and Darwin.
* Precompute and store information necessary for ancestry traversal
in a separate file to optimize graph walking.
* The effort to pass the repository in-core structure throughout the
API continues. This round deals with the code that implements the
refs/replace/ mechanism.
* The build procedure "make DEVELOPER=YesPlease" learned to enable a
bit more warning options depending on the compiler used to help
developers more. There also is "make DEVOPTS=tokens" knob
available now, for those who want to help fixing warnings we
usually ignore, for example.
* A new version of the transport protocol is being worked on.
* The code to interface to GPG has been restructured somewhat to make
it cleaner to integrate with other types of signature systems later.
* The code has been taught to use the duplicated information stored
in the commit-graph file to learn the tree object name for a commit
to avoid opening and parsing the commit object when it makes sense
to do so.
* "git gc" in a large repository takes a lot of time as it considers
to repack all objects into one pack by default. The command has
been taught to pretend as if the largest existing packfile is
marked with ".keep" so that it is left untouched while objects in
other packs and loose ones are repacked.
* The transport protocol v2 is getting updated further.
* The codepath around object-info API has been taught to take the
repository object (which in turn tells the API which object store
the objects are to be located).
* "git pack-objects" needs to allocate tons of "struct object_entry"
while doing its work, and shrinking its size helps the performance
quite a bit.
* The implementation of "git rebase -i --root" has been updated to use
the sequencer machinery more.
* Developer support update, by using BUG() macro instead of die() to
mark codepaths that should not happen more clearly.
* Developer support. Use newer GCC on one of the builds done at
TravisCI.org to get more warnings and errors diagnosed.
* Conversion from uchar[20] to struct object_id continues.
* By code restructuring of submodule merge in merge-recursive,
informational messages from the codepath are now given using the
same mechanism as other output, and honor the merge.verbosity
configuration. The code also learned to give a few new messages
when a submodule three-way merge resolves cleanly when one side
records a descendant of the commit chosen by the other side.
* Avoid unchecked snprintf() to make future code auditing easier.
(merge ac4896f007 jk/snprintf-truncation later to maint).
* Many tests hardcode the raw object names, which would change once
we migrate away from SHA-1. While some of them must test against
exact object names, most of them do not have to use hardcoded
constants in the test. The latter kind of tests have been updated
to test the moral equivalent of the original without hardcoding the
actual object names.
* The list of commands with their various attributes were spread
across a few places in the build procedure, but it now is getting a
bit more consolidated to allow more automation.
* Quite a many tests assumed that newly created refs are made as
loose refs using the files backend, which have been updated to use
proper plumbing like rev-parse and update-ref, to avoid breakage
once we start using different ref backends.
Also contains various documentation updates and code clean-ups.
Fixes since v2.17
-----------------
* "git shortlog cruft" aborted with a BUG message when run outside a
Git repository. The command has been taught to complain about
extra and unwanted arguments on its command line instead in such a
case.
(merge 4aa0161e83 ma/shortlog-revparse later to maint).
* "git stash push -u -- <pathspec>" gave an unnecessary and confusing
error message when there was no tracked files that match the
<pathspec>, which has been fixed.
(merge 353278687e tg/stash-untracked-with-pathspec-fix later to maint).
* "git tag --contains no-such-commit" gave a full list of options
after giving an error message.
(merge 3bb0923f06 ps/contains-id-error-message later to maint).
* "diff-highlight" filter (in contrib/) learned to undertand "git log
--graph" output better.
(merge 4551fbba14 jk/diff-highlight-graph-fix later to maint).
* when refs that do not point at committish are given, "git
filter-branch" gave a misleading error messages. This has been
corrected.
(merge f78ab355e7 yk/filter-branch-non-committish-refs later to maint).
* "git submodule status" misbehaved on a submodule that has been
removed from the working tree.
(merge 74b6bda32f rs/status-with-removed-submodule later to maint).
* When credential helper exits very quickly without reading its
input, it used to cause Git to die with SIGPIPE, which has been
fixed.
(merge a0d51e8d0e eb/cred-helper-ignore-sigpipe later to maint).
* "git rebase --keep-empty" still removed an empty commit if the
other side contained an empty commit (due to the "does an
equivalent patch exist already?" check), which has been corrected.
(merge 3d946165e1 pw/rebase-keep-empty-fixes later to maint).
* Some codepaths, including the refs API, get and keep relative
paths, that go out of sync when the process does chdir(2). The
chdir-notify API is introduced to let these codepaths adjust these
cached paths to the new current directory.
(merge fb9c2d2703 jk/relative-directory-fix later to maint).
* "cd sub/dir && git commit ../path" ought to record the changes to
the file "sub/path", but this regressed long time ago.
(merge 86238e07ef bw/commit-partial-from-subdirectory-fix later to maint).
* Recent introduction of "--log-destination" option to "git daemon"
did not work well when the daemon was run under "--inetd" mode.
(merge e67d906d73 lw/daemon-log-destination later to maint).
* Small fix to the autoconf build procedure.
(merge 249482daf0 es/fread-reads-dir-autoconf-fix later to maint).
* Fix an unexploitable (because the oversized contents are not under
attacker's control) buffer overflow.
(merge d8579accfa bp/fsmonitor-bufsize-fix later to maint).
* Recent simplification of build procedure forgot a bit of tweak to
the build procedure of contrib/mw-to-git/
(merge d8698987f3 ab/simplify-perl-makefile later to maint).
* Moving a submodule that itself has submodule in it with "git mv"
forgot to make necessary adjustment to the nested sub-submodules;
now the codepath learned to recurse into the submodules.
* "git config --unset a.b", when "a.b" is the last variable in an
otherwise empty section "a", left an empty section "a" behind, and
worse yet, a subsequent "git config a.c value" did not reuse that
empty shell and instead created a new one. These have been
(partially) corrected.
(merge c71d8bb38a js/empty-config-section-fix later to maint).
* "git worktree remove" learned that "-f" is a shorthand for
"--force" option, just like for "git worktree add".
(merge d228eea514 sb/worktree-remove-opt-force later to maint).
* The completion script (in contrib/) learned to clear cached list of
command line options upon dot-sourcing it again in a more efficient
way.
(merge 94408dc71c sg/completion-clear-cached later to maint).
* "git svn" had a minor thinko/typo which has been fixed.
(merge 51db271587 ab/git-svn-get-record-typofix later to maint).
* During a "rebase -i" session, the code could give older timestamp
to commits created by later "pick" than an earlier "reword", which
has been corrected.
(merge 12f7babd6b js/ident-date-fix later to maint).
* "git submodule status" did not check the symbolic revision name it
computed for the submodule HEAD is not the NULL, and threw it at
printf routines, which has been corrected.
(merge 0b5e2ea7cf nd/submodule-status-fix later to maint).
* When fed input that already has In-Reply-To: and/or References:
headers and told to add the same information, "git send-email"
added these headers separately, instead of appending to an existing
one, which is a violation of the RFC. This has been corrected.
(merge 256be1d3f0 sa/send-email-dedup-some-headers later to maint).
* "git fast-export" had a regression in v2.15.0 era where it skipped
some merge commits in certain cases, which has been corrected.
(merge be011bbe00 ma/fast-export-skip-merge-fix later to maint).
* The code did not propagate the terminal width to subprocesses via
COLUMNS environment variable, which it now does. This caused
trouble to "git column" helper subprocess when "git tag --column=row"
tried to list the existing tags on a display with non-default width.
(merge b5d5a567fb nd/term-columns later to maint).
* We learned that our source files with ".pl" and ".py" extensions
are Perl and Python files respectively and changes to them are
better viewed as such with appropriate diff drivers.
(merge 7818b619e2 ab/perl-python-attrs later to maint).
* "git rebase -i" sometimes left intermediate "# This is a
combination of N commits" message meant for the human consumption
inside an editor in the final result in certain corner cases, which
has been fixed.
(merge 15ef69314d js/rebase-i-clean-msg-after-fixup-continue later to maint).
* A test to see if the filesystem normalizes UTF-8 filename has been
updated to check what we need to know in a more direct way, i.e. a
path created in NFC form can be accessed with NFD form (or vice
versa) to cope with APFS as well as HFS.
(merge 742ae10e35 tb/test-apfs-utf8-normalization later to maint).
* "git format-patch --cover --attach" created a broken MIME multipart
message for the cover letter, which has been fixed by keeping the
cover letter as plain text file.
(merge 50cd54ef4e bc/format-patch-cover-no-attach later to maint).
* The split-index feature had a long-standing and dormant bug in
certain use of the in-core merge machinery, which has been fixed.
(merge 7db118303a en/unpack-trees-split-index-fix later to maint).
* Asciidoctor gives a reasonable imitation for AsciiDoc, but does not
render illustration in a literal block correctly when indented with
HT by default. The problem is fixed by forcing 8-space tabs.
(merge 379805051d bc/asciidoctor-tab-width later to maint).
* Code clean-up to adjust to a more recent lockfile API convention that
allows lockfile instances kept on the stack.
(merge 0fa5a2ed8d ma/lockfile-cleanup later to maint).
* the_repository->index is not a allocated piece of memory but
repo_clear() indiscriminately attempted to free(3) it, which has
been corrected.
(merge 74373b5f10 nd/repo-clear-keep-the-index later to maint).
* Code clean-up to avoid non-standard-conformant pointer arithmetic.
(merge c112084af9 rs/no-null-ptr-arith-in-fast-export later to maint).
* Code clean-up to turn history traversal more robust in a
semi-corrupt repository.
(merge 8702b30fd7 jk/unavailable-can-be-missing later to maint).
* "git update-ref A B" is supposed to ensure that ref A does not yet
exist when B is a NULL OID, but this check was not done correctly
for pseudo-refs outside refs/ hierarchy, e.g. MERGE_HEAD.
* "git submodule update" and "git submodule add" supported the
"--reference" option to borrow objects from a neighbouring local
repository like "git clone" does, but lacked the more recent
invention "--dissociate". Also "git submodule add" has been taught
to take the "--progress" option.
(merge a0ef29341a cf/submodule-progress-dissociate later to maint).
* Update credential-netrc helper (in contrib/) to allow customizing
the GPG used to decrypt the encrypted .netrc file.
(merge 786ef50a23 lm/credential-netrc later to maint).
* "git submodule update" attempts two different kinds of "git fetch"
against the upstream repository to grab a commit bound at the
submodule's path, but it incorrectly gave up if the first kind
(i.e. a normal fetch) failed, making the second "last resort" one
(i.e. fetching an exact commit object by object name) ineffective.
This has been corrected.
(merge e30d833671 sb/submodule-update-try-harder later to maint).
* Error behaviour of "git grep" when it cannot read the index was
inconsistent with other commands that uses the index, which has
been corrected to error out early.
(merge b2aa84c789 sb/grep-die-on-unreadable-index later to maint).
* We used to call regfree() after regcomp() failed in some codepaths,
which have been corrected.
(merge 17154b1576 ma/regex-no-regfree-after-comp-fail later to maint).
* The import-tars script (in contrib/) has been taught to handle
tarballs with overly long paths that use PAX extended headers.
(merge 12ecea46e3 pa/import-tars-long-names later to maint).
* "git rev-parse Y..." etc. misbehaved when given endpoints were
not committishes.
(merge 0ed556d38f en/rev-parse-invalid-range later to maint).
* "git pull -recurse-submodules --rebase", when the submodule
repository's history did not have anything common between ours and
the upstream's, failed to execute. We need to fetch from them to
continue even in such a case.
(merge 4d36f88be7 jt/submodule-pull-recurse-rebase later to maint).
* "git remote update" can take both a single remote nickname and a
nickname for remote groups, but only one of them was documented.
(merge a97447a42a nd/remote-update-doc later to maint).
* Other minor doc, test and build updates and code cleanups.
(merge 248f66ed8e nd/trace-with-env later to maint).
(merge 14ced5562c ys/bisect-object-id-missing-conversion-fix later to maint).
(merge 5988eb631a ab/doc-hash-brokenness later to maint).
(merge a4d4e32a70 pk/test-avoid-pipe-hiding-exit-status later to maint).
(merge 05e293c1ac jk/flockfile-stdio later to maint).
(merge e9184b0789 jk/t5561-missing-curl later to maint).
(merge b1801b85a3 nd/worktree-move later to maint).
(merge bbd374dd20 ak/bisect-doc-typofix later to maint).
(merge 4855f06fb3 mn/send-email-credential-doc later to maint).
(merge 8523b1e355 en/doc-typoes later to maint).
(merge 43b44ccfe7 js/t5404-path-fix later to maint).
(merge decf711fc1 ps/test-chmtime-get later to maint).
(merge 22d11a6e8e es/worktree-docs later to maint).
(merge 92a5dbbc22 tg/use-git-contacts later to maint).
(merge adc887221f tq/t1510 later to maint).
(merge bed21a8ad6 sg/doc-gc-quote-mismatch-fix later to maint).
(merge 73364e4f10 tz/doc-git-urls-reference later to maint).
(merge cd1e606bad bc/mailmap-self later to maint).
(merge f7997e3682 ao/config-api-doc later to maint).
(merge ee930754d8 jk/apply-p-doc later to maint).
(merge 011b648646 nd/pack-format-doc later to maint).
(merge 87a6bb701a sg/t5310-jgit-bitmap-test later to maint).
(merge f6b82970aa sg/t5516-fixes later to maint).
(merge 4362da078e sg/t7005-spaces-in-filenames-cleanup later to maint).
(merge 7d0ee47c11 js/test-unset-prereq later to maint).
(merge 5356a3c354 ah/misc-doc-updates later to maint).
(merge 92c4a7a129 nd/completion-aliasfiletype-typofix later to maint).
(merge 58bd77b66a nd/pack-unreachable-objects-doc later to maint).
(merge 4ed79d5203 sg/t6500-no-redirect-of-stdin later to maint).
(merge 17b8a2d6cd jk/config-blob-sans-repo later to maint).
(merge 590551ca2c rd/tag-doc-lightweight later to maint).
(merge 44f560fc16 rd/init-typo later to maint).
(merge f156a0934a rd/p4-doc-markup-env later to maint).
(merge 2a00502b14 tg/doc-sec-list later to maint).
----------------------------------------------------------------
Changes since v2.17.0 are as follows:
Anders Kaseorg (1):
Documentation/git-bisect.txt: git bisect term → git bisect terms
Andreas Heiduk (9):
git-svn: search --authors-prog in PATH too
git-svn: allow empty email-address using authors-prog and authors-file
doc: improve formatting in githooks.txt
doc: align 'diff --no-index' in text and synopsis
doc: clarify ignore rules for git ls-files
doc: add '-d' and '-o' for 'git push'
git-svn: remove ''--add-author-from' for 'commit-diff'
doc: add note about shell quoting to revision.txt
doc: normalize [--options] to [options] in git-diff
Antonio Ospite (1):
doc: fix config API documentation about config_with_options
Beat Bolli (1):
git-gui: search for all current SSH key types
Ben Peart (7):
fsmonitor: fix incorrect buffer size when printing version number
fsmonitor: force index write after full scan
test-drop-caches: simplify delay loading of NtSetSystemInformation
merge: update documentation for {merge,diff}.renameLimit
merge: add merge.renames config setting
merge: pass aggressive when rename detection is turned off
add status config and command line options for rename detection
Bill Ritcher (1):
mergetools: add support for guiffy
Birger Skogeng Pedersen (1):
git-gui: bind CTRL/CMD+numpad ENTER to do_commit
Brandon Williams (79):
pkt-line: introduce packet_read_with_status
pkt-line: allow peeking a packet line without consuming it
pkt-line: add delim packet support
upload-pack: convert to a builtin
upload-pack: factor out processing lines
transport: use get_refs_via_connect to get refs
connect: convert get_remote_heads to use struct packet_reader
connect: discover protocol version outside of get_remote_heads
transport: store protocol version
protocol: introduce enum protocol_version value protocol_v2
test-pkt-line: introduce a packet-line test helper
serve: introduce git-serve
ls-refs: introduce ls-refs server command
connect: request remote refs using v2
transport: convert get_refs_list to take a list of ref prefixes
transport: convert transport_get_remote_refs to take a list of ref prefixes
ls-remote: pass ref prefixes when requesting a remote's refs
fetch: pass ref prefixes when fetching
push: pass ref prefixes when pushing
upload-pack: introduce fetch server command
fetch-pack: perform a fetch using v2
fetch-pack: support shallow requests
connect: refactor git_connect to only get the protocol version once
connect: don't request v2 when pushing
transport-helper: remove name parameter
transport-helper: refactor process_connect_service
transport-helper: introduce stateless-connect
pkt-line: add packet_buf_write_len function
remote-curl: create copy of the service name
remote-curl: store the protocol version the server responded with
http: allow providing extra headers for http requests
http: don't always add Git-Protocol header
http: eliminate "# service" line when using protocol v2
remote-curl: implement stateless-connect command
remote-curl: don't request v2 when pushing
commit: allow partial commits with relative paths
serve: introduce the server-option capability
ls-remote: send server options when using protocol v2
fetch: send server options when using protocol v2
refspec: move refspec parsing logic into its own file
refspec: rename struct refspec to struct refspec_item
refspec: factor out parsing a single refspec
refspec: introduce struct refspec
refspec: convert valid_fetch_refspec to use parse_refspec
submodule--helper: convert push_check to use struct refspec
pull: convert get_tracking_branch to use refspec_item_init
transport: convert transport_push to use struct refspec
remote: convert check_push_refs to use struct refspec
remote: convert match_push_refs to use struct refspec
clone: convert cmd_clone to use refspec_item_init
fast-export: convert to use struct refspec
remote: convert push refspecs to struct refspec
remote: convert fetch refspecs to struct refspec
remote: remove add_prune_tags_to_fetch_refspec
transport-helper: convert to use struct refspec
fetch: convert fetch_one to use struct refspec
fetch: convert refmap to use struct refspec
refspec: remove the deprecated functions
fetch: convert do_fetch to take a struct refspec
fetch: convert get_ref_map to take a struct refspec
fetch: convert prune_refs to take a struct refspec
remote: convert get_stale_heads to take a struct refspec
remote: convert apply_refspecs to take a struct refspec
remote: convert query_refspecs to take a struct refspec
remote: convert get_ref_match to take a struct refspec
remote: convert match_explicit_refs to take a struct refspec
push: check for errors earlier
push: convert to use struct refspec
transport: convert transport_push to take a struct refspec
send-pack: store refspecs in a struct refspec
transport: remove transport_verify_remote_names
http-push: store refspecs in a struct refspec
remote: convert match_push_refs to take a struct refspec
remote: convert check_push_refs to take a struct refspec
submodule: convert push_unpushed_submodules to take a struct refspec
refspec: consolidate ref-prefix generation logic
fetch: generate ref-prefixes when using a configured refspec
remote-curl: accept all encodings supported by curl
remote-curl: accept compressed responses with protocol v2
Casey Fitzpatrick (3):
submodule: clean up substitutions in script
submodule: add --progress option to add command
submodule: add --dissociate option to add/update commands
Christian Couder (7):
perf/aggregate: add display_dir()
perf/aggregate: add --sort-by=regression option
perf/run: add --subsection option
t/perf: add scripts to bisect performance regressions
perf/aggregate: use Getopt::Long for option parsing
perf/bisect_run_script: disable codespeed
t990X: use '.git/objects' as 'deep inside .git' path
Christian Hesse (2):
perl: fix installing modules from contrib
Makefile: mark perllibdir as a .PHONY target
Clemens Buchacher (2):
git-gui: workaround ttk:style theme use
completion: improve ls-files filter performance
Dan Jacques (3):
Makefile: generate Perl header from template file
Makefile: add Perl runtime prefix support
exec_cmd: RUNTIME_PREFIX on some POSIX systems
David Turner (1):
t: make many tests depend less on the refs being files
Derrick Stolee (20):
packfile: define and use bsearch_pack()
sha1_name: use bsearch_pack() for abbreviations
csum-file: rename hashclose() to finalize_hashfile()
csum-file: refactor finalize_hashfile() method
commit-graph: add format document
graph: add commit graph design document
commit-graph: create git-commit-graph builtin
commit-graph: implement write_commit_graph()
commit-graph: implement git-commit-graph write
commit-graph: implement git commit-graph read
commit-graph: add core.commitGraph setting
commit-graph: close under reachability
commit: integrate commit graph with commit parsing
commit-graph: read only from specific pack-indexes
commit-graph: build graph from starting commits
commit-graph: implement "--append" option
treewide: rename tree to maybe_tree
commit: create get_commit_tree() method
treewide: replace maybe_tree with accessor methods
commit-graph: lazy-load trees for commits
Drew DeVault (1):
git-send-email: allow re-editing of message
Eckhard S. Maaß (1):
wt-status: use settings from git_diff_ui_config
Elijah Newren (72):
directory rename detection: basic testcases
directory rename detection: directory splitting testcases
directory rename detection: testcases to avoid taking detection too far
directory rename detection: partially renamed directory testcase/discussion
directory rename detection: files/directories in the way of some renames
directory rename detection: testcases checking which side did the rename
directory rename detection: more involved edge/corner testcases
directory rename detection: testcases exploring possibly suboptimal merges
directory rename detection: miscellaneous testcases to complete coverage
directory rename detection: tests for handling overwriting untracked files
directory rename detection: tests for handling overwriting dirty files
merge-recursive: move the get_renames() function
merge-recursive: introduce new functions to handle rename logic
merge-recursive: fix leaks of allocated renames and diff_filepairs
merge-recursive: make !o->detect_rename codepath more obvious
merge-recursive: split out code for determining diff_filepairs
merge-recursive: make a helper function for cleanup for handle_renames
merge-recursive: add get_directory_renames()
merge-recursive: check for directory level conflicts
merge-recursive: add computation of collisions due to dir rename & merging
merge-recursive: check for file level conflicts then get new name
merge-recursive: when comparing files, don't include trees
merge-recursive: apply necessary modifications for directory renames
merge-recursive: avoid clobbering untracked files with directory renames
merge-recursive: fix overwriting dirty files involved in renames
merge-recursive: fix remaining directory rename + dirty overwrite cases
directory rename detection: new testcases showcasing a pair of bugs
merge-recursive: avoid spurious rename/rename conflict from dir renames
merge-recursive: ensure we write updates for directory-renamed file
Documentation: fix several one-character-off spelling errors
Documentation: normalize spelling of 'normalised'
directory rename detection: basic testcases
directory rename detection: directory splitting testcases
directory rename detection: testcases to avoid taking detection too far
directory rename detection: partially renamed directory testcase/discussion
directory rename detection: files/directories in the way of some renames
directory rename detection: testcases checking which side did the rename
directory rename detection: more involved edge/corner testcases
directory rename detection: testcases exploring possibly suboptimal merges
directory rename detection: miscellaneous testcases to complete coverage
directory rename detection: tests for handling overwriting untracked files
directory rename detection: tests for handling overwriting dirty files
merge-recursive: move the get_renames() function
merge-recursive: introduce new functions to handle rename logic
merge-recursive: fix leaks of allocated renames and diff_filepairs
merge-recursive: make !o->detect_rename codepath more obvious
merge-recursive: split out code for determining diff_filepairs
merge-recursive: make a helper function for cleanup for handle_renames
Make running git under other debugger-like programs easy
unpack_trees: fix breakage when o->src_index != o->dst_index
merge-recursive: add get_directory_renames()
merge-recursive: check for directory level conflicts
merge-recursive: add computation of collisions due to dir rename & merging
merge-recursive: check for file level conflicts then get new name
merge-recursive: when comparing files, don't include trees
merge-recursive: apply necessary modifications for directory renames
merge-recursive: avoid clobbering untracked files with directory renames
merge-recursive: fix overwriting dirty files involved in renames
merge-recursive: fix remaining directory rename + dirty overwrite cases
directory rename detection: new testcases showcasing a pair of bugs
merge-recursive: avoid spurious rename/rename conflict from dir renames
merge-recursive: improve add_cacheinfo error handling
merge-recursive: move more is_dirty handling to merge_content
merge-recursive: avoid triggering add_cacheinfo error with dirty mod
t6046: testcases checking whether updates can be skipped in a merge
merge-recursive: fix was_tracked() to quit lying with some renamed paths
merge-recursive: fix remainder of was_dirty() to use original index
merge-recursive: make "Auto-merging" comment show for other merges
merge-recursive: fix check for skipability of working tree updates
merge-recursive: provide pair of `unpack_trees_{start,finish}()`
rev-parse: check lookup'ed commit references for NULL
RelNotes: remove duplicate release note
Eric Sunshine (5):
t3200: verify "branch --list" sanity when rebasing from detached HEAD
t2028: tighten grep expression to make "move worktree" test more robust
git-worktree.txt: recommend 'git worktree remove' over manual deletion
git-worktree.txt: unify command-line prompt in example blocks
configure.ac: fix botched FREAD_READS_DIRECTORIES check
Erik E Brady (1):
credential: ignore SIGPIPE when writing to credential helpers
Florian Gamböck (1):
completion: load completion file for external subcommand
Harald Nordgren (1):
ls-remote: create '--sort' option
Jameson Miller (3):
fast-import: rename mem_pool type to mp_block
fast-import: introduce mem_pool type
mem-pool: move reusable parts of memory pool into its own file
Jeff King (54):
diff-highlight: correct test graph diagram
diff-highlight: use test_tick in graph test
diff-highlight: prefer "echo" to "cat" in tests
diff-highlight: test interleaved parallel lines of history
diff-highlight: test graphs with --color
diff-highlight: use flush() helper consistently
diff-highlight: detect --graph by indent
set_git_dir: die when setenv() fails
add chdir-notify API
set_work_tree: use chdir_notify
refs: use chdir_notify to update cached relative paths
config: move flockfile() closer to unlocked functions
t5561: drop curl stderr redirects
t5561: skip tests if curl is not available
ref-filter: use "struct object_id" consistently
ref-filter: make ref_array_item allocation more consistent
ref-filter: factor ref_array pushing into its own function
t7004: fix mistaken tag name
gpg-interface: handle bool user.signingkey
gpg-interface: modernize function declarations
gpg-interface: use size_t for signature buffer size
gpg-interface: fix const-correctness of "eol" pointer
gpg-interface: extract gpg line matching helper
gpg-interface: find the last gpg signature line
apply: clarify "-p" documentation
pager: set COLUMNS to term_columns()
mark_tree_contents_uninteresting(): drop missing object check
mark_parents_uninteresting(): drop missing object check
mark_parents_uninteresting(): replace list with stack
mark_parents_uninteresting(): avoid most allocation
get_main_ref_store: BUG() when outside a repository
config: die when --blob is used outside a repository
http: use strbufs instead of fixed buffers
log_write_email_headers: use strbufs
shorten_unambiguous_ref: use xsnprintf
fmt_with_err: add a comment that truncation is OK
submodule-config: verify submodule names as paths
is_ntfs_dotgit: use a size_t for traversing string
is_hfs_dotgit: match other .git files
skip_prefix: add case-insensitive variant
verify_path: drop clever fallthrough
verify_dotfile: mention case-insensitivity in comment
update-index: stat updated files earlier
verify_path: disallow symlinks in .gitmodules
index-pack: make fsck error message more specific
fsck: simplify ".git" check
fsck: actually fsck blob data
fsck: detect gitmodules files
fsck: handle promisor objects in .gitmodules check
fsck: check .gitmodules content
fsck: call fsck_finish() after fscking objects
unpack-objects: call fsck_finish() after fscking objects
index-pack: check .gitmodules files with --strict
fsck: complain when .gitmodules is a symlink
Johannes Schindelin (68):
git_config_set: fix off-by-two
t1300: rename it to reflect that `repo-config` was deprecated
t1300: demonstrate that --replace-all can "invent" newlines
config --replace-all: avoid extra line breaks
t1300: avoid relying on a bug
t1300: remove unreasonable expectation from TODO
t5404: relax overzealous test
t1300: add a few more hairy examples of sections becoming empty
t1300: `--unset-all` can leave an empty section behind (bug)
config: introduce an optional event stream while parsing
config: avoid using the global variable `store`
config_set_store: rename some fields for consistency
git_config_set: do not use a state machine
git_config_set: make use of the config parser's event stream
git config --unset: remove empty sections (in the common case)
git_config_set: reuse empty sections
exec_cmd: provide a new-style RUNTIME_PREFIX helper for Windows
mingw/msvc: use the new-style RUNTIME_PREFIX helper
color: introduce support for colorizing stderr
push: test to verify that push errors are colored
config: document the settings to colorize push errors/hints
gettext: avoid initialization if the locale dir is not present
git_setup_gettext: plug memory leak
sequencer: avoid using errno clobbered by rollback_lock_file()
sequencer: make rearrange_squash() a bit more obvious
sequencer: refactor how original todo list lines are accessed
sequencer: offer helpful advice when a command was rescheduled
sequencer: introduce new commands to reset the revision
sequencer: introduce the `merge` command
sequencer: fast-forward `merge` commands, if possible
rebase-helper --make-script: introduce a flag to rebase merges
rebase: introduce the --rebase-merges option
sequencer: make refs generated by the `label` command worktree-local
sequencer: handle post-rewrite for merge commands
rebase --rebase-merges: avoid "empty merges"
pull: accept --rebase=merges to recreate the branch topology
rebase -i: introduce --rebase-merges=[no-]rebase-cousins
rebase -i --rebase-merges: add a section to the man page
argv_array: offer to split a string by whitespace
commit: Let the callback of for_each_mergetag return on error
replace: avoid using die() to indicate a bug
tests: introduce test_unset_prereq, for debugging
replace: "libify" create_graft() and callees
replace: prepare create_graft() for converting graft files wholesale
replace: introduce --convert-graft-file
Add a test for `git replace --convert-graft-file`
Deprecate support for .git/info/grafts
filter-branch: stop suggesting to use grafts
technical/shallow: stop referring to grafts
technical/shallow: describe why shallow cannot use replace refs
Remove obsolete script to convert grafts to replace refs
rebase -i: demonstrate bugs with fixup!/squash! commit messages
rebase -i: Handle "combination of <n> commits" with GETTEXT_POISON
sequencer: always commit without editing when asked for
rebase --skip: clean up commit message after a failed fixup/squash
sequencer: extract helper to update active_cache_tree
sequencer: learn about the special "fake root commit" handling
rebase -i --root: let the sequencer handle even the initial part
sequencer: allow introducing new root commits
rebase --rebase-merges: a "merge" into a new root is a fast-forward
rebase --rebase-merges: root commits can be cousins, too
test-tool: help verifying BUG() code paths
run-command: use BUG() to report bugs, not die()
Replace all die("BUG: ...") calls by BUG() ones
Convert remaining die*(BUG) messages
config: a user-provided invalid section is not a BUG
is_ntfs_dotgit: match other .git files
is_{hfs,ntfs}_dotgitmodules: add tests
Johannes Sixt (2):
sequencer: reset the committer date before commits
git: add -P as a short option for --no-pager
Jonathan Nieder (6):
sha1_file: allow map_sha1_file_1 to handle arbitrary repositories
sha1_file: allow sha1_loose_object_info to handle arbitrary repositories
Makefile: remove unused @@PERLLIBDIR@@ substitution variable
Makefile: quote $INSTLIBDIR when passing it to sed
packfile: add repository argument to packed_object_info
fetch: do not pass ref-prefixes for fetch by exact SHA1
Jonathan Tan (5):
grep: remove "repo" arg from non-supporting funcs
upload-pack: fix error message typo
upload-pack: read config when serving protocol v2
{fetch,upload}-pack: support filter in protocol v2
submodule: do not pass null OID to setup_revisions
Junio C Hamano (21):
stash: fix nonsense pipeline
The first batch for 2.18 cycle
The second batch for 2.18
The third batch for 2.18
Revert "Merge branch 'en/rename-directory-detection'"
gc: do not upcase error message shown with die()
parseopt: handle malformed --expire arguments more nicely
The fourth batch for 2.18
The fifth batch for 2.18
argv-array: return the pushed string from argv_push*()
Git 2.13.7
Git 2.14.4
Git 2.15.2
Git 2.16.4
Git 2.17.1
The sixth batch for 2.18
The seventh batch for 2.18
Git 2.18-rc0
refspec-api: avoid uninitialized field in refspec item
A bit more topics before -rc1
Git 2.18-rc1
Kaartic Sivaraam (1):
branch --list: print useful info whilst interactive rebasing a detached HEAD
Lars Schneider (10):
strbuf: remove unnecessary NUL assignment in xstrdup_tolower()
strbuf: add xstrdup_toupper()
strbuf: add a case insensitive starts_with()
utf8: teach same_encoding() alternative UTF encoding names
utf8: add function to detect prohibited UTF-16/32 BOM
utf8: add function to detect a missing UTF-16/32 BOM
convert: add 'working-tree-encoding' attribute
convert: check for detectable errors in UTF encodings
convert: add tracing for 'working-tree-encoding' attribute
convert: add round trip check based on 'core.checkRoundtripEncoding'
Leif Middelschulte (1):
merge-recursive: give notice when submodule commit gets fast-forwarded
Loganaden Velvindron (1):
http: allow use of TLS 1.3
Lucas Werkmeister (1):
daemon.c: fix condition for redirecting stderr
Luis Marsano (2):
git-credential-netrc: adapt to test framework for git
git-credential-netrc: accept gpg option
Luke Diamand (1):
git-p4: add unshelve command
Martin Ågren (24):
git-shortlog.txt: reorder usages
shortlog: add usage-string for stdin-reading
shortlog: disallow left-over arguments outside repo
doc: convert \--option to --option
doc: convert [\--] to [--]
git-[short]log.txt: unify quoted standalone --
git-submodule.txt: quote usage in monospace, drop backslash
fast-export: fix regression skipping some merge-commits
http-fetch: make `-a` standard behaviour
walker: drop fields of `struct walker` which are always 1
t/helper/test-write-cache: clean up lock-handling
refs.c: do not die if locking fails in `write_pseudoref()`
refs.c: do not die if locking fails in `delete_pseudoref()`
lock_file: make function-local locks non-static
lock_file: move static locks into functions
refs.c: refer to "object ID", not "sha1", in error messages
t1400: add tests around adding/deleting pseudorefs
refs: handle zero oid for pseudorefs
merge: setup `opts` later in `checkout_fast_forward()`
config: free resources of `struct config_store_data`
config: let `config_store_data_clear()` handle `value_regex`
config: let `config_store_data_clear()` handle `key`
regex: do not call `regfree()` if compilation fails
unpack_trees_options: free messages when done
Michal Nazarewicz (1):
send-email: simplify Gmail example in the documentation
Michele Locati (1):
filter-branch: return 2 when nothing to rewrite
Nguyễn Thái Ngọc Duy (108):
repository: initialize the_repository in main()
repository.c: move env-related setup code back to environment.c
repository.c: delete dead functions
sha1_file.c: move delayed getenv(altdb) back to setup_git_env()
repository: delete ignore_env member
gc.txt: more details about what gc does
worktree: delete dead code
worktree prune: improve prune logic when worktree is moved
repository.h: add comment and clarify repo_set_gitdir
git.c: move cmd_struct declaration up
git.c: add hidden option --list-parseopt-builtins
completion: mention the oldest version we need to support
completion: factor out _git_xxx calling code
completion: add --option completion for most builtin commands
completion: delete option-only completion commands
completion: use __gitcomp_builtin in _git_ls_tree
completion: use __gitcomp_builtin in _git_cherry
packfile: keep prepare_packed_git() private
t/helper: add an empty test-tool program
t/helper: merge test-chmtime into test-tool
t/helper: merge test-sha1 into test-tool
t/helper: merge test-lazy-init-name-hash into test-tool
t/helper: merge test-config into test-tool
t/helper: merge test-ctype into test-tool
t/helper: merge test-date into test-tool
t/helper: merge (unused) test-delta into test-tool
t/helper: merge test-drop-caches into test-tool
t/helper: merge test-dump-cache-tree into test-tool
t/helper: merge test-dump-split-index into test-tool
t/helper: merge test-example-decorate into test-tool
t/helper: merge test-genrandom into test-tool
t/helper: merge test-hashmap into test-tool
t/helper: merge test-index-version into test-tool
t/helper: merge (unused) test-match-trees into test-tool
t/helper: merge (unused) test-mergesort into test-tool
t/helper: merge test-mktemp into test-tool
t/helper: merge test-online-cpus into test-tool
t/helper: merge test-path-utils into test-tool
t/helper: merge test-prio-queue into test-tool
t/helper: merge test-read-cache into test-tool
t/helper: merge test-ref-store into test-tool
t/helper: merge test-regex into test-tool
t/helper: merge test-revision-walking into test-tool
t/helper: merge test-run-command into test-tool
t/helper: merge test-scrap-cache-tree into test-tool
t/helper: merge test-sha1-array into test-tool
t/helper: merge test-sigchain into test-tool
t/helper: merge test-strcmp-offset into test-tool
t/helper: merge test-string-list into test-tool
t/helper: merge test-submodule-config into test-tool
t/helper: merge test-subprocess into test-tool
t/helper: merge test-urlmatch-normalization into test-tool
t/helper: merge test-wildmatch into test-tool
t/helper: merge test-write-cache into test-tool
trace.c: export trace_setup_key
read-cache.c: make $GIT_TEST_SPLIT_INDEX boolean
pack-objects: a bit of document about struct object_entry
pack-objects: turn type and in_pack_type to bitfields
pack-objects: use bitfield for object_entry::dfs_state
pack-objects: use bitfield for object_entry::depth
pack-objects: move in_pack_pos out of struct object_entry
pack-objects: move in_pack out of struct object_entry
pack-objects: refer to delta objects by index instead of pointer
pack-objects: shrink z_delta_size field in struct object_entry
pack-objects: don't check size when the object is bad
pack-objects: clarify the use of object_entry::size
pack-objects: shrink size field in struct object_entry
pack-objects: shrink delta_size field in struct object_entry
pack-objects: reorder members to shrink struct object_entry
ci: exercise the whole test suite with uncommon code in pack-objects
t7700: have closing quote of a test at the beginning of line
repack: add --keep-pack option
gc: add --keep-largest-pack option
gc: add gc.bigPackThreshold config
gc: handle a corner case in gc.bigPackThreshold
gc --auto: exclude base pack if not enough mem to "repack -ad"
pack-objects: show some progress when counting kept objects
connect.c: mark die_initial_contact() NORETURN
Makefile: detect compiler and enable more warnings in DEVELOPER=1
submodule--helper: don't print null in 'submodule status'
doc: keep first level section header in upper case
pack-objects: validation and documentation about unreachable options
completion: fix misspelled config key aliasesfiletype
repository: fix free problem with repo_clear(the_repository)
generate-cmds.sh: factor out synopsis extract code
generate-cmds.sh: export all commands to command-list.h
help: use command-list.h for common command list
Remove common-cmds.h
pack-format.txt: more details on pack file format
column: fix off-by-one default width
commit.h: rearrange 'index' to shrink struct commit
git.c: convert --list-* to --list-cmds=*
git --list-cmds: collect command list in a string_list
completion: implement and use --list-cmds=main,others
git: support --list-cmds=list-<category>
help: add "-a --verbose" to list all commands with synopsis
help: use command-list.txt for the source of guides
command-list.txt: documentation and guide line
completion: let git provide the completable command list
completion: reduce completable command list
Move declaration for alias.c to alias.h
completion: add and use --list-cmds=nohelpers
completion: add and use --list-cmds=alias
completion: allow to customize the completable command list
travis-ci: run gcc-8 on linux-gcc jobs
Use OPT_SET_INT_F() for cmdline option specification
remote.txt: update documentation for 'update' command
remote: doc typofix
Olga Telezhnaya (6):
ref-filter: add shortcut to work with strbufs
ref-filter: start adding strbufs with errors
ref-filter: add return value && strbuf to handlers
ref-filter: change parsing function error handling
ref-filter: add return value to parsers
ref-filter: libify get_ref_atom_value()
Orgad Shaneh (1):
git-rebase--interactive: fix copy-paste mistake
Paul-Sebastian Ungureanu (2):
parse-options: do not show usage upon invalid option value
t/helper: 'test-chmtime (--get|-g)' to print only the mtime
Pedro Alvarez Piedehierro (1):
import-tars: read overlong names from pax extended header
Philip Oakley (1):
Avoid multiple PREFIX definitions
Phillip Wood (7):
rebase --root: stop assuming squash_onto is unset
rebase -i --keep-empty: don't prune empty commits
rebase: respect --no-keep-empty
rebase: extend --signoff support
rebase -p: error out if --signoff is given
rebase --keep-empty: always use interactive rebase
rebase --rebase-merges: add test for --keep-empty
Pratik Karki (1):
test: avoid pipes in git related commands for test
Ramsay Jones (1):
BUG_exit_code: fix sparse "symbol not declared" warning
René Scharfe (8):
sha1_name: use bsearch_pack() in unique_in_pack()
bisect: use oid_to_hex() for converting object_id hashes to hex strings
run-command: use strbuf_addstr() for adding a string to a strbuf
submodule: check for NULL return of get_submodule_ref_store()
replace_object: use oidmap
fast-export: avoid NULL pointer arithmetic
t5512: run git fetch inside test
fsmonitor: use internal argv_array of struct child_process
Robert P. J. Day (4):
Use proper syntax for replaceables in command docs
tag: clarify in the doc that a tag can refer to a non-commit object
init: fix grammar in "templates not found" msg
p4.txt: Use backquotes for variable names
Ryan Dammrose (1):
push: colorize errors
SZEDER Gábor (22):
test_must_be_empty: simplify file existence check
t9902-completion: add tests demonstrating issues with quoted pathnames
completion: move __git_complete_index_file() next to its helpers
completion: simplify prefix path component handling during path completion
completion: support completing non-ASCII pathnames
completion: improve handling quoted paths on the command line
completion: let 'ls-files' and 'diff-index' filter matching paths
completion: use 'awk' to strip trailing path components
t9902-completion: ignore COMPREPLY element order in some tests
completion: remove repeated dirnames with 'awk' during path completion
completion: improve handling quoted paths in 'git ls-files's output
completion: fill COMPREPLY directly when completing paths
completion: reduce overhead of clearing cached --options
docs/git-gc: fix minor rendering issue
coccinelle: avoid wrong transformation suggestions from commit.cocci
t6050-replace: don't disable stdin for the whole test script
t5310-pack-bitmaps: make JGit tests work with GIT_TEST_SPLIT_INDEX
t5516-fetch-push: fix 'push with dry-run' test
t5516-fetch-push: fix broken &&-chain
t7005-editor: get rid of the SPACES_IN_FILENAMES prereq
completion: don't return with error from __gitcomp_file_direct()
t9902-completion: exercise __git_complete_index_file() directly
Sergey Organov (1):
glossary: substitute "ancestor" for "direct ancestor" in 'push' description.
Stefan Agner (1):
send-email: avoid duplicate In-Reply-To/References
Stefan Beller (81):
repository: introduce raw object store field
object-store: migrate alternates struct and functions from cache.h
object-store: move alt_odb_list and alt_odb_tail to object store
object-store: free alt_odb_list
object-store: move packed_git and packed_git_mru to object store
object-store: close all packs upon clearing the object store
pack: move prepare_packed_git_run_once to object store
pack: move approximate object count to object store
sha1_file: add raw_object_store argument to alt_odb_usable
sha1_file: add repository argument to link_alt_odb_entry
sha1_file: add repository argument to read_info_alternates
sha1_file: add repository argument to link_alt_odb_entries
sha1_file: add repository argument to prepare_alt_odb
sha1_file: allow link_alt_odb_entries to handle arbitrary repositories
sha1_file: allow prepare_alt_odb to handle arbitrary repositories
sha1_file: add repository argument to sha1_file_name
sha1_file: add repository argument to stat_sha1_file
sha1_file: add repository argument to open_sha1_file
sha1_file: add repository argument to map_sha1_file_1
sha1_file: add repository argument to map_sha1_file
sha1_file: add repository argument to sha1_loose_object_info
sha1_file: allow sha1_file_name to handle arbitrary repositories
sha1_file: allow stat_sha1_file to handle arbitrary repositories
sha1_file: allow open_sha1_file to handle arbitrary repositories
sha1_file: allow map_sha1_file to handle arbitrary repositories
packfile: allow prepare_packed_git_mru to handle arbitrary repositories
packfile: allow rearrange_packed_git to handle arbitrary repositories
packfile: allow install_packed_git to handle arbitrary repositories
packfile: add repository argument to prepare_packed_git_one
packfile: add repository argument to prepare_packed_git
packfile: add repository argument to reprepare_packed_git
packfile: allow prepare_packed_git_one to handle arbitrary repositories
packfile: allow prepare_packed_git to handle arbitrary repositories
packfile: allow reprepare_packed_git to handle arbitrary repositories
packfile: add repository argument to find_pack_entry
packfile: allow find_pack_entry to handle arbitrary repositories
submodule.h: drop declaration of connect_work_tree_and_git_dir
submodule-config: allow submodule_free to handle arbitrary repositories
submodule-config: add repository argument to submodule_from_{name, path}
submodule-config: remove submodule_from_cache
submodule: fixup nested submodules after moving the submodule
write_or_die.c: rename to use dashes in file name
unicode_width.h: rename to use dash in file name
exec_cmd: rename to use dash in file name
sha1_name.c: rename to use dash in file name
sha1_file.c: rename to use dash in file name
replace_object.c: rename to use dash in file name
replace-object: move replace_map to object store
object-store: move lookup_replace_object to replace-object.h
replace-object: eliminate replace objects prepared flag
replace-object: check_replace_refs is safe in multi repo environment
refs: add repository argument to get_main_ref_store
refs: add repository argument to for_each_replace_ref
replace-object: add repository argument to prepare_replace_object
replace-object: add repository argument to do_lookup_replace_object
replace-object: add repository argument to lookup_replace_object
refs: store the main ref store inside the repository struct
refs: allow for_each_replace_ref to handle arbitrary repositories
replace-object: allow prepare_replace_object to handle arbitrary repositories
replace-object: allow do_lookup_replace_object to handle arbitrary repositories
replace-object: allow lookup_replace_object to handle arbitrary repositories
worktree: accept -f as short for --force for removal
builtin/blame: dim uninteresting metadata lines
builtin/blame: highlight recently changed lines
builtin/blame: add new coloring scheme config
cache.h: add repository argument to oid_object_info_extended
cache.h: add repository argument to oid_object_info
packfile: add repository argument to retry_bad_packed_offset
packfile: add repository argument to packed_to_object_type
packfile: add repository argument to read_object
packfile: add repository argument to unpack_entry
packfile: add repository argument to cache_or_unpack_entry
cache.h: allow oid_object_info to handle arbitrary repositories
git-rebase--interactive: clarify arguments
object.c: free replace map in raw_object_store_clear
replace-object.c: remove the_repository from prepare_replace_object
grep: handle corrupt index files early
git-submodule.sh: try harder to fetch a submodule
submodule.c: move submodule merging to merge-recursive.c
merge-recursive: i18n submodule merge output and respect verbosity
object.c: clear replace map before freeing it
Takuto Ikuta (1):
fetch-pack.c: use oidset to check existence of loose object
Tao Qingyun (1):
t1510-repo-setup.sh: remove useless mkdir
Taylor Blau (5):
builtin/config.c: treat type specifiers singularly
builtin/config.c: support `--type=<type>` as preferred alias for `--<type>`
builtin/config: introduce `--default`
config.c: introduce 'git_config_color' to parse ANSI colors
builtin/config: introduce `color` type specifier
Thomas Gummerer (12):
stash push: avoid printing errors
stash push -u: don't create empty stash
stash: drop superfluos pathspec parameter
SubmittingPatches: mention the git contacts command
completion: stop showing 'save' for stash by default
completion: make stash -p and alias for stash push -p
worktree: remove extra members from struct add_opts
worktree: improve message when creating a new worktree
worktree: factor out dwim_branch function
worktree: teach "add" to check out existing branches
SubmittingPatches: replace numbered attributes with names
note git-security@googlegroups.com in more places
Todd Zullinger (1):
doc/clone: update caption for GIT URLS cross-reference
Torsten Bögershausen (1):
test: correct detection of UTF8_NFD_TO_NFC for APFS
Wink Saville (8):
rebase-interactive: simplify pick_on_preserving_merges
rebase: update invocation of rebase dot-sourced scripts
rebase: reindent function git_rebase__interactive
rebase: extract functions out of git_rebase__interactive
rebase: add and use git_rebase__interactive__preserve_merges
rebase: remove unused code paths from git_rebase__interactive
rebase: remove unused code paths from git_rebase__interactive__preserve_merges
rebase: remove merges_option and a blank line
Yuki Kokubun (1):
filter-branch: fix errors caused by refs that point at non-committish
brian m. carlson (123):
bulk-checkin: convert index_bulk_checkin to struct object_id
builtin/write-tree: convert to struct object_id
cache-tree: convert write_*_as_tree to object_id
cache-tree: convert remnants to struct object_id
resolve-undo: convert struct resolve_undo_info to object_id
tree: convert read_tree_recursive to struct object_id
ref-filter: convert grab_objectname to struct object_id
strbuf: convert strbuf_add_unique_abbrev to use struct object_id
wt-status: convert struct wt_status_state to object_id
Convert find_unique_abbrev* to struct object_id
http-walker: convert struct object_request to use struct object_id
send-pack: convert remaining functions to struct object_id
replace_object: convert struct replace_object to object_id
builtin/mktag: convert to struct object_id
archive: convert write_archive_entry_fn_t to object_id
archive: convert sha1_file_to_archive to struct object_id
builtin/index-pack: convert struct ref_delta_entry to object_id
sha1_file: convert read_loose_object to use struct object_id
sha1_file: convert check_sha1_signature to struct object_id
streaming: convert open_istream to use struct object_id
builtin/mktree: convert to struct object_id
sha1_file: convert assert_sha1_type to object_id
sha1_file: convert retry_bad_packed_offset to struct object_id
packfile: convert unpack_entry to struct object_id
Convert remaining callers of sha1_object_info_extended to object_id
sha1_file: convert sha1_object_info* to object_id
builtin/fmt-merge-msg: convert remaining code to object_id
builtin/notes: convert static functions to object_id
tree-walk: convert get_tree_entry_follow_symlinks internals to object_id
streaming: convert istream internals to struct object_id
tree-walk: convert tree entry functions to object_id
sha1_file: convert read_object_with_reference to object_id
sha1_file: convert read_sha1_file to struct object_id
Convert lookup_replace_object to struct object_id
sha1_file: introduce a constant for max header length
convert: convert to struct object_id
sha1_name: convert struct min_abbrev_data to object_id
t1011: abstract away SHA-1-specific constants
t1304: abstract away SHA-1-specific constants
t1300: abstract away SHA-1-specific constants
t1405: sort reflog entries in a hash-independent way
t1411: abstract away SHA-1-specific constants
t1507: abstract away SHA-1-specific constants
t2020: abstract away SHA-1 specific constants
t2101: modernize test style
t2101: abstract away SHA-1-specific constants
t2107: abstract away SHA-1-specific constants
format-patch: make cover letters always text/plain
cache: add a function to read an object ID from a buffer
server-info: remove unused members from struct pack_info
Remove unused member in struct object_context
packfile: remove unused member from struct pack_entry
packfile: convert has_sha1_pack to object_id
sha1-file: convert freshen functions to object_id
packfile: convert find_pack_entry to object_id
packfile: abstract away hash constant values
pack-objects: abstract away hash algorithm
pack-redundant: abstract away hash algorithm
tree-walk: avoid hard-coded 20 constant
tree-walk: convert get_tree_entry_follow_symlinks to object_id
fsck: convert static functions to struct object_id
submodule-config: convert structures to object_id
split-index: convert struct split_index to object_id
Update struct index_state to use struct object_id
pack-redundant: convert linked lists to use struct object_id
index-pack: abstract away hash function constant
commit: convert uses of get_sha1_hex to get_oid_hex
dir: convert struct untracked_cache_dir to object_id
http: eliminate hard-coded constants
revision: replace use of hard-coded constants
upload-pack: replace use of several hard-coded constants
diff: specify abbreviation size in terms of the_hash_algo
builtin/receive-pack: avoid hard-coded constants for push certs
sha1-file: add functions for hex empty tree and blob OIDs
builtin/am: convert uses of EMPTY_TREE_SHA1_BIN to the_hash_algo
builtin/merge: switch tree functions to use object_id
merge: convert empty tree constant to the_hash_algo
sequencer: convert one use of EMPTY_TREE_SHA1_HEX
submodule: convert several uses of EMPTY_TREE_SHA1_HEX
wt-status: convert two uses of EMPTY_TREE_SHA1_HEX
builtin/receive-pack: convert one use of EMPTY_TREE_SHA1_HEX
builtin/reset: convert use of EMPTY_TREE_SHA1_BIN
sha1_file: convert cached object code to struct object_id
cache-tree: use is_empty_tree_oid
sequencer: use the_hash_algo for empty tree object ID
dir: use the_hash_algo for empty blob object ID
sha1_file: only expose empty object constants through git_hash_algo
Update shell scripts to compute empty tree object ID
add--interactive: compute the empty tree value
merge-one-file: compute empty blob object ID
Documentation: use 8-space tabs with Asciidoctor
Documentation: render revisions correctly under Asciidoctor
mailmap: update brian m. carlson's email address
t/test-lib: add an SHA1 prerequisite
t/test-lib: introduce ZERO_OID
t: switch $_z40 to $ZERO_OID
t/test-lib: introduce OID_REGEX
t: switch $_x40 to $OID_REGEX
t0000: annotate with SHA1 prerequisite
t1007: annotate with SHA1 prerequisite
t1512: skip test if not using SHA-1
t4044: skip test if not using SHA-1
t: skip pack tests if not using SHA-1
t2203: abstract away SHA-1-specific constants
t3103: abstract away SHA-1-specific constants
t3702: abstract away SHA-1-specific constants
t3905: abstract away SHA-1-specific constants
t4007: abstract away SHA-1-specific constants
t4008: abstract away SHA-1-specific constants
t4014: abstract away SHA-1-specific constants
t4020: abstract away SHA-1-specific constants
t4022: abstract away SHA-1-specific constants
t4029: fix test indentation
t4029: abstract away SHA-1-specific constants
t4030: abstract away SHA-1-specific constants
t/lib-diff-alternative: abstract away SHA-1-specific constants
t4205: sort log output in a hash-independent way
t4042: abstract away SHA-1-specific constants
t4045: abstract away SHA-1-specific constants
t4208: abstract away SHA-1-specific constants
t5300: abstract away SHA-1-specific constants
sequencer: ensure labels that are object IDs are rewritten
t3430: test clean-up
Ævar Arnfjörð Bjarmason (21):
configure: fix a regression in PCRE v1 detection
configure: detect redundant --with-libpcre & --with-libpcre1
Makefile: make USE_LIBPCRE=YesPlease mean v2, not v1
Makefile: fix broken bindir_relative variable
Makefile: add a gitexecdir_relative variable
Makefile: optionally symlink libexec/git-core binaries to bin/git
Remove contrib/examples/*
doc hash-function-transition: clarify how older gits die on NewHash
doc hash-function-transition: clarify what SHAttered means
git-svn: avoid warning on undef readline()
Makefile: add a DEVOPTS to suppress -Werror under DEVELOPER
Makefile: add a DEVOPTS to get all of -Wextra
git{,-blame}.el: remove old bitrotting Emacs code
.gitattributes: add *.pl extension for Perl
.gitattributes: use the "perl" differ for Perl
.gitattributes: add a diff driver for Python
sha1-name.c: remove stray newline
sha1-array.h: align function arguments
git-p4: change "commitish" typo to "committish"
sha1-name.c: move around the collect_ambiguous() function
get_short_oid: sort ambiguous objects by type, then SHA-1
^ permalink raw reply [relevance 3%]
* [RFC PATCH 7/7] merge: fix misleading pre-merge check documentation
2018-06-03 6:58 3% [RFC PATCH 0/7] merge requirement: index matches head Elijah Newren
@ 2018-06-03 6:58 1% ` Elijah Newren
2018-06-07 5:27 3% ` Elijah Newren
2018-07-01 1:24 3% ` [PATCH v2 0/9] Fix merge issues with index not matching HEAD Elijah Newren
1 sibling, 1 reply; 200+ results
From: Elijah Newren @ 2018-06-03 6:58 UTC (permalink / raw)
To: git; +Cc: jrnieder, Elijah Newren
builtin/merge.c contains this important requirement for merge strategies:
...the index must be in sync with the head commit. The strategies are
responsible to ensure this.
However, Documentation/git-merge.txt says:
...[merge will] abort if there are any changes registered in the index
relative to the `HEAD` commit. (One exception is when the changed
index entries are in the state that would result from the merge
already.)
Interestingly, prior to commit c0be8aa06b85 ("Documentation/git-merge.txt:
Partial rewrite of How Merge Works", 2008-07-19),
Documentation/git-merge.txt said much more:
...the index file must match the tree of `HEAD` commit...
[NOTE]
This is a bit of a lite. In certain special cases [explained
in detail]...
Otherwise, merge will refuse to do any harm to your repository
(that is...your working tree...and index are left intact).
So, this suggests that the exceptions existed because there were special
cases where it would case no harm, and potentially be slightly more
convenient for the user. While the current text in git-merge.txt does
list a condition under which it would be safe to proceed despite the index
not matching HEAD, it does not match what is actually implemented, in
three different ways:
* The exception is written to describe what unpack-trees allows. Not
all merge strategies allow such an exception, though, making this
description misleading. 'ours' and 'octopus' merges have strictly
enforced index==HEAD for a while, and the commit previous to this
one made 'recursive' do so as well.
* If someone did a three-way content merge on a specific file using
versions from the relevant commits and staged it prior to running
merge, then that path would technically satisfy the exception listed
in git-merge.txt. unpack-trees.c would still error out on the path,
though, because it defers the three-way content merge logic to other
parts of the code (resolve, octopus, or recursive) and has no way of
checking whether the index entry from before the merge will match
the end result of the merge.
* The exception as implemented in unpack-trees actually only checked
that the index matched the MERGE_HEAD version of the file and that
HEAD matched the merge base. Assuming no renames, that would indeed
provide cases where the index matches the end result we'd get from a
merge. But renames means unpack-trees is checking that it instead
matches something other than what the final result will be, risking
either erroring out when we shouldn't need to, or not erroring out
when we should and overwriting the user's staged changes.
In addition to the wording behind this exception being misleading, it is
also somewhat surprising to see how many times the code for the special
cases were wrong or the check to make sure the index matched head was
forgotten altogether:
* Prior to commit ee6566e8d70d ("[PATCH] Rewrite read-tree", 2005-09-05),
there were many cases where an unclean index entry was allowed (look for
merged_entry_allow_dirty()); it appears that in those cases, the merge
would have simply overwritten staged changes with the result of the
merge. Thus, the merge result would have been correct, but the user's
uncommitted changes could be thrown away without warning.
* Prior to commit 160252f81626 ("git-merge-ours: make sure our index
matches HEAD", 2005-11-03), the 'ours' merge strategy did not check
whether the index matched HEAD. If it didn't, the resulting merge
would include all the staged changes, and thus wasn't really an 'ours'
strategy.
* Prior to commit 3ec62ad9ffba ("merge-octopus: abort if index does not
match HEAD", 2016-04-09), 'octopus' merges did not check whether the
index matched HEAD, also resulting in any staged changes from before
the commit silently being folded into the resulting merge. commit
a6ee883b8eb5 ("t6044: new merge testcases for when index doesn't match
HEAD", 2016-04-09) was also added at the same time to try to test to
make sure all strategies did the necessary checking for the requirement
that the index match HEAD. Sadly, it didn't catch all the cases, as
evidenced by the remainder of this list...
* Prior to commit 65170c07d466 ("merge-recursive: avoid incorporating
uncommitted changes in a merge", 2017-12-21), merge-recursive simply
relied on unpack_trees() to do the necessary check, but in one special
case it avoided calling unpack_trees() entirely and accidentally ended
up silently including any staged changes from before the merge in the
resulting merge commit.
* The commit immediately before this one in this series noted that the
exceptions were written in a way that assumed no renames, making it
unsafe for merge-recursive to use. merge-recursive was modified to
use its own check to enforce that index==HEAD.
This history makes it very tempting to go into builtin/merge.c and replace
the comment that strategies must enforce that index matches HEAD with code
that just enforces it. At this point, that would only affect the
'resolve' strategy; all other strategies have each been modified to
manually enforce it. (However, note that index==HEAD is not strictly
enforced for fast-forward merges, as those are not considered a merge
strategy and they trigger in builtin/merge.c before the section in the
code where the relevant comment is found.)
But, even if we don't take the step of just fixing these problems by
enforcing index==HEAD for all strategies, we at least need to update this
misleading documentation in git-merge.txt. For now, just modify the claim
in Documentation/git-merge.txt to fix the error. The precise details
around combination of merges strategies and special cases probably is not
relevant to most users, so simply state that exceptions may exist but are
narrow and vary depending upon which merge strategy is in use.
Signed-off-by: Elijah Newren <newren@gmail.com>
---
Documentation/git-merge.txt | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/Documentation/git-merge.txt b/Documentation/git-merge.txt
index d5dfd8430f..141bd72284 100644
--- a/Documentation/git-merge.txt
+++ b/Documentation/git-merge.txt
@@ -122,9 +122,9 @@ merge' may need to update.
To avoid recording unrelated changes in the merge commit,
'git pull' and 'git merge' will also abort if there are any changes
-registered in the index relative to the `HEAD` commit. (One
-exception is when the changed index entries are in the state that
-would result from the merge already.)
+registered in the index relative to the `HEAD` commit. (Special
+narrow exceptions to this rule may exist depending on which merge
+strategy is in use, but generally, the index must match HEAD.)
If all named commits are already ancestors of `HEAD`, 'git merge'
will exit early with the message "Already up to date."
--
2.18.0.rc0.49.g3c08dc0fef
^ permalink raw reply related [relevance 1%]
* [RFC PATCH 0/7] merge requirement: index matches head
@ 2018-06-03 6:58 3% Elijah Newren
2018-06-03 6:58 1% ` [RFC PATCH 7/7] merge: fix misleading pre-merge check documentation Elijah Newren
2018-07-01 1:24 3% ` [PATCH v2 0/9] Fix merge issues with index not matching HEAD Elijah Newren
0 siblings, 2 replies; 200+ results
From: Elijah Newren @ 2018-06-03 6:58 UTC (permalink / raw)
To: git; +Cc: jrnieder, Elijah Newren
Between working on some other things, I happened to be reading
Documentation/git-merge.txt and ran across the part that says:
...[merge will] abort if there are any changes registered in the
index relative to the `HEAD` commit. (One exception is when the
changed index entries are in the state that would result from the
merge already.)
I was pretty sure this statement was wrong, but did some digging to
uncover the details and the history. What I thought would turn into a
simple three-line documentation fix, ballooned into this patch series.
This series might be best read in a different order; I'm not yet sure
the right way to structure it. But:
* Patch 5 demonstrates one of the ways that the parenthetical
sentence is wrong (desirable perhaps, but not what is implemented)
* Patch 7 explains the history, the trade-offs, the three ways the
parenthetical sentence is wrong, and the many pitfalls we've run
into trying to allow for such an exception. Very small
documentation fix with a huge commit message.
* Patch 6 fixes the breakage demonstrated in patch 5, but if I only
submitted patches 5-7, then the testsuite wouldn't pass because
this fix uncovered multiple other bugs. That's where patches 1-4
came in. This fix is also kind of opinionated; it takes the stance
that allowing the exceptions isn't worth it.
Elijah Newren (7):
t6044: verify that merges expected to abort actually abort
t6044: add a testcase for index matching head, when head doesn't match HEAD
merge-recursive: make sure when we say we abort that we actually abort
merge-recursive: fix assumption that head tree being merged is HEAD
t6044: add more testcases with staged changes before a merge is invoked
merge-recursive: enforce rule that index matches head before merging
merge: fix misleading pre-merge check documentation
Documentation/git-merge.txt | 6 +-
builtin/am.c | 6 +-
cache.h | 8 --
merge-recursive.c | 14 +--
merge.c | 10 +-
t/t6044-merge-unrelated-index-changes.sh | 67 +++++++++++--
t/t7504-commit-msg-hook.sh | 4 +-
t/t7611-merge-abort.sh | 118 -----------------------
tree.h | 8 ++
9 files changed, 87 insertions(+), 154 deletions(-)
--
2.18.0.rc0.49.g3c08dc0fef
^ permalink raw reply [relevance 3%]
* [ANNOUNCE] Git v2.18.0-rc0
@ 2018-05-30 22:47 3% Junio C Hamano
0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2018-05-30 22:47 UTC (permalink / raw)
To: git; +Cc: Linux Kernel, git-packagers
An early preview release Git v2.18.0-rc0 is now available for
testing at the usual places. It is comprised of 802 non-merge
commits since v2.17.0, contributed by 60 people, 19 of which are
new faces.
As the above numbers show, especially the non-merge commit count, it
turned out that 2.18 is relatively sizeable cycle. Let's plan to
start cooling down and giving it a bit of extra polish to make sure
there is no/little regression. I am tagging the preview now as I
want to do the -rc1 before I go offline early next week for a few
days for travelling. I may go offline for the rest of the day as I
seem to have caught something X-<, but plan to spend the next 48
hours re-reviewing what is in (or close to be in) 'next' to see which
ones should be in -rc1.
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.18.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.17.0 are as follows.
Welcome to the Git development community!
Bill Ritcher, Birger Skogeng Pedersen, Casey Fitzpatrick,
Dan Jacques, Drew DeVault, Eckhard S. Maaß, Erik E Brady,
Florian Gamböck, Harald Nordgren, Leif Middelschulte, Loganaden
Velvindron, Luis Marsano, Paul-Sebastian Ungureanu, Pratik
Karki, Ryan Dammrose, Takuto Ikuta, Tao Qingyun, Wink Saville,
and Yuki Kokubun.
Returning contributors who helped this release are as follows.
Thanks for your continued support.
Ævar Arnfjörð Bjarmason, Anders Kaseorg, Andreas Heiduk,
Antonio Ospite, Beat Bolli, Ben Peart, Brandon Williams, brian
m. carlson, Christian Couder, Christian Hesse, Clemens Buchacher,
Derrick Stolee, Elijah Newren, Eric Sunshine, Jameson Miller,
Jeff King, Johannes Schindelin, Johannes Sixt, Jonathan Nieder,
Jonathan Tan, Junio C Hamano, Kaartic Sivaraam, Lars Schneider,
Lucas Werkmeister, Martin Ågren, Michal Nazarewicz, Michele
Locati, Nguyễn Thái Ngọc Duy, Olga Telezhnaya, Philip
Oakley, Phillip Wood, Ramsay Jones, René Scharfe, Sergey
Organov, Stefan Agner, Stefan Beller, SZEDER Gábor, Taylor Blau,
Thomas Gummerer, Todd Zullinger, and Torsten Bögershausen.
----------------------------------------------------------------
Git 2.18 Release Notes (draft)
==============================
Updates since v2.17
-------------------
UI, Workflows & Features
* Rename detection logic in "diff" family that is used in "merge" has
learned to guess when all of x/a, x/b and x/c have moved to z/a,
z/b and z/c, it is likely that x/d added in the meantime would also
want to move to z/d by taking the hint that the entire directory
'x' moved to 'z'. A bug causing dirty files involved in a rename
to be overwritten during merge has also been fixed as part of this
work.
* "git filter-branch" learned to use a different exit code to allow
the callers to tell the case where there was no new commits to
rewrite from other error cases.
* When built with more recent cURL, GIT_SSL_VERSION can now specify
"tlsv1.3" as its value.
* "git gui" learned that "~/.ssh/id_ecdsa.pub" and
"~/.ssh/id_ed25519.pub" are also possible SSH key files.
(merge 2e2f0288ef bb/git-gui-ssh-key-files later to maint).
* "git gui" performs commit upon CTRL/CMD+ENTER but the
CTRL/CMD+KP_ENTER (i.e. enter key on the numpad) did not have the
same key binding. It now does.
(merge 28a1d94a06 bp/git-gui-bind-kp-enter later to maint).
* "git gui" has been taught to work with old versions of tk (like
8.5.7) that do not support "ttk::style theme use" as a way to query
the current theme.
(merge 4891961105 cb/git-gui-ttk-style later to maint).
* "git rebase" has learned to honor "--signoff" option when using
backends other than "am" (but not "--preserve-merges").
* "git branch --list" during an interrupted "rebase -i" now lets
users distinguish the case where a detached HEAD is being rebased
and a normal branch is being rebased.
* "git mergetools" learned talking to guiffy.
* The scripts in contrib/emacs/ have outlived their usefulness and
have been replaced with a stub that errors out and tells the user
there are replacements.
* The new "checkout-encoding" attribute can ask Git to convert the
contents to the specified encoding when checking out to the working
tree (and the other way around when checking in).
* The "git config" command uses separate options e.g. "--int",
"--bool", etc. to specify what type the caller wants the value to
be interpreted as. A new "--type=<typename>" option has been
introduced, which would make it cleaner to define new types.
* "git config --get" learned the "--default" option, to help the
calling script. Building on top of the above changes, the
"git config" learns "--type=color" type. Taken together, you can
do things like "git config --get foo.color --default blue" and get
the ANSI color sequence for the color given to foo.color variable,
or "blue" if the variable does not exist.
* "git ls-remote" learned an option to allow sorting its output based
on the refnames being shown.
* The command line completion (in contrib/) has been taught that "git
stash save" has been deprecated ("git stash push" is the preferred
spelling in the new world) and does not offer it as a possible
completion candidate when "git stash push" can be.
* "git gc --prune=nonsense" spent long time repacking and then
silently failed when underlying "git prune --expire=nonsense"
failed to parse its command line. This has been corrected.
* Error messages from "git push" can be painted for more visibility.
* "git http-fetch" (deprecated) had an optional and experimental
"feature" to fetch only commits and/or trees, which nobody used.
This has been removed.
* The functionality of "$GIT_DIR/info/grafts" has been superseded by
the "refs/replace/" mechanism for some time now, but the internal
code had support for it in many places, which has been cleaned up
in order to drop support of the "grafts" mechanism.
* "git worktree add" learned to check out an existing branch.
* "git --no-pager cmd" did not have short-and-sweet single letter
option. Now it does as "-P".
(merge 7213c28818 js/no-pager-shorthand later to maint).
* "git rebase" learned "--rebase-merges" to transplant the whole
topology of commit graph elsewhere.
* "git status" learned to pay attention to UI related diff
configuration variables such as diff.renames.
* The command line completion mechanism (in contrib/) learned to load
custom completion file for "git $command" where $command is a
custom "git-$command" that the end user has on the $PATH when using
newer version of bash.
* "git send-email" can sometimes offer confirmation dialog "Send this
email?" with choices 'Yes', 'No', 'Quit', and 'All'. A new action
'Edit' has been added to this dialog's choice.
* With merge.renames configuration set to false, the recursive merge
strategy can be told not to spend cycles trying to find renamed
paths and merge them accordingly.
* "git status" learned to honor a new status.renames configuration to
skip rename detection, which could be useful for those who want to
do so without disabling the default rename detection done by the
"git diff" command.
* Command line completion (in contrib/) learned to complete pathnames
for various commands better.
* "git blame" learns to unhighlight uninteresting metadata from the
originating commit on lines that are the same as the previous one,
and also paint lines in different colors depending on the age of
the commit.
* Transfer protocol v2 learned to support the partial clone.
* When a short hexadecimal string is used to name an object but there
are multiple objects that share the string as the prefix of their
names, the code lists these ambiguous candidates in a help message.
These object names are now sorted according to their types for
easier eyeballing.
* "git fetch $there $refspec" that talks over protocol v2 can take
advantage of server-side ref filtering; the code has been extended
so that this mechanism triggers also when fetching with configured
refspec.
* Our HTTP client code used to advertise that we accept gzip encoding
from the other side; instead, just let cURL library to advertise
and negotiate the best one.
Performance, Internal Implementation, Development Support etc.
* A "git fetch" from a repository with insane number of refs into a
repository that is already up-to-date still wasted too many cycles
making many lstat(2) calls to see if these objects at the tips
exist as loose objects locally. These lstat(2) calls are optimized
away by enumerating all loose objects beforehand.
It is unknown if the new strategy negatively affects existing use
cases, fetching into a repository with many loose objects from a
repository with small number of refs.
* Git can be built to use either v1 or v2 of the PCRE library, and so
far, the build-time configuration USE_LIBPCRE=YesPlease instructed
the build procedure to use v1, but now it means v2. USE_LIBPCRE1
and USE_LIBPCRE2 can be used to explicitly choose which version to
use, as before.
* The build procedure learned to optionally use symbolic links
(instead of hardlinks and copies) to install "git-foo" for built-in
commands, whose binaries are all identical.
* Conversion from uchar[20] to struct object_id continues.
* The way "git worktree prune" worked internally has been simplified,
by assuming how "git worktree move" moves an existing worktree to a
different place.
* Code clean-up for the "repository" abstraction.
(merge 00a3da2a13 nd/remove-ignore-env-field later to maint).
* Code to find the length to uniquely abbreviate object names based
on packfile content, which is a relatively recent addtion, has been
optimized to use the same fan-out table.
* The mechanism to use parse-options API to automate the command line
completion continues to get extended and polished.
* Copies of old scripted Porcelain commands in contrib/examples/ have
been removed.
* Some tests that rely on the exact hardcoded values of object names
have been updated in preparation for hash function migration.
* Perf-test update.
* Test helper update.
* The effort continues to refactor the internal global data structure
to make it possible to open multiple repositories, work with and
then close them,
* Small test-helper programs have been consolidated into a single
binary.
* API clean-up around ref-filter code.
* Shell completion (in contrib) that gives list of paths have been
optimized somewhat.
* The index file is updated to record the fsmonitor section after a
full scan was made, to avoid wasting the effort that has already
spent.
* Performance measuring framework in t/perf learned to help bisecting
performance regressions.
* Some multi-word source filenames are being renamed to separate
words with dashes instead of underscores.
* An reusable "memory pool" implementation has been extracted from
fast-import.c, which in turn has become the first user of the
mem-pool API.
* A build-time option has been added to allow Git to be told to refer
to its associated files relative to the main binary, in the same
way that has been possible on Windows for quite some time, for
Linux, BSDs and Darwin.
* Precompute and store information necessary for ancestry traversal
in a separate file to optimize graph walking.
* The effort to pass the repository in-core structure throughout the
API continues. This round deals with the code that implements the
refs/replace/ mechanism.
* The build procedure "make DEVELOPER=YesPlease" learned to enable a
bit more warning options depending on the compiler used to help
developers more. There also is "make DEVOPTS=tokens" knob
available now, for those who want to help fixing warnings we
usually ignore, for example.
* A new version of the transport protocol is being worked on.
* The code to interface to GPG has been restructured somewhat to make
it cleaner to integrate with other types of signature systems later.
* The code has been taught to use the duplicated information stored
in the commit-graph file to learn the tree object name for a commit
to avoid opening and parsing the commit object when it makes sense
to do so.
* "git gc" in a large repository takes a lot of time as it considers
to repack all objects into one pack by default. The command has
been taught to pretend as if the largest existing packfile is
marked with ".keep" so that it is left untouched while objects in
other packs and loose ones are repacked.
* The transport protocol v2 is getting updated further.
* The codepath around object-info API has been taught to take the
repository object (which in turn tells the API which object store
the objects are to be located).
* Rename detection logic in "diff" family that is used in "merge" has
learned to guess when all of x/a, x/b and x/c have moved to z/a,
z/b and z/c, it is likely that x/d added in the meantime would also
want to move to z/d by taking the hint that the entire directory
'x' moved to 'z'. A bug causing dirty files involved in a rename
to be overwritten during merge has also been fixed as part of this
work. Incidentally, this also avoids updating a file in the
working tree after a (non-trivial) merge whose result matches what
our side originally had.
* "git pack-objects" needs to allocate tons of "struct object_entry"
while doing its work, and shrinking its size helps the performance
quite a bit.
* The implementation of "git rebase -i --root" has been updated to use
the sequencer machinery more.
* Developer support update, by using BUG() macro instead of die() to
mark codepaths that should not happen more clearly.
* Developer support. Use newer GCC on one of the builds done at
TravisCI.org to get more warnings and errors diagnosed.
* Conversion from uchar[20] to struct object_id continues.
* By code restructuring of submodule merge in merge-recursive,
informational messages from the codepath are now given using the
same mechanism as other output, and honor the merge.verbosity
configuration. The code also learned to give a few new messages
when a submodule three-way merge resolves cleanly when one side
records a descendant of the commit chosen by the other side.
* Avoid unchecked snprintf() to make future code auditing easier.
(merge ac4896f007 jk/snprintf-truncation later to maint).
* Many tests hardcode the raw object names, which would change once
we migrate away from SHA-1. While some of them must test against
exact object names, most of them do not have to use hardcoded
constants in the test. The latter kind of tests have been updated
to test the moral equivalent of the original without hardcoding the
actual object names.
Also contains various documentation updates and code clean-ups.
Fixes since v2.17
-----------------
* "git shortlog cruft" aborted with a BUG message when run outside a
Git repository. The command has been taught to complain about
extra and unwanted arguments on its command line instead in such a
case.
(merge 4aa0161e83 ma/shortlog-revparse later to maint).
* "git stash push -u -- <pathspec>" gave an unnecessary and confusing
error message when there was no tracked files that match the
<pathspec>, which has been fixed.
(merge 353278687e tg/stash-untracked-with-pathspec-fix later to maint).
* "git tag --contains no-such-commit" gave a full list of options
after giving an error message.
(merge 3bb0923f06 ps/contains-id-error-message later to maint).
* "diff-highlight" filter (in contrib/) learned to undertand "git log
--graph" output better.
(merge 4551fbba14 jk/diff-highlight-graph-fix later to maint).
* when refs that do not point at committish are given, "git
filter-branch" gave a misleading error messages. This has been
corrected.
(merge f78ab355e7 yk/filter-branch-non-committish-refs later to maint).
* "git submodule status" misbehaved on a submodule that has been
removed from the working tree.
(merge 74b6bda32f rs/status-with-removed-submodule later to maint).
* When credential helper exits very quickly without reading its
input, it used to cause Git to die with SIGPIPE, which has been
fixed.
(merge a0d51e8d0e eb/cred-helper-ignore-sigpipe later to maint).
* "git rebase --keep-empty" still removed an empty commit if the
other side contained an empty commit (due to the "does an
equivalent patch exist already?" check), which has been corrected.
(merge 3d946165e1 pw/rebase-keep-empty-fixes later to maint).
* Some codepaths, including the refs API, get and keep relative
paths, that go out of sync when the process does chdir(2). The
chdir-notify API is introduced to let these codepaths adjust these
cached paths to the new current directory.
(merge fb9c2d2703 jk/relative-directory-fix later to maint).
* "cd sub/dir && git commit ../path" ought to record the changes to
the file "sub/path", but this regressed long time ago.
(merge 86238e07ef bw/commit-partial-from-subdirectory-fix later to maint).
* Recent introduction of "--log-destination" option to "git daemon"
did not work well when the daemon was run under "--inetd" mode.
(merge e67d906d73 lw/daemon-log-destination later to maint).
* Small fix to the autoconf build procedure.
(merge 249482daf0 es/fread-reads-dir-autoconf-fix later to maint).
* Fix an unexploitable (because the oversized contents are not under
attacker's control) buffer overflow.
(merge d8579accfa bp/fsmonitor-bufsize-fix later to maint).
* Recent simplification of build procedure forgot a bit of tweak to
the build procedure of contrib/mw-to-git/
(merge d8698987f3 ab/simplify-perl-makefile later to maint).
* Moving a submodule that itself has submodule in it with "git mv"
forgot to make necessary adjustment to the nested sub-submodules;
now the codepath learned to recurse into the submodules.
* "git config --unset a.b", when "a.b" is the last variable in an
otherwise empty section "a", left an empty section "a" behind, and
worse yet, a subsequent "git config a.c value" did not reuse that
empty shell and instead created a new one. These have been
(partially) corrected.
(merge c71d8bb38a js/empty-config-section-fix later to maint).
* "git worktree remove" learned that "-f" is a shorthand for
"--force" option, just like for "git worktree add".
(merge d228eea514 sb/worktree-remove-opt-force later to maint).
* The completion script (in contrib/) learned to clear cached list of
command line options upon dot-sourcing it again in a more efficient
way.
(merge 94408dc71c sg/completion-clear-cached later to maint).
* "git svn" had a minor thinko/typo which has been fixed.
(merge 51db271587 ab/git-svn-get-record-typofix later to maint).
* During a "rebase -i" session, the code could give older timestamp
to commits created by later "pick" than an earlier "reword", which
has been corrected.
(merge 12f7babd6b js/ident-date-fix later to maint).
* "git submodule status" did not check the symbolic revision name it
computed for the submodule HEAD is not the NULL, and threw it at
printf routines, which has been corrected.
(merge 0b5e2ea7cf nd/submodule-status-fix later to maint).
* When fed input that already has In-Reply-To: and/or References:
headers and told to add the same information, "git send-email"
added these headers separately, instead of appending to an existing
one, which is a violation of the RFC. This has been corrected.
(merge 256be1d3f0 sa/send-email-dedup-some-headers later to maint).
* "git fast-export" had a regression in v2.15.0 era where it skipped
some merge commits in certain cases, which has been corrected.
(merge be011bbe00 ma/fast-export-skip-merge-fix later to maint).
* The code did not propagate the terminal width to subprocesses via
COLUMNS environment variable, which it now does. This caused
trouble to "git column" helper subprocess when "git tag --column=row"
tried to list the existing tags on a display with non-default width.
(merge b5d5a567fb nd/term-columns later to maint).
* We learned that our source files with ".pl" and ".py" extensions
are Perl and Python files respectively and changes to them are
better viewed as such with appropriate diff drivers.
(merge 7818b619e2 ab/perl-python-attrs later to maint).
* "git rebase -i" sometimes left intermediate "# This is a
combination of N commits" message meant for the human consumption
inside an editor in the final result in certain corner cases, which
has been fixed.
(merge 15ef69314d js/rebase-i-clean-msg-after-fixup-continue later to maint).
* A test to see if the filesystem normalizes UTF-8 filename has been
updated to check what we need to know in a more direct way, i.e. a
path created in NFC form can be accessed with NFD form (or vice
versa) to cope with APFS as well as HFS.
(merge 742ae10e35 tb/test-apfs-utf8-normalization later to maint).
* "git format-patch --cover --attach" created a broken MIME multipart
message for the cover letter, which has been fixed by keeping the
cover letter as plain text file.
(merge 50cd54ef4e bc/format-patch-cover-no-attach later to maint).
* The split-index feature had a long-standing and dormant bug in
certain use of the in-core merge machinery, which has been fixed.
(merge 7db118303a en/unpack-trees-split-index-fix later to maint).
* Asciidoctor gives a reasonable imitation for AsciiDoc, but does not
render illustration in a literal block correctly when indented with
HT by default. The problem is fixed by forcing 8-space tabs.
(merge 379805051d bc/asciidoctor-tab-width later to maint).
* Code clean-up to adjust to a more recent lockfile API convention that
allows lockfile instances kept on the stack.
(merge 0fa5a2ed8d ma/lockfile-cleanup later to maint).
* the_repository->index is not a allocated piece of memory but
repo_clear() indiscriminately attempted to free(3) it, which has
been corrected.
(merge 74373b5f10 nd/repo-clear-keep-the-index later to maint).
* Code clean-up to avoid non-standard-conformant pointer arithmetic.
(merge c112084af9 rs/no-null-ptr-arith-in-fast-export later to maint).
* Code clean-up to turn history traversal more robust in a
semi-corrupt repository.
(merge 8702b30fd7 jk/unavailable-can-be-missing later to maint).
* "git update-ref A B" is supposed to ensure that ref A does not yet
exist when B is a NULL OID, but this check was not done correctly
for pseudo-refs outside refs/ hierarchy, e.g. MERGE_HEAD.
* "git submodule update" and "git submodule add" supported the
"--reference" option to borrow objects from a neighbouring local
repository like "git clone" does, but lacked the more recent
invention "--dissociate". Also "git submodule add" has been taught
to take the "--progress" option.
(merge a0ef29341a cf/submodule-progress-dissociate later to maint).
* Update credential-netrc helper (in contrib/) to allow customizing
the GPG used to decrypt the encrypted .netrc file.
(merge 786ef50a23 lm/credential-netrc later to maint).
* "git submodule update" attempts two different kinds of "git fetch"
against the upstream repository to grab a commit bound at the
submodule's path, but it incorrectly gave up if the first kind
(i.e. a normal fetch) failed, making the second "last resort" one
(i.e. fetching an exact commit object by object name) ineffective.
This has been corrected.
(merge e30d833671 sb/submodule-update-try-harder later to maint).
* Error behaviour of "git grep" when it cannot read the index was
inconsistent with other commands that uses the index, which has
been corrected to error out early.
(merge b2aa84c789 sb/grep-die-on-unreadable-index later to maint).
* We used to call regfree() after regcomp() failed in some codepaths,
which have been corrected.
(merge 17154b1576 ma/regex-no-regfree-after-comp-fail later to maint).
* Other minor doc, test and build updates and code cleanups.
(merge 248f66ed8e nd/trace-with-env later to maint).
(merge 14ced5562c ys/bisect-object-id-missing-conversion-fix later to maint).
(merge 5988eb631a ab/doc-hash-brokenness later to maint).
(merge a4d4e32a70 pk/test-avoid-pipe-hiding-exit-status later to maint).
(merge 05e293c1ac jk/flockfile-stdio later to maint).
(merge e9184b0789 jk/t5561-missing-curl later to maint).
(merge b1801b85a3 nd/worktree-move later to maint).
(merge bbd374dd20 ak/bisect-doc-typofix later to maint).
(merge 4855f06fb3 mn/send-email-credential-doc later to maint).
(merge 8523b1e355 en/doc-typoes later to maint).
(merge 43b44ccfe7 js/t5404-path-fix later to maint).
(merge decf711fc1 ps/test-chmtime-get later to maint).
(merge 22d11a6e8e es/worktree-docs later to maint).
(merge 92a5dbbc22 tg/use-git-contacts later to maint).
(merge adc887221f tq/t1510 later to maint).
(merge bed21a8ad6 sg/doc-gc-quote-mismatch-fix later to maint).
(merge 73364e4f10 tz/doc-git-urls-reference later to maint).
(merge cd1e606bad bc/mailmap-self later to maint).
(merge f7997e3682 ao/config-api-doc later to maint).
(merge ee930754d8 jk/apply-p-doc later to maint).
(merge 011b648646 nd/pack-format-doc later to maint).
(merge 87a6bb701a sg/t5310-jgit-bitmap-test later to maint).
(merge f6b82970aa sg/t5516-fixes later to maint).
(merge 4362da078e sg/t7005-spaces-in-filenames-cleanup later to maint).
(merge 7d0ee47c11 js/test-unset-prereq later to maint).
(merge 5356a3c354 ah/misc-doc-updates later to maint).
(merge 92c4a7a129 nd/completion-aliasfiletype-typofix later to maint).
(merge 58bd77b66a nd/pack-unreachable-objects-doc later to maint).
(merge 4ed79d5203 sg/t6500-no-redirect-of-stdin later to maint).
(merge 17b8a2d6cd jk/config-blob-sans-repo later to maint).
----------------------------------------------------------------
Changes since v2.17.0 are as follows:
Anders Kaseorg (1):
Documentation/git-bisect.txt: git bisect term → git bisect terms
Andreas Heiduk (9):
git-svn: search --authors-prog in PATH too
git-svn: allow empty email-address using authors-prog and authors-file
doc: improve formatting in githooks.txt
doc: align 'diff --no-index' in text and synopsis
doc: clarify ignore rules for git ls-files
doc: add '-d' and '-o' for 'git push'
git-svn: remove ''--add-author-from' for 'commit-diff'
doc: add note about shell quoting to revision.txt
doc: normalize [--options] to [options] in git-diff
Antonio Ospite (1):
doc: fix config API documentation about config_with_options
Beat Bolli (1):
git-gui: search for all current SSH key types
Ben Peart (7):
fsmonitor: fix incorrect buffer size when printing version number
fsmonitor: force index write after full scan
test-drop-caches: simplify delay loading of NtSetSystemInformation
merge: update documentation for {merge,diff}.renameLimit
merge: add merge.renames config setting
merge: pass aggressive when rename detection is turned off
add status config and command line options for rename detection
Bill Ritcher (1):
mergetools: add support for guiffy
Birger Skogeng Pedersen (1):
git-gui: bind CTRL/CMD+numpad ENTER to do_commit
Brandon Williams (79):
pkt-line: introduce packet_read_with_status
pkt-line: allow peeking a packet line without consuming it
pkt-line: add delim packet support
upload-pack: convert to a builtin
upload-pack: factor out processing lines
transport: use get_refs_via_connect to get refs
connect: convert get_remote_heads to use struct packet_reader
connect: discover protocol version outside of get_remote_heads
transport: store protocol version
protocol: introduce enum protocol_version value protocol_v2
test-pkt-line: introduce a packet-line test helper
serve: introduce git-serve
ls-refs: introduce ls-refs server command
connect: request remote refs using v2
transport: convert get_refs_list to take a list of ref prefixes
transport: convert transport_get_remote_refs to take a list of ref prefixes
ls-remote: pass ref prefixes when requesting a remote's refs
fetch: pass ref prefixes when fetching
push: pass ref prefixes when pushing
upload-pack: introduce fetch server command
fetch-pack: perform a fetch using v2
fetch-pack: support shallow requests
connect: refactor git_connect to only get the protocol version once
connect: don't request v2 when pushing
transport-helper: remove name parameter
transport-helper: refactor process_connect_service
transport-helper: introduce stateless-connect
pkt-line: add packet_buf_write_len function
remote-curl: create copy of the service name
remote-curl: store the protocol version the server responded with
http: allow providing extra headers for http requests
http: don't always add Git-Protocol header
http: eliminate "# service" line when using protocol v2
remote-curl: implement stateless-connect command
remote-curl: don't request v2 when pushing
commit: allow partial commits with relative paths
serve: introduce the server-option capability
ls-remote: send server options when using protocol v2
fetch: send server options when using protocol v2
refspec: move refspec parsing logic into its own file
refspec: rename struct refspec to struct refspec_item
refspec: factor out parsing a single refspec
refspec: introduce struct refspec
refspec: convert valid_fetch_refspec to use parse_refspec
submodule--helper: convert push_check to use struct refspec
pull: convert get_tracking_branch to use refspec_item_init
transport: convert transport_push to use struct refspec
remote: convert check_push_refs to use struct refspec
remote: convert match_push_refs to use struct refspec
clone: convert cmd_clone to use refspec_item_init
fast-export: convert to use struct refspec
remote: convert push refspecs to struct refspec
remote: convert fetch refspecs to struct refspec
remote: remove add_prune_tags_to_fetch_refspec
transport-helper: convert to use struct refspec
fetch: convert fetch_one to use struct refspec
fetch: convert refmap to use struct refspec
refspec: remove the deprecated functions
fetch: convert do_fetch to take a struct refspec
fetch: convert get_ref_map to take a struct refspec
fetch: convert prune_refs to take a struct refspec
remote: convert get_stale_heads to take a struct refspec
remote: convert apply_refspecs to take a struct refspec
remote: convert query_refspecs to take a struct refspec
remote: convert get_ref_match to take a struct refspec
remote: convert match_explicit_refs to take a struct refspec
push: check for errors earlier
push: convert to use struct refspec
transport: convert transport_push to take a struct refspec
send-pack: store refspecs in a struct refspec
transport: remove transport_verify_remote_names
http-push: store refspecs in a struct refspec
remote: convert match_push_refs to take a struct refspec
remote: convert check_push_refs to take a struct refspec
submodule: convert push_unpushed_submodules to take a struct refspec
refspec: consolidate ref-prefix generation logic
fetch: generate ref-prefixes when using a configured refspec
remote-curl: accept all encodings supported by curl
remote-curl: accept compressed responses with protocol v2
Casey Fitzpatrick (3):
submodule: clean up substitutions in script
submodule: add --progress option to add command
submodule: add --dissociate option to add/update commands
Christian Couder (6):
perf/aggregate: add display_dir()
perf/aggregate: add --sort-by=regression option
perf/run: add --subsection option
t/perf: add scripts to bisect performance regressions
perf/aggregate: use Getopt::Long for option parsing
perf/bisect_run_script: disable codespeed
Christian Hesse (2):
perl: fix installing modules from contrib
Makefile: mark perllibdir as a .PHONY target
Clemens Buchacher (2):
git-gui: workaround ttk:style theme use
completion: improve ls-files filter performance
Dan Jacques (3):
Makefile: generate Perl header from template file
Makefile: add Perl runtime prefix support
exec_cmd: RUNTIME_PREFIX on some POSIX systems
Derrick Stolee (20):
packfile: define and use bsearch_pack()
sha1_name: use bsearch_pack() for abbreviations
csum-file: rename hashclose() to finalize_hashfile()
csum-file: refactor finalize_hashfile() method
commit-graph: add format document
graph: add commit graph design document
commit-graph: create git-commit-graph builtin
commit-graph: implement write_commit_graph()
commit-graph: implement git-commit-graph write
commit-graph: implement git commit-graph read
commit-graph: add core.commitGraph setting
commit-graph: close under reachability
commit: integrate commit graph with commit parsing
commit-graph: read only from specific pack-indexes
commit-graph: build graph from starting commits
commit-graph: implement "--append" option
treewide: rename tree to maybe_tree
commit: create get_commit_tree() method
treewide: replace maybe_tree with accessor methods
commit-graph: lazy-load trees for commits
Drew DeVault (1):
git-send-email: allow re-editing of message
Eckhard S. Maaß (1):
wt-status: use settings from git_diff_ui_config
Elijah Newren (70):
directory rename detection: basic testcases
directory rename detection: directory splitting testcases
directory rename detection: testcases to avoid taking detection too far
directory rename detection: partially renamed directory testcase/discussion
directory rename detection: files/directories in the way of some renames
directory rename detection: testcases checking which side did the rename
directory rename detection: more involved edge/corner testcases
directory rename detection: testcases exploring possibly suboptimal merges
directory rename detection: miscellaneous testcases to complete coverage
directory rename detection: tests for handling overwriting untracked files
directory rename detection: tests for handling overwriting dirty files
merge-recursive: move the get_renames() function
merge-recursive: introduce new functions to handle rename logic
merge-recursive: fix leaks of allocated renames and diff_filepairs
merge-recursive: make !o->detect_rename codepath more obvious
merge-recursive: split out code for determining diff_filepairs
merge-recursive: make a helper function for cleanup for handle_renames
merge-recursive: add get_directory_renames()
merge-recursive: check for directory level conflicts
merge-recursive: add computation of collisions due to dir rename & merging
merge-recursive: check for file level conflicts then get new name
merge-recursive: when comparing files, don't include trees
merge-recursive: apply necessary modifications for directory renames
merge-recursive: avoid clobbering untracked files with directory renames
merge-recursive: fix overwriting dirty files involved in renames
merge-recursive: fix remaining directory rename + dirty overwrite cases
directory rename detection: new testcases showcasing a pair of bugs
merge-recursive: avoid spurious rename/rename conflict from dir renames
merge-recursive: ensure we write updates for directory-renamed file
Documentation: fix several one-character-off spelling errors
Documentation: normalize spelling of 'normalised'
directory rename detection: basic testcases
directory rename detection: directory splitting testcases
directory rename detection: testcases to avoid taking detection too far
directory rename detection: partially renamed directory testcase/discussion
directory rename detection: files/directories in the way of some renames
directory rename detection: testcases checking which side did the rename
directory rename detection: more involved edge/corner testcases
directory rename detection: testcases exploring possibly suboptimal merges
directory rename detection: miscellaneous testcases to complete coverage
directory rename detection: tests for handling overwriting untracked files
directory rename detection: tests for handling overwriting dirty files
merge-recursive: move the get_renames() function
merge-recursive: introduce new functions to handle rename logic
merge-recursive: fix leaks of allocated renames and diff_filepairs
merge-recursive: make !o->detect_rename codepath more obvious
merge-recursive: split out code for determining diff_filepairs
merge-recursive: make a helper function for cleanup for handle_renames
Make running git under other debugger-like programs easy
unpack_trees: fix breakage when o->src_index != o->dst_index
merge-recursive: add get_directory_renames()
merge-recursive: check for directory level conflicts
merge-recursive: add computation of collisions due to dir rename & merging
merge-recursive: check for file level conflicts then get new name
merge-recursive: when comparing files, don't include trees
merge-recursive: apply necessary modifications for directory renames
merge-recursive: avoid clobbering untracked files with directory renames
merge-recursive: fix overwriting dirty files involved in renames
merge-recursive: fix remaining directory rename + dirty overwrite cases
directory rename detection: new testcases showcasing a pair of bugs
merge-recursive: avoid spurious rename/rename conflict from dir renames
merge-recursive: improve add_cacheinfo error handling
merge-recursive: move more is_dirty handling to merge_content
merge-recursive: avoid triggering add_cacheinfo error with dirty mod
t6046: testcases checking whether updates can be skipped in a merge
merge-recursive: fix was_tracked() to quit lying with some renamed paths
merge-recursive: fix remainder of was_dirty() to use original index
merge-recursive: make "Auto-merging" comment show for other merges
merge-recursive: fix check for skipability of working tree updates
merge-recursive: provide pair of `unpack_trees_{start,finish}()`
Eric Sunshine (5):
t3200: verify "branch --list" sanity when rebasing from detached HEAD
t2028: tighten grep expression to make "move worktree" test more robust
git-worktree.txt: recommend 'git worktree remove' over manual deletion
git-worktree.txt: unify command-line prompt in example blocks
configure.ac: fix botched FREAD_READS_DIRECTORIES check
Erik E Brady (1):
credential: ignore SIGPIPE when writing to credential helpers
Florian Gamböck (1):
completion: load completion file for external subcommand
Harald Nordgren (1):
ls-remote: create '--sort' option
Jameson Miller (3):
fast-import: rename mem_pool type to mp_block
fast-import: introduce mem_pool type
mem-pool: move reusable parts of memory pool into its own file
Jeff King (54):
diff-highlight: correct test graph diagram
diff-highlight: use test_tick in graph test
diff-highlight: prefer "echo" to "cat" in tests
diff-highlight: test interleaved parallel lines of history
diff-highlight: test graphs with --color
diff-highlight: use flush() helper consistently
diff-highlight: detect --graph by indent
set_git_dir: die when setenv() fails
add chdir-notify API
set_work_tree: use chdir_notify
refs: use chdir_notify to update cached relative paths
config: move flockfile() closer to unlocked functions
t5561: drop curl stderr redirects
t5561: skip tests if curl is not available
ref-filter: use "struct object_id" consistently
ref-filter: make ref_array_item allocation more consistent
ref-filter: factor ref_array pushing into its own function
t7004: fix mistaken tag name
gpg-interface: handle bool user.signingkey
gpg-interface: modernize function declarations
gpg-interface: use size_t for signature buffer size
gpg-interface: fix const-correctness of "eol" pointer
gpg-interface: extract gpg line matching helper
gpg-interface: find the last gpg signature line
apply: clarify "-p" documentation
pager: set COLUMNS to term_columns()
mark_tree_contents_uninteresting(): drop missing object check
mark_parents_uninteresting(): drop missing object check
mark_parents_uninteresting(): replace list with stack
mark_parents_uninteresting(): avoid most allocation
get_main_ref_store: BUG() when outside a repository
config: die when --blob is used outside a repository
http: use strbufs instead of fixed buffers
log_write_email_headers: use strbufs
shorten_unambiguous_ref: use xsnprintf
fmt_with_err: add a comment that truncation is OK
submodule-config: verify submodule names as paths
is_ntfs_dotgit: use a size_t for traversing string
is_hfs_dotgit: match other .git files
skip_prefix: add case-insensitive variant
verify_path: drop clever fallthrough
verify_dotfile: mention case-insensitivity in comment
update-index: stat updated files earlier
verify_path: disallow symlinks in .gitmodules
index-pack: make fsck error message more specific
fsck: simplify ".git" check
fsck: actually fsck blob data
fsck: detect gitmodules files
fsck: handle promisor objects in .gitmodules check
fsck: check .gitmodules content
fsck: call fsck_finish() after fscking objects
unpack-objects: call fsck_finish() after fscking objects
index-pack: check .gitmodules files with --strict
fsck: complain when .gitmodules is a symlink
Johannes Schindelin (68):
git_config_set: fix off-by-two
t1300: rename it to reflect that `repo-config` was deprecated
t1300: demonstrate that --replace-all can "invent" newlines
config --replace-all: avoid extra line breaks
t1300: avoid relying on a bug
t1300: remove unreasonable expectation from TODO
t5404: relax overzealous test
t1300: add a few more hairy examples of sections becoming empty
t1300: `--unset-all` can leave an empty section behind (bug)
config: introduce an optional event stream while parsing
config: avoid using the global variable `store`
config_set_store: rename some fields for consistency
git_config_set: do not use a state machine
git_config_set: make use of the config parser's event stream
git config --unset: remove empty sections (in the common case)
git_config_set: reuse empty sections
exec_cmd: provide a new-style RUNTIME_PREFIX helper for Windows
mingw/msvc: use the new-style RUNTIME_PREFIX helper
color: introduce support for colorizing stderr
push: test to verify that push errors are colored
config: document the settings to colorize push errors/hints
gettext: avoid initialization if the locale dir is not present
git_setup_gettext: plug memory leak
sequencer: avoid using errno clobbered by rollback_lock_file()
sequencer: make rearrange_squash() a bit more obvious
sequencer: refactor how original todo list lines are accessed
sequencer: offer helpful advice when a command was rescheduled
sequencer: introduce new commands to reset the revision
sequencer: introduce the `merge` command
sequencer: fast-forward `merge` commands, if possible
rebase-helper --make-script: introduce a flag to rebase merges
rebase: introduce the --rebase-merges option
sequencer: make refs generated by the `label` command worktree-local
sequencer: handle post-rewrite for merge commands
rebase --rebase-merges: avoid "empty merges"
pull: accept --rebase=merges to recreate the branch topology
rebase -i: introduce --rebase-merges=[no-]rebase-cousins
rebase -i --rebase-merges: add a section to the man page
argv_array: offer to split a string by whitespace
commit: Let the callback of for_each_mergetag return on error
replace: avoid using die() to indicate a bug
tests: introduce test_unset_prereq, for debugging
replace: "libify" create_graft() and callees
replace: prepare create_graft() for converting graft files wholesale
replace: introduce --convert-graft-file
Add a test for `git replace --convert-graft-file`
Deprecate support for .git/info/grafts
filter-branch: stop suggesting to use grafts
technical/shallow: stop referring to grafts
technical/shallow: describe why shallow cannot use replace refs
Remove obsolete script to convert grafts to replace refs
rebase -i: demonstrate bugs with fixup!/squash! commit messages
rebase -i: Handle "combination of <n> commits" with GETTEXT_POISON
sequencer: always commit without editing when asked for
rebase --skip: clean up commit message after a failed fixup/squash
sequencer: extract helper to update active_cache_tree
sequencer: learn about the special "fake root commit" handling
rebase -i --root: let the sequencer handle even the initial part
sequencer: allow introducing new root commits
rebase --rebase-merges: a "merge" into a new root is a fast-forward
rebase --rebase-merges: root commits can be cousins, too
test-tool: help verifying BUG() code paths
run-command: use BUG() to report bugs, not die()
Replace all die("BUG: ...") calls by BUG() ones
Convert remaining die*(BUG) messages
config: a user-provided invalid section is not a BUG
is_ntfs_dotgit: match other .git files
is_{hfs,ntfs}_dotgitmodules: add tests
Johannes Sixt (2):
sequencer: reset the committer date before commits
git: add -P as a short option for --no-pager
Jonathan Nieder (5):
sha1_file: allow map_sha1_file_1 to handle arbitrary repositories
sha1_file: allow sha1_loose_object_info to handle arbitrary repositories
Makefile: remove unused @@PERLLIBDIR@@ substitution variable
Makefile: quote $INSTLIBDIR when passing it to sed
packfile: add repository argument to packed_object_info
Jonathan Tan (4):
grep: remove "repo" arg from non-supporting funcs
upload-pack: fix error message typo
upload-pack: read config when serving protocol v2
{fetch,upload}-pack: support filter in protocol v2
Junio C Hamano (18):
stash: fix nonsense pipeline
The first batch for 2.18 cycle
The second batch for 2.18
The third batch for 2.18
Revert "Merge branch 'en/rename-directory-detection'"
gc: do not upcase error message shown with die()
parseopt: handle malformed --expire arguments more nicely
The fourth batch for 2.18
The fifth batch for 2.18
argv-array: return the pushed string from argv_push*()
Git 2.13.7
Git 2.14.4
Git 2.15.2
Git 2.16.4
Git 2.17.1
The sixth batch for 2.18
The seventh batch for 2.18
Git 2.18-rc0
Kaartic Sivaraam (1):
branch --list: print useful info whilst interactive rebasing a detached HEAD
Lars Schneider (10):
strbuf: remove unnecessary NUL assignment in xstrdup_tolower()
strbuf: add xstrdup_toupper()
strbuf: add a case insensitive starts_with()
utf8: teach same_encoding() alternative UTF encoding names
utf8: add function to detect prohibited UTF-16/32 BOM
utf8: add function to detect a missing UTF-16/32 BOM
convert: add 'working-tree-encoding' attribute
convert: check for detectable errors in UTF encodings
convert: add tracing for 'working-tree-encoding' attribute
convert: add round trip check based on 'core.checkRoundtripEncoding'
Leif Middelschulte (1):
merge-recursive: give notice when submodule commit gets fast-forwarded
Loganaden Velvindron (1):
http: allow use of TLS 1.3
Lucas Werkmeister (1):
daemon.c: fix condition for redirecting stderr
Luis Marsano (2):
git-credential-netrc: adapt to test framework for git
git-credential-netrc: accept gpg option
Martin Ågren (24):
git-shortlog.txt: reorder usages
shortlog: add usage-string for stdin-reading
shortlog: disallow left-over arguments outside repo
doc: convert \--option to --option
doc: convert [\--] to [--]
git-[short]log.txt: unify quoted standalone --
git-submodule.txt: quote usage in monospace, drop backslash
fast-export: fix regression skipping some merge-commits
http-fetch: make `-a` standard behaviour
walker: drop fields of `struct walker` which are always 1
t/helper/test-write-cache: clean up lock-handling
refs.c: do not die if locking fails in `write_pseudoref()`
refs.c: do not die if locking fails in `delete_pseudoref()`
lock_file: make function-local locks non-static
lock_file: move static locks into functions
refs.c: refer to "object ID", not "sha1", in error messages
t1400: add tests around adding/deleting pseudorefs
refs: handle zero oid for pseudorefs
merge: setup `opts` later in `checkout_fast_forward()`
config: free resources of `struct config_store_data`
config: let `config_store_data_clear()` handle `value_regex`
config: let `config_store_data_clear()` handle `key`
regex: do not call `regfree()` if compilation fails
unpack_trees_options: free messages when done
Michal Nazarewicz (1):
send-email: simplify Gmail example in the documentation
Michele Locati (1):
filter-branch: return 2 when nothing to rewrite
Nguyễn Thái Ngọc Duy (88):
repository: initialize the_repository in main()
repository.c: move env-related setup code back to environment.c
repository.c: delete dead functions
sha1_file.c: move delayed getenv(altdb) back to setup_git_env()
repository: delete ignore_env member
gc.txt: more details about what gc does
worktree: delete dead code
worktree prune: improve prune logic when worktree is moved
repository.h: add comment and clarify repo_set_gitdir
git.c: move cmd_struct declaration up
git.c: add hidden option --list-parseopt-builtins
completion: mention the oldest version we need to support
completion: factor out _git_xxx calling code
completion: add --option completion for most builtin commands
completion: delete option-only completion commands
completion: use __gitcomp_builtin in _git_ls_tree
completion: use __gitcomp_builtin in _git_cherry
packfile: keep prepare_packed_git() private
t/helper: add an empty test-tool program
t/helper: merge test-chmtime into test-tool
t/helper: merge test-sha1 into test-tool
t/helper: merge test-lazy-init-name-hash into test-tool
t/helper: merge test-config into test-tool
t/helper: merge test-ctype into test-tool
t/helper: merge test-date into test-tool
t/helper: merge (unused) test-delta into test-tool
t/helper: merge test-drop-caches into test-tool
t/helper: merge test-dump-cache-tree into test-tool
t/helper: merge test-dump-split-index into test-tool
t/helper: merge test-example-decorate into test-tool
t/helper: merge test-genrandom into test-tool
t/helper: merge test-hashmap into test-tool
t/helper: merge test-index-version into test-tool
t/helper: merge (unused) test-match-trees into test-tool
t/helper: merge (unused) test-mergesort into test-tool
t/helper: merge test-mktemp into test-tool
t/helper: merge test-online-cpus into test-tool
t/helper: merge test-path-utils into test-tool
t/helper: merge test-prio-queue into test-tool
t/helper: merge test-read-cache into test-tool
t/helper: merge test-ref-store into test-tool
t/helper: merge test-regex into test-tool
t/helper: merge test-revision-walking into test-tool
t/helper: merge test-run-command into test-tool
t/helper: merge test-scrap-cache-tree into test-tool
t/helper: merge test-sha1-array into test-tool
t/helper: merge test-sigchain into test-tool
t/helper: merge test-strcmp-offset into test-tool
t/helper: merge test-string-list into test-tool
t/helper: merge test-submodule-config into test-tool
t/helper: merge test-subprocess into test-tool
t/helper: merge test-urlmatch-normalization into test-tool
t/helper: merge test-wildmatch into test-tool
t/helper: merge test-write-cache into test-tool
trace.c: export trace_setup_key
read-cache.c: make $GIT_TEST_SPLIT_INDEX boolean
pack-objects: a bit of document about struct object_entry
pack-objects: turn type and in_pack_type to bitfields
pack-objects: use bitfield for object_entry::dfs_state
pack-objects: use bitfield for object_entry::depth
pack-objects: move in_pack_pos out of struct object_entry
pack-objects: move in_pack out of struct object_entry
pack-objects: refer to delta objects by index instead of pointer
pack-objects: shrink z_delta_size field in struct object_entry
pack-objects: don't check size when the object is bad
pack-objects: clarify the use of object_entry::size
pack-objects: shrink size field in struct object_entry
pack-objects: shrink delta_size field in struct object_entry
pack-objects: reorder members to shrink struct object_entry
ci: exercise the whole test suite with uncommon code in pack-objects
t7700: have closing quote of a test at the beginning of line
repack: add --keep-pack option
gc: add --keep-largest-pack option
gc: add gc.bigPackThreshold config
gc: handle a corner case in gc.bigPackThreshold
gc --auto: exclude base pack if not enough mem to "repack -ad"
pack-objects: show some progress when counting kept objects
connect.c: mark die_initial_contact() NORETURN
Makefile: detect compiler and enable more warnings in DEVELOPER=1
submodule--helper: don't print null in 'submodule status'
doc: keep first level section header in upper case
pack-objects: validation and documentation about unreachable options
completion: fix misspelled config key aliasesfiletype
repository: fix free problem with repo_clear(the_repository)
pack-format.txt: more details on pack file format
column: fix off-by-one default width
commit.h: rearrange 'index' to shrink struct commit
travis-ci: run gcc-8 on linux-gcc jobs
Olga Telezhnaya (6):
ref-filter: add shortcut to work with strbufs
ref-filter: start adding strbufs with errors
ref-filter: add return value && strbuf to handlers
ref-filter: change parsing function error handling
ref-filter: add return value to parsers
ref-filter: libify get_ref_atom_value()
Paul-Sebastian Ungureanu (2):
parse-options: do not show usage upon invalid option value
t/helper: 'test-chmtime (--get|-g)' to print only the mtime
Philip Oakley (1):
Avoid multiple PREFIX definitions
Phillip Wood (7):
rebase --root: stop assuming squash_onto is unset
rebase -i --keep-empty: don't prune empty commits
rebase: respect --no-keep-empty
rebase: extend --signoff support
rebase -p: error out if --signoff is given
rebase --keep-empty: always use interactive rebase
rebase --rebase-merges: add test for --keep-empty
Pratik Karki (1):
test: avoid pipes in git related commands for test
Ramsay Jones (1):
BUG_exit_code: fix sparse "symbol not declared" warning
René Scharfe (8):
sha1_name: use bsearch_pack() in unique_in_pack()
bisect: use oid_to_hex() for converting object_id hashes to hex strings
run-command: use strbuf_addstr() for adding a string to a strbuf
submodule: check for NULL return of get_submodule_ref_store()
replace_object: use oidmap
fast-export: avoid NULL pointer arithmetic
t5512: run git fetch inside test
fsmonitor: use internal argv_array of struct child_process
Ryan Dammrose (1):
push: colorize errors
SZEDER Gábor (22):
test_must_be_empty: simplify file existence check
t9902-completion: add tests demonstrating issues with quoted pathnames
completion: move __git_complete_index_file() next to its helpers
completion: simplify prefix path component handling during path completion
completion: support completing non-ASCII pathnames
completion: improve handling quoted paths on the command line
completion: let 'ls-files' and 'diff-index' filter matching paths
completion: use 'awk' to strip trailing path components
t9902-completion: ignore COMPREPLY element order in some tests
completion: remove repeated dirnames with 'awk' during path completion
completion: improve handling quoted paths in 'git ls-files's output
completion: fill COMPREPLY directly when completing paths
completion: reduce overhead of clearing cached --options
docs/git-gc: fix minor rendering issue
coccinelle: avoid wrong transformation suggestions from commit.cocci
t6050-replace: don't disable stdin for the whole test script
t5310-pack-bitmaps: make JGit tests work with GIT_TEST_SPLIT_INDEX
t5516-fetch-push: fix 'push with dry-run' test
t5516-fetch-push: fix broken &&-chain
t7005-editor: get rid of the SPACES_IN_FILENAMES prereq
completion: don't return with error from __gitcomp_file_direct()
t9902-completion: exercise __git_complete_index_file() directly
Sergey Organov (1):
glossary: substitute "ancestor" for "direct ancestor" in 'push' description.
Stefan Agner (1):
send-email: avoid duplicate In-Reply-To/References
Stefan Beller (81):
repository: introduce raw object store field
object-store: migrate alternates struct and functions from cache.h
object-store: move alt_odb_list and alt_odb_tail to object store
object-store: free alt_odb_list
object-store: move packed_git and packed_git_mru to object store
object-store: close all packs upon clearing the object store
pack: move prepare_packed_git_run_once to object store
pack: move approximate object count to object store
sha1_file: add raw_object_store argument to alt_odb_usable
sha1_file: add repository argument to link_alt_odb_entry
sha1_file: add repository argument to read_info_alternates
sha1_file: add repository argument to link_alt_odb_entries
sha1_file: add repository argument to prepare_alt_odb
sha1_file: allow link_alt_odb_entries to handle arbitrary repositories
sha1_file: allow prepare_alt_odb to handle arbitrary repositories
sha1_file: add repository argument to sha1_file_name
sha1_file: add repository argument to stat_sha1_file
sha1_file: add repository argument to open_sha1_file
sha1_file: add repository argument to map_sha1_file_1
sha1_file: add repository argument to map_sha1_file
sha1_file: add repository argument to sha1_loose_object_info
sha1_file: allow sha1_file_name to handle arbitrary repositories
sha1_file: allow stat_sha1_file to handle arbitrary repositories
sha1_file: allow open_sha1_file to handle arbitrary repositories
sha1_file: allow map_sha1_file to handle arbitrary repositories
packfile: allow prepare_packed_git_mru to handle arbitrary repositories
packfile: allow rearrange_packed_git to handle arbitrary repositories
packfile: allow install_packed_git to handle arbitrary repositories
packfile: add repository argument to prepare_packed_git_one
packfile: add repository argument to prepare_packed_git
packfile: add repository argument to reprepare_packed_git
packfile: allow prepare_packed_git_one to handle arbitrary repositories
packfile: allow prepare_packed_git to handle arbitrary repositories
packfile: allow reprepare_packed_git to handle arbitrary repositories
packfile: add repository argument to find_pack_entry
packfile: allow find_pack_entry to handle arbitrary repositories
submodule.h: drop declaration of connect_work_tree_and_git_dir
submodule-config: allow submodule_free to handle arbitrary repositories
submodule-config: add repository argument to submodule_from_{name, path}
submodule-config: remove submodule_from_cache
submodule: fixup nested submodules after moving the submodule
write_or_die.c: rename to use dashes in file name
unicode_width.h: rename to use dash in file name
exec_cmd: rename to use dash in file name
sha1_name.c: rename to use dash in file name
sha1_file.c: rename to use dash in file name
replace_object.c: rename to use dash in file name
replace-object: move replace_map to object store
object-store: move lookup_replace_object to replace-object.h
replace-object: eliminate replace objects prepared flag
replace-object: check_replace_refs is safe in multi repo environment
refs: add repository argument to get_main_ref_store
refs: add repository argument to for_each_replace_ref
replace-object: add repository argument to prepare_replace_object
replace-object: add repository argument to do_lookup_replace_object
replace-object: add repository argument to lookup_replace_object
refs: store the main ref store inside the repository struct
refs: allow for_each_replace_ref to handle arbitrary repositories
replace-object: allow prepare_replace_object to handle arbitrary repositories
replace-object: allow do_lookup_replace_object to handle arbitrary repositories
replace-object: allow lookup_replace_object to handle arbitrary repositories
worktree: accept -f as short for --force for removal
builtin/blame: dim uninteresting metadata lines
builtin/blame: highlight recently changed lines
builtin/blame: add new coloring scheme config
cache.h: add repository argument to oid_object_info_extended
cache.h: add repository argument to oid_object_info
packfile: add repository argument to retry_bad_packed_offset
packfile: add repository argument to packed_to_object_type
packfile: add repository argument to read_object
packfile: add repository argument to unpack_entry
packfile: add repository argument to cache_or_unpack_entry
cache.h: allow oid_object_info to handle arbitrary repositories
git-rebase--interactive: clarify arguments
object.c: free replace map in raw_object_store_clear
replace-object.c: remove the_repository from prepare_replace_object
grep: handle corrupt index files early
git-submodule.sh: try harder to fetch a submodule
submodule.c: move submodule merging to merge-recursive.c
merge-recursive: i18n submodule merge output and respect verbosity
object.c: clear replace map before freeing it
Takuto Ikuta (1):
fetch-pack.c: use oidset to check existence of loose object
Tao Qingyun (1):
t1510-repo-setup.sh: remove useless mkdir
Taylor Blau (5):
builtin/config.c: treat type specifiers singularly
builtin/config.c: support `--type=<type>` as preferred alias for `--<type>`
builtin/config: introduce `--default`
config.c: introduce 'git_config_color' to parse ANSI colors
builtin/config: introduce `color` type specifier
Thomas Gummerer (10):
stash push: avoid printing errors
stash push -u: don't create empty stash
stash: drop superfluos pathspec parameter
SubmittingPatches: mention the git contacts command
completion: stop showing 'save' for stash by default
completion: make stash -p and alias for stash push -p
worktree: remove extra members from struct add_opts
worktree: improve message when creating a new worktree
worktree: factor out dwim_branch function
worktree: teach "add" to check out existing branches
Todd Zullinger (1):
doc/clone: update caption for GIT URLS cross-reference
Torsten Bögershausen (1):
test: correct detection of UTF8_NFD_TO_NFC for APFS
Wink Saville (8):
rebase-interactive: simplify pick_on_preserving_merges
rebase: update invocation of rebase dot-sourced scripts
rebase: reindent function git_rebase__interactive
rebase: extract functions out of git_rebase__interactive
rebase: add and use git_rebase__interactive__preserve_merges
rebase: remove unused code paths from git_rebase__interactive
rebase: remove unused code paths from git_rebase__interactive__preserve_merges
rebase: remove merges_option and a blank line
Yuki Kokubun (1):
filter-branch: fix errors caused by refs that point at non-committish
brian m. carlson (121):
bulk-checkin: convert index_bulk_checkin to struct object_id
builtin/write-tree: convert to struct object_id
cache-tree: convert write_*_as_tree to object_id
cache-tree: convert remnants to struct object_id
resolve-undo: convert struct resolve_undo_info to object_id
tree: convert read_tree_recursive to struct object_id
ref-filter: convert grab_objectname to struct object_id
strbuf: convert strbuf_add_unique_abbrev to use struct object_id
wt-status: convert struct wt_status_state to object_id
Convert find_unique_abbrev* to struct object_id
http-walker: convert struct object_request to use struct object_id
send-pack: convert remaining functions to struct object_id
replace_object: convert struct replace_object to object_id
builtin/mktag: convert to struct object_id
archive: convert write_archive_entry_fn_t to object_id
archive: convert sha1_file_to_archive to struct object_id
builtin/index-pack: convert struct ref_delta_entry to object_id
sha1_file: convert read_loose_object to use struct object_id
sha1_file: convert check_sha1_signature to struct object_id
streaming: convert open_istream to use struct object_id
builtin/mktree: convert to struct object_id
sha1_file: convert assert_sha1_type to object_id
sha1_file: convert retry_bad_packed_offset to struct object_id
packfile: convert unpack_entry to struct object_id
Convert remaining callers of sha1_object_info_extended to object_id
sha1_file: convert sha1_object_info* to object_id
builtin/fmt-merge-msg: convert remaining code to object_id
builtin/notes: convert static functions to object_id
tree-walk: convert get_tree_entry_follow_symlinks internals to object_id
streaming: convert istream internals to struct object_id
tree-walk: convert tree entry functions to object_id
sha1_file: convert read_object_with_reference to object_id
sha1_file: convert read_sha1_file to struct object_id
Convert lookup_replace_object to struct object_id
sha1_file: introduce a constant for max header length
convert: convert to struct object_id
sha1_name: convert struct min_abbrev_data to object_id
t1011: abstract away SHA-1-specific constants
t1304: abstract away SHA-1-specific constants
t1300: abstract away SHA-1-specific constants
t1405: sort reflog entries in a hash-independent way
t1411: abstract away SHA-1-specific constants
t1507: abstract away SHA-1-specific constants
t2020: abstract away SHA-1 specific constants
t2101: modernize test style
t2101: abstract away SHA-1-specific constants
t2107: abstract away SHA-1-specific constants
format-patch: make cover letters always text/plain
cache: add a function to read an object ID from a buffer
server-info: remove unused members from struct pack_info
Remove unused member in struct object_context
packfile: remove unused member from struct pack_entry
packfile: convert has_sha1_pack to object_id
sha1-file: convert freshen functions to object_id
packfile: convert find_pack_entry to object_id
packfile: abstract away hash constant values
pack-objects: abstract away hash algorithm
pack-redundant: abstract away hash algorithm
tree-walk: avoid hard-coded 20 constant
tree-walk: convert get_tree_entry_follow_symlinks to object_id
fsck: convert static functions to struct object_id
submodule-config: convert structures to object_id
split-index: convert struct split_index to object_id
Update struct index_state to use struct object_id
pack-redundant: convert linked lists to use struct object_id
index-pack: abstract away hash function constant
commit: convert uses of get_sha1_hex to get_oid_hex
dir: convert struct untracked_cache_dir to object_id
http: eliminate hard-coded constants
revision: replace use of hard-coded constants
upload-pack: replace use of several hard-coded constants
diff: specify abbreviation size in terms of the_hash_algo
builtin/receive-pack: avoid hard-coded constants for push certs
sha1-file: add functions for hex empty tree and blob OIDs
builtin/am: convert uses of EMPTY_TREE_SHA1_BIN to the_hash_algo
builtin/merge: switch tree functions to use object_id
merge: convert empty tree constant to the_hash_algo
sequencer: convert one use of EMPTY_TREE_SHA1_HEX
submodule: convert several uses of EMPTY_TREE_SHA1_HEX
wt-status: convert two uses of EMPTY_TREE_SHA1_HEX
builtin/receive-pack: convert one use of EMPTY_TREE_SHA1_HEX
builtin/reset: convert use of EMPTY_TREE_SHA1_BIN
sha1_file: convert cached object code to struct object_id
cache-tree: use is_empty_tree_oid
sequencer: use the_hash_algo for empty tree object ID
dir: use the_hash_algo for empty blob object ID
sha1_file: only expose empty object constants through git_hash_algo
Update shell scripts to compute empty tree object ID
add--interactive: compute the empty tree value
merge-one-file: compute empty blob object ID
Documentation: use 8-space tabs with Asciidoctor
Documentation: render revisions correctly under Asciidoctor
mailmap: update brian m. carlson's email address
t/test-lib: add an SHA1 prerequisite
t/test-lib: introduce ZERO_OID
t: switch $_z40 to $ZERO_OID
t/test-lib: introduce OID_REGEX
t: switch $_x40 to $OID_REGEX
t0000: annotate with SHA1 prerequisite
t1007: annotate with SHA1 prerequisite
t1512: skip test if not using SHA-1
t4044: skip test if not using SHA-1
t: skip pack tests if not using SHA-1
t2203: abstract away SHA-1-specific constants
t3103: abstract away SHA-1-specific constants
t3702: abstract away SHA-1-specific constants
t3905: abstract away SHA-1-specific constants
t4007: abstract away SHA-1-specific constants
t4008: abstract away SHA-1-specific constants
t4014: abstract away SHA-1-specific constants
t4020: abstract away SHA-1-specific constants
t4022: abstract away SHA-1-specific constants
t4029: fix test indentation
t4029: abstract away SHA-1-specific constants
t4030: abstract away SHA-1-specific constants
t/lib-diff-alternative: abstract away SHA-1-specific constants
t4205: sort log output in a hash-independent way
t4042: abstract away SHA-1-specific constants
t4045: abstract away SHA-1-specific constants
t4208: abstract away SHA-1-specific constants
t5300: abstract away SHA-1-specific constants
Ævar Arnfjörð Bjarmason (21):
configure: fix a regression in PCRE v1 detection
configure: detect redundant --with-libpcre & --with-libpcre1
Makefile: make USE_LIBPCRE=YesPlease mean v2, not v1
Makefile: fix broken bindir_relative variable
Makefile: add a gitexecdir_relative variable
Makefile: optionally symlink libexec/git-core binaries to bin/git
Remove contrib/examples/*
doc hash-function-transition: clarify how older gits die on NewHash
doc hash-function-transition: clarify what SHAttered means
git-svn: avoid warning on undef readline()
Makefile: add a DEVOPTS to suppress -Werror under DEVELOPER
Makefile: add a DEVOPTS to get all of -Wextra
git{,-blame}.el: remove old bitrotting Emacs code
.gitattributes: add *.pl extension for Perl
.gitattributes: use the "perl" differ for Perl
.gitattributes: add a diff driver for Python
sha1-name.c: remove stray newline
sha1-array.h: align function arguments
git-p4: change "commitish" typo to "committish"
sha1-name.c: move around the collect_ambiguous() function
get_short_oid: sort ambiguous objects by type, then SHA-1
^ permalink raw reply [relevance 3%]
* What's cooking in git.git (May 2018, #02; Thu, 17)
@ 2018-05-17 6:01 3% Junio C Hamano
0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2018-05-17 6:01 UTC (permalink / raw)
To: git
Here are the topics that have been cooking. Commits prefixed with
'-' are only in 'pu' (proposed updates) while commits prefixed with
'+' are in 'next'. The ones marked with '.' do not appear in any of
the integration branches, but I am still holding onto them.
You can find the changes described here in the integration branches
of the repositories listed at
http://git-blame.blogspot.com/p/git-public-repositories.html
--------------------------------------------------
[Graduated to "master"]
* hn/sort-ls-remote (2018-04-09) 1 commit
(merged to 'next' on 2018-04-30 at 244ca5d30a)
+ ls-remote: create '--sort' option
"git ls-remote" learned an option to allow sorting its output based
on the refnames being shown.
* sb/object-store-replace (2018-04-12) 15 commits
(merged to 'next' on 2018-04-25 at 9a213fb505)
+ replace-object: allow lookup_replace_object to handle arbitrary repositories
+ replace-object: allow do_lookup_replace_object to handle arbitrary repositories
+ replace-object: allow prepare_replace_object to handle arbitrary repositories
+ refs: allow for_each_replace_ref to handle arbitrary repositories
+ refs: store the main ref store inside the repository struct
+ replace-object: add repository argument to lookup_replace_object
+ replace-object: add repository argument to do_lookup_replace_object
+ replace-object: add repository argument to prepare_replace_object
+ refs: add repository argument to for_each_replace_ref
+ refs: add repository argument to get_main_ref_store
+ replace-object: check_replace_refs is safe in multi repo environment
+ replace-object: eliminate replace objects prepared flag
+ object-store: move lookup_replace_object to replace-object.h
+ replace-object: move replace_map to object store
+ replace_object: use oidmap
(this branch is used by sb/object-store-alloc and sb/oid-object-info.)
The effort to pass the repository in-core structure throughout the
API continues. This round deals with the code that implements the
refs/replace/ mechanism.
* ab/git-svn-get-record-typofix (2018-04-09) 1 commit
(merged to 'next' on 2018-04-30 at 23f875f6b9)
+ git-svn: avoid warning on undef readline()
"git svn" had a minor thinko/typo which has been fixed.
* ab/nuke-emacs-contrib (2018-04-16) 1 commit
(merged to 'next' on 2018-04-25 at 9b133d8a65)
+ git{,-blame}.el: remove old bitrotting Emacs code
The scripts in contrib/emacs/ have outlived their usefulness and
have been replaced with a stub that errors out and tells the user
there are replacements.
* ab/simplify-perl-makefile (2018-04-19) 2 commits
(merged to 'next' on 2018-04-25 at 906cf21682)
+ Makefile: mark perllibdir as a .PHONY target
(merged to 'next' on 2018-04-17 at 4448756934)
+ perl: fix installing modules from contrib
Recent simplification of build procedure forgot a bit of tweak to
the build procedure of contrib/mw-to-git/
* bt/gpg-interface (2018-04-16) 7 commits
(merged to 'next' on 2018-04-30 at 50c507b7d8)
+ gpg-interface: find the last gpg signature line
+ gpg-interface: extract gpg line matching helper
+ gpg-interface: fix const-correctness of "eol" pointer
+ gpg-interface: use size_t for signature buffer size
+ gpg-interface: modernize function declarations
+ gpg-interface: handle bool user.signingkey
+ t7004: fix mistaken tag name
What is queued here is only the obviously correct and
uncontroversial code clean-up part, which is an earlier 7 patches,
of a larger series.
The remainder that is not queued introduces a few configuration
variables to deal with e-signature backends with different
signature format.
* bw/protocol-v2 (2018-03-15) 35 commits
(merged to 'next' on 2018-04-11 at 23ee234a2c)
+ remote-curl: don't request v2 when pushing
+ remote-curl: implement stateless-connect command
+ http: eliminate "# service" line when using protocol v2
+ http: don't always add Git-Protocol header
+ http: allow providing extra headers for http requests
+ remote-curl: store the protocol version the server responded with
+ remote-curl: create copy of the service name
+ pkt-line: add packet_buf_write_len function
+ transport-helper: introduce stateless-connect
+ transport-helper: refactor process_connect_service
+ transport-helper: remove name parameter
+ connect: don't request v2 when pushing
+ connect: refactor git_connect to only get the protocol version once
+ fetch-pack: support shallow requests
+ fetch-pack: perform a fetch using v2
+ upload-pack: introduce fetch server command
+ push: pass ref prefixes when pushing
+ fetch: pass ref prefixes when fetching
+ ls-remote: pass ref prefixes when requesting a remote's refs
+ transport: convert transport_get_remote_refs to take a list of ref prefixes
+ transport: convert get_refs_list to take a list of ref prefixes
+ connect: request remote refs using v2
+ ls-refs: introduce ls-refs server command
+ serve: introduce git-serve
+ test-pkt-line: introduce a packet-line test helper
+ protocol: introduce enum protocol_version value protocol_v2
+ transport: store protocol version
+ connect: discover protocol version outside of get_remote_heads
+ connect: convert get_remote_heads to use struct packet_reader
+ transport: use get_refs_via_connect to get refs
+ upload-pack: factor out processing lines
+ upload-pack: convert to a builtin
+ pkt-line: add delim packet support
+ pkt-line: allow peeking a packet line without consuming it
+ pkt-line: introduce packet_read_with_status
(this branch is used by bw/server-options and jt/partial-clone-proto-v2.)
The beginning of the next-gen transfer protocol.
* dj/runtime-prefix (2018-04-24) 7 commits
(merged to 'next' on 2018-04-25 at e7e635a70e)
+ Makefile: quote $INSTLIBDIR when passing it to sed
+ Makefile: remove unused @@PERLLIBDIR@@ substitution variable
(merged to 'next' on 2018-04-17 at a69aaa7a22)
+ mingw/msvc: use the new-style RUNTIME_PREFIX helper
+ exec_cmd: provide a new-style RUNTIME_PREFIX helper for Windows
+ exec_cmd: RUNTIME_PREFIX on some POSIX systems
+ Makefile: add Perl runtime prefix support
+ Makefile: generate Perl header from template file
(this branch is tangled with js/runtime-prefix.)
A build-time option has been added to allow Git to be told to refer
to its associated files relative to the main binary, in the same
way that has been possible on Windows for quite some time, for
Linux, BSDs and Darwin.
* ds/commit-graph (2018-04-11) 16 commits
(merged to 'next' on 2018-04-25 at 18af3d28d9)
+ commit-graph: implement "--append" option
+ commit-graph: build graph from starting commits
+ commit-graph: read only from specific pack-indexes
+ commit: integrate commit graph with commit parsing
+ commit-graph: close under reachability
+ commit-graph: add core.commitGraph setting
+ commit-graph: implement git commit-graph read
+ commit-graph: implement git-commit-graph write
+ commit-graph: implement write_commit_graph()
+ commit-graph: create git-commit-graph builtin
+ graph: add commit graph design document
+ commit-graph: add format document
+ csum-file: refactor finalize_hashfile() method
+ csum-file: rename hashclose() to finalize_hashfile()
+ Merge branch 'jk/cached-commit-buffer' into HEAD
+ Merge branch 'jt/binsearch-with-fanout' into HEAD
(this branch is used by ds/generation-numbers and ds/lazy-load-trees.)
Precompute and store information necessary for ancestry traversal
in a separate file to optimize graph walking.
Will merge to 'master'.
* jc/parseopt-expiry-errors (2018-04-23) 2 commits
(merged to 'next' on 2018-04-30 at 637085f3d8)
+ parseopt: handle malformed --expire arguments more nicely
+ gc: do not upcase error message shown with die()
"git gc --prune=nonsense" spent long time repacking and then
silently failed when underlying "git prune --expire=nonsense"
failed to parse its command line. This has been corrected.
* js/colored-push-errors (2018-04-24) 4 commits
(merged to 'next' on 2018-04-30 at 31076c52a2)
+ config: document the settings to colorize push errors/hints
+ push: test to verify that push errors are colored
+ push: colorize errors
+ color: introduce support for colorizing stderr
Error messages from "git push" can be painted for more visibility.
* js/empty-config-section-fix (2018-04-09) 15 commits
(merged to 'next' on 2018-04-25 at 1690df3e5f)
+ git_config_set: reuse empty sections
+ git config --unset: remove empty sections (in the common case)
+ git_config_set: make use of the config parser's event stream
+ git_config_set: do not use a state machine
+ config_set_store: rename some fields for consistency
+ config: avoid using the global variable `store`
+ config: introduce an optional event stream while parsing
+ t1300: `--unset-all` can leave an empty section behind (bug)
+ t1300: add a few more hairy examples of sections becoming empty
+ t1300: remove unreasonable expectation from TODO
+ t1300: avoid relying on a bug
+ config --replace-all: avoid extra line breaks
+ t1300: demonstrate that --replace-all can "invent" newlines
+ t1300: rename it to reflect that `repo-config` was deprecated
+ git_config_set: fix off-by-two
"git config --unset a.b", when "a.b" is the last variable in an
otherwise empty section "a", left an empty section "a" behind, and
worse yet, a subsequent "git config a.c value" did not reuse that
empty shell and instead created a new one. These have been
(partially) corrected.
* js/ident-date-fix (2018-04-19) 1 commit
(merged to 'next' on 2018-04-30 at d50ec2f4c1)
+ sequencer: reset the committer date before commits
During a "rebase -i" session, the code could give older timestamp
to commits created by later "pick" than an earlier "reword", which
has been corrected.
* js/runtime-prefix (2018-04-24) 8 commits
(merged to 'next' on 2018-04-30 at c6cfccf40e)
+ Avoid multiple PREFIX definitions
+ git_setup_gettext: plug memory leak
+ gettext: avoid initialization if the locale dir is not present
(merged to 'next' on 2018-04-17 at a69aaa7a22)
+ mingw/msvc: use the new-style RUNTIME_PREFIX helper
+ exec_cmd: provide a new-style RUNTIME_PREFIX helper for Windows
+ exec_cmd: RUNTIME_PREFIX on some POSIX systems
+ Makefile: add Perl runtime prefix support
+ Makefile: generate Perl header from template file
(this branch is tangled with dj/runtime-prefix.)
* ls/checkout-encoding (2018-04-16) 10 commits
(merged to 'next' on 2018-04-25 at e0f8554b2a)
+ convert: add round trip check based on 'core.checkRoundtripEncoding'
+ convert: add tracing for 'working-tree-encoding' attribute
+ convert: check for detectable errors in UTF encodings
+ convert: add 'working-tree-encoding' attribute
+ utf8: add function to detect a missing UTF-16/32 BOM
+ utf8: add function to detect prohibited UTF-16/32 BOM
+ utf8: teach same_encoding() alternative UTF encoding names
+ strbuf: add a case insensitive starts_with()
+ strbuf: add xstrdup_toupper()
+ strbuf: remove unnecessary NUL assignment in xstrdup_tolower()
The new "checkout-encoding" attribute can ask Git to convert the
contents to the specified encoding when checking out to the working
tree (and the other way around when checking in).
* ma/double-dashes-in-docs (2018-04-18) 4 commits
(merged to 'next' on 2018-04-25 at aaac2dc63c)
+ git-submodule.txt: quote usage in monospace, drop backslash
+ git-[short]log.txt: unify quoted standalone --
+ doc: convert [\--] to [--]
+ doc: convert \--option to --option
Doc formatting updates.
* ma/fast-export-skip-merge-fix (2018-04-21) 1 commit
(merged to 'next' on 2018-04-30 at f7fca02ab1)
+ fast-export: fix regression skipping some merge-commits
"git fast-export" had a regression in v2.15.0 era where it skipped
some merge commits in certain cases, which has been corrected.
* ma/http-walker-no-partial (2018-04-24) 2 commits
(merged to 'next' on 2018-04-30 at 4582c99ba8)
+ walker: drop fields of `struct walker` which are always 1
+ http-fetch: make `-a` standard behavior
"git http-fetch" (deprecated) had an optional and experimental
"feature" to fetch only commits and/or trees, which nobody used.
This has been removed.
* nd/submodule-status-fix (2018-04-19) 1 commit
(merged to 'next' on 2018-04-30 at 34d1f9ca83)
+ submodule--helper: don't print null in 'submodule status'
"git submodule status" did not check the symbolic revision name it
computed for the submodule HEAD is not the NULL, and threw it at
printf routines, which has been corrected.
* nd/warn-more-for-devs (2018-04-16) 4 commits
(merged to 'next' on 2018-04-25 at 2978e61414)
+ Makefile: add a DEVOPTS to get all of -Wextra
+ Makefile: add a DEVOPTS to suppress -Werror under DEVELOPER
+ Makefile: detect compiler and enable more warnings in DEVELOPER=1
+ connect.c: mark die_initial_contact() NORETURN
The build procedure "make DEVELOPER=YesPlease" learned to enable a
bit more warning options depending on the compiler used to help
developers more. There also is "make DEVOPTS=tokens" knob
available now, for those who want to help fixing warnings we
usually ignore, for example.
* ot/libify-get-ref-atom-value (2018-03-29) 6 commits
(merged to 'next' on 2018-04-25 at 056bcaa69c)
+ ref-filter: libify get_ref_atom_value()
+ ref-filter: add return value to parsers
+ ref-filter: change parsing function error handling
+ ref-filter: add return value && strbuf to handlers
+ ref-filter: start adding strbufs with errors
+ ref-filter: add shortcut to work with strbufs
Code restructuring, in preparation for further work.
* sa/send-email-dedup-some-headers (2018-04-19) 1 commit
(merged to 'next' on 2018-04-30 at 2a1fd8217e)
+ send-email: avoid duplicate In-Reply-To/References
When fed input that already has In-Reply-To: and/or References:
headers and told to add the same information, "git send-email"
added these headers separately, instead of appending to an existing
one, which is a violation of the RFC. This has been corrected.
* sb/submodule-move-nested (2018-03-29) 6 commits
(merged to 'next' on 2018-04-25 at 86b177433a)
+ submodule: fixup nested submodules after moving the submodule
+ submodule-config: remove submodule_from_cache
+ submodule-config: add repository argument to submodule_from_{name, path}
+ submodule-config: allow submodule_free to handle arbitrary repositories
+ grep: remove "repo" arg from non-supporting funcs
+ submodule.h: drop declaration of connect_work_tree_and_git_dir
Moving a submodule that itself has submodule in it with "git mv"
forgot to make necessary adjustment to the nested sub-submodules;
now the codepath learned to recurse into the submodules.
* sb/worktree-remove-opt-force (2018-04-18) 1 commit
(merged to 'next' on 2018-04-25 at 0367d52a4b)
+ worktree: accept -f as short for --force for removal
"git worktree remove" learned that "-f" is a shorthand for
"--force" option, just like for "git worktree add".
* sg/completion-clear-cached (2018-04-18) 1 commit
(merged to 'next' on 2018-04-25 at 9178da6c3d)
+ completion: reduce overhead of clearing cached --options
The completion script (in contrib/) learned to clear cached list of
command line options upon dot-sourcing it again in a more efficient
way.
* sg/doc-gc-quote-mismatch-fix (2018-04-18) 1 commit
(merged to 'next' on 2018-04-25 at bc3d1abf45)
+ docs/git-gc: fix minor rendering issue
Doc formatting fix.
* so/glossary-ancestor (2018-04-17) 1 commit
(merged to 'next' on 2018-04-25 at 0a849fee00)
+ glossary: substitute "ancestor" for "direct ancestor" in 'push' description.
Docfix.
* tb/config-default (2018-04-23) 3 commits
(merged to 'next' on 2018-04-25 at 59bb6beb2a)
+ builtin/config: introduce `color` type specifier
+ config.c: introduce 'git_config_color' to parse ANSI colors
+ builtin/config: introduce `--default`
(this branch uses tb/config-type.)
"git config --get" learned the "--default" option, to help the
calling script. Building on top of the tb/config-type topic, the
"git config" learns "--type=color" type. Taken together, you can
do things like "git config --get foo.color --default blue" and get
the ANSI color sequence for the color given to foo.color variable,
or "blue" if the variable does not exist.
* tb/config-type (2018-04-19) 2 commits
(merged to 'next' on 2018-04-25 at fe69e93c82)
+ builtin/config.c: support `--type=<type>` as preferred alias for `--<type>`
+ builtin/config.c: treat type specifiers singularly
(this branch is used by tb/config-default.)
The "git config" command uses separate options e.g. "--int",
"--bool", etc. to specify what type the caller wants the value to
be interpreted as. A new "--type=<typename>" option has been
introduced, which would make it cleaner to define new types.
* tg/demote-stash-save-in-completion (2018-04-20) 2 commits
(merged to 'next' on 2018-04-30 at 93d0af5375)
+ completion: make stash -p and alias for stash push -p
+ completion: stop showing 'save' for stash by default
The command line completion (in contrib/) has been taught that "git
stash save" has been deprecated ("git stash push" is the preferred
spelling in the new world) and does not offer it as a possible
completion candidate when "git stash push" can be.
* tq/t1510 (2018-04-17) 1 commit
(merged to 'next' on 2018-04-25 at 5710c81979)
+ t1510-repo-setup.sh: remove useless mkdir
Test cleanup.
* tz/doc-git-urls-reference (2018-04-20) 1 commit
(merged to 'next' on 2018-04-30 at 39926c99fd)
+ doc/clone: update caption for GIT URLS cross-reference
Doc fix.
--------------------------------------------------
[New Topics]
* hn/sort-ls-remote (2018-05-14) 1 commit
(merged to 'next' on 2018-05-16 at 64336850f2)
+ t5512: run git fetch inside test
Hotfix.
Will merge to 'master'.
* sb/object-store-replace (2018-05-10) 2 commits
(merged to 'next' on 2018-05-16 at 41bbedcc81)
+ replace-object.c: remove the_repository from prepare_replace_object
+ object.c: free replace map in raw_object_store_clear
Hotfix.
Will merge to 'master'.
* sg/t6500-no-redirect-of-stdin (2018-05-09) 1 commit
- t6050-replace: don't disable stdin for the whole test script
Test cleanup.
Will merge to 'next'.
* ao/config-api-doc (2018-05-11) 1 commit
- doc: fix config API documentation about config_with_options
Doc update.
Will merge to 'next'.
* bc/hash-independent-tests (2018-05-16) 28 commits
- t5300: abstract away SHA-1-specific constants
- t4208: abstract away SHA-1-specific constants
- t4045: abstract away SHA-1-specific constants
- t4042: abstract away SHA-1-specific constants
- t4205: sort log output in a hash-independent way
- t/lib-diff-alternative: abstract away SHA-1-specific constants
- t4030: abstract away SHA-1-specific constants
- t4029: abstract away SHA-1-specific constants
- t4029: fix test indentation
- t4022: abstract away SHA-1-specific constants
- t4020: abstract away SHA-1-specific constants
- t4014: abstract away SHA-1-specific constants
- t4008: abstract away SHA-1-specific constants
- t4007: abstract away SHA-1-specific constants
- t3905: abstract away SHA-1-specific constants
- t3702: abstract away SHA-1-specific constants
- t3103: abstract away SHA-1-specific constants
- t2203: abstract away SHA-1-specific constants
- t: skip pack tests if not using SHA-1
- t4044: skip test if not using SHA-1
- t1512: skip test if not using SHA-1
- t1007: annotate with SHA1 prerequisite
- t0000: annotate with SHA1 prerequisite
- t: switch $_x40 to $OID_REGEX
- t/test-lib: introduce OID_REGEX
- t: switch $_z40 to $ZERO_OID
- t/test-lib: introduce ZERO_OID
- t/test-lib: add an SHA1 prerequisite
Many tests hardcode the raw object names, which would change once
we migrate away from SHA-1. While some of them must test against
exact object names, most of them do not have to use hardcoded
constants in the test. The latter kind of tests have been updated
to test the moral equivalent of the original without hardcoding the
actual object names.
Will merge to 'next'.
* bp/status-rename-config (2018-05-13) 1 commit
- add status config and command line options for rename detection
(this branch uses em/status-rename-config.)
"git status" learned to honor a new status.renames configuration to
skip rename detection, which could be useful for those who want to
do so without disabling the default rename detection done by the
"git diff" command.
Will merge to 'next'.
* bw/refspec-api (2018-05-16) 35 commits
- submodule: convert push_unpushed_submodules to take a struct refspec
- remote: convert check_push_refs to take a struct refspec
- remote: convert match_push_refs to take a struct refspec
- http-push: store refspecs in a struct refspec
- transport: remove transport_verify_remote_names
- send-pack: store refspecs in a struct refspec
- transport: convert transport_push to take a struct refspec
- push: convert to use struct refspec
- push: check for errors earlier
- remote: convert match_explicit_refs to take a struct refspec
- remote: convert get_ref_match to take a struct refspec
- remote: convert query_refspecs to take a struct refspec
- remote: convert apply_refspecs to take a struct refspec
- remote: convert get_stale_heads to take a struct refspec
- fetch: convert prune_refs to take a struct refspec
- fetch: convert get_ref_map to take a struct refspec
- fetch: convert do_fetch to take a struct refspec
- refspec: remove the deprecated functions
- fetch: convert refmap to use struct refspec
- fetch: convert fetch_one to use struct refspec
- transport-helper: convert to use struct refspec
- remote: convert fetch refspecs to struct refspec
- remote: convert push refspecs to struct refspec
- fast-export: convert to use struct refspec
- clone: convert cmd_clone to use refspec_item_init
- remote: convert match_push_refs to use struct refspec
- remote: convert check_push_refs to use struct refspec
- transport: convert transport_push to use struct refspec
- pull: convert get_tracking_branch to use refspec_item_init
- submodule--helper: convert push_check to use struct refspec
- refspec: convert valid_fetch_refspec to use parse_refspec
- refspec: introduce struct refspec
- refspec: rename struct refspec to struct refspec_item
- refspec: factor out parsing a single refspec
- refspec: move refspec parsing logic into its own file
An API update for handling of refspecs used by fetch & push
codepath.
Will merge to 'next'.
* ds/commit-graph-lockfile-fix (2018-05-11) 1 commit
- commit-graph: fix UX issue when .lock file exists
(this branch uses ds/generation-numbers and ds/lazy-load-trees.)
Update to ds/generation-numbers topic.
* jk/apply-p-doc (2018-05-11) 1 commit
- apply: clarify "-p" documentation
Doc update.
Will merge to 'next'.
* jk/unavailable-can-be-missing (2018-05-13) 4 commits
- mark_parents_uninteresting(): avoid most allocation
- mark_parents_uninteresting(): replace list with stack
- mark_parents_uninteresting(): drop missing object check
- mark_tree_contents_uninteresting(): drop missing object check
Code clean-up to turn history traversal more robust in a
semi-corrupt repository.
Will merge to 'next'.
* lm/credential-netrc (2018-05-14) 2 commits
- git-credential-netrc: accept gpg option
- git-credential-netrc: adapt to test framework for git
Update credential-netrc helper (in contrib/) to allow customizing
the GPG used to decrypt the encrypted .netrc file.
Will merge to 'next'.
* ma/create-pseudoref-with-null-old-oid (2018-05-13) 3 commits
- refs: handle zero oid for pseudorefs
- t1400: add tests around adding/deleting pseudorefs
- refs.c: refer to "object ID", not "sha1", in error messages
"git update-ref A B" is supposed to ensure that ref A does not yet
exist when B is a NULL OID, but this check was not done correctly
for pseudo-refs outside refs/ hierarchy, e.g. MERGE_HEAD.
Will merge to 'next'.
* ma/lockfile-cleanup (2018-05-10) 5 commits
- lock_file: move static locks into functions
- lock_file: make function-local locks non-static
- refs.c: do not die if locking fails in `delete_pseudoref()`
- refs.c: do not die if locking fails in `write_pseudoref()`
- t/helper/test-write-cache: clean up lock-handling
Code clean-up to adjust to a more recent lockfile API convention that
allows lockfile instances kept on the stack.
Will merge to 'next'.
* nd/commit-util-to-slab (2018-05-14) 14 commits
- commit.h: delete 'util' field in struct commit
- merge: use commit-slab in merge remote desc instead of commit->util
- log: use commit-slab in prepare_bases() instead of commit->util
- show-branch: use commit-slab for commit-name instead of commit->util
- name-rev: use commit-slab for rev-name instead of commit->util
- bisect.c: use commit-slab for commit weight instead of commit->util
- revision.c: use commit-slab for show_source
- sequencer.c: use commit-slab to associate todo items to commits
- sequencer.c: use commit-slab to mark seen commits
- shallow.c: use commit-slab for commit depth instead of commit->util
- describe: use commit-slab for commit names instead of commit->util
- blame: use commit-slab for blame suspects instead of commit->util
- commit-slab: support shared commit-slab
- commit-slab.h: code split
The in-core "commit" object had an all-purpose "void *util" field,
which was tricky to use especially in library-ish part of the
code. All of the existing uses of the field has been migrated to a
more dedicated "commit-slab" mechanism and the field is eliminated.
Will merge to 'next'.
* nd/diff-apply-ita (2018-05-14) 2 commits
- apply: add --intent-to-add
- diff: turn --ita-invisible-in-index on by default
"git diff" compares the index and the working tree. For paths
added with intent-to-add bit, the command shows the full contents
of them as added, but the paths themselves were not marked as new
files. They are now shown as new by default.
"git apply" learned the "--intent-to-add" option so that an
otherwise working-tree-only application of a patch will add new
paths to the index marked with the "intent-to-add" bit.
Will merge to and cook in 'next'.
* nd/pack-format-doc (2018-05-13) 1 commit
- pack-format.txt: more details on pack file format
Doc update.
Will merge to 'next'.
* nd/pack-struct-commit (2018-05-13) 1 commit
- commit.h: rearrange 'index' to shrink struct commit
Memory optimization.
Will merge to 'next'.
* nd/repo-clear-keep-the-index (2018-05-10) 1 commit
- repository: fix free problem with repo_clear(the_repository)
the_repository->index is not a allocated piece of memory but
repo_clear() indiscriminately attempted to free(3) it, which has
been corrected.
Will merge to 'next'.
* nd/term-columns (2018-05-13) 2 commits
- column: fix off-by-one default width
- pager: set COLUMNS to term_columns()
The code did not propagate the terminal width to subprocesses via
COLUMNS environment variable, which it now does. This caused
trouble to "git column" helper subprocess when "git tag --column=row"
tried to list the existing tags on a display with non-default width.
Will merge to 'next'.
* nd/travis-gcc-7 (2018-05-14) 1 commit
- travis-ci: run gcc-7 on linux-gcc jobs
Developer support. Use newer GCC on one of the builds done at
TravisCI.org to get more warnings and errors diagnosed.
Will merge to 'next'.
* rs/no-null-ptr-arith-in-fast-export (2018-05-10) 1 commit
- fast-export: avoid NULL pointer arithmetic
Code clean-up to avoid non-standard-conformant pointer arithmetic.
Will merge to 'next'.
* sb/grep-die-on-unreadable-index (2018-05-16) 1 commit
- grep: handle corrupt index files early
* sb/object-store-grafts (2018-05-16) 19 commits
- commit: allow lookup_commit_graft to handle arbitrary repositories
- commit: allow prepare_commit_graft to handle arbitrary repositories
- shallow: migrate shallow information into the object parser
- path.c: migrate git_path_ to take a repository argument
- cache: convert get_graft_file to handle arbitrary repositories
- commit: convert read_graft_file to handle arbitrary repositories
- commit: convert register_commit_graft to handle arbitrary repositories
- commit: convert commit_graft_pos() to handle arbitrary repositories
- shallow: add repository argument to is_repository_shallow
- shallow: add repository argument to check_shallow_file_for_update
- shallow: add repository argument to register_shallow
- shallow: add repository argument to set_alternate_shallow_file
- commit: add repository argument to lookup_commit_graft
- commit: add repository argument to prepare_commit_graft
- commit: add repository argument to read_graft_file
- commit: add repository argument to register_commit_graft
- commit: add repository argument to commit_graft_pos
- object: move grafts to object parser
- object-store: move object access functions to object-store.h
(this branch uses sb/object-store-alloc and sb/oid-object-info.)
* sb/submodule-merge-in-merge-recursive (2018-05-16) 3 commits
- merge-recursive: give notice when submodule commit gets fast-forwarded
- merge-recursive: i18n submodule merge output and respect verbosity
- submodule.c: move submodule merging to merge-recursive.c
By code restructuring of submodule merge in merge-recursive,
informational messages from the codepath are now given using the
same mechanism as other output, and honor the merge.verbosity
configuration. The code also learned to give a few new messages
when a submodule three-way merge resolves cleanly when one side
records a descendant of the commit chosen by the other side.
Will merge to 'next'.
* sb/submodule-update-try-harder (2018-05-16) 1 commit
- git-submodule.sh: try harder to fetch a submodule
"git submodule update" attempts two different kinds of "git fetch"
against the upstream repository to grab a commit bound at the
submodule's path, but it incorrectly gave up if the first kind
(i.e. a normal fetch) failed, making the second "last resort" one
(i.e. fetching an exact commit object by object name) ineffective.
This has been corrected.
Will merge to 'next'.
* sg/t5310-jgit-bitmap-test (2018-05-11) 1 commit
- t5310-pack-bitmaps: make JGit tests work with GIT_TEST_SPLIT_INDEX
Test update.
Will merge to 'next'.
* sg/t5516-fixes (2018-05-11) 2 commits
- t5516-fetch-push: fix broken &&-chain
- t5516-fetch-push: fix 'push with dry-run' test
Test fixes.
Will merge to 'next'.
* sg/t7005-spaces-in-filenames-cleanup (2018-05-15) 1 commit
- t7005-editor: get rid of the SPACES_IN_FILENAMES prereq
Test update.
Will merge to 'next'.
* tb/grep-only-matching (2018-05-14) 2 commits
- builtin/grep.c: teach '-o', '--only-matching' to 'git-grep'
- grep.c: extract show_line_header()
(this branch uses tb/grep-column.)
--------------------------------------------------
[Stalled]
* jm/cache-entry-from-mem-pool (2018-05-02) 5 commits
- block alloc: add validations around cache_entry lifecyle
- block alloc: allocate cache entries from mem_pool
- mem-pool: fill out functionality
- block alloc: add lifecycle APIs for cache_entry structs
- read-cache: teach refresh_cache_entry() to take istate
For a large tree, the index needs to hold many cache entries
allocated on heap. These cache entries are now allocated out of a
dedicated memory pool to amortize malloc(3) overhead.
Needs review.
Is the "caller always knows which pool an entry came from and calls
the right kind of free" a feasible approach?
Oh, another thing, there is "lifecyle" typo in the title.
* ab/fetch-tags-noclobber (2018-05-16) 9 commits
- fixup! push tests: assert re-pushing annotated tags
- fetch: stop clobbering existing tags without --force
- fetch tests: add a test clobbering tag behavior
- fetch tests: correct a comment "remove it" -> "remove them"
- push doc: correct lies about how push refspecs work
- push tests: assert re-pushing annotated tags
- push tests: add more testing for forced tag pushing
- push tests: fix logic error in "push" test assertion
- push tests: remove redundant 'git push' invocation
Expecting a reboot of the discussion to take it to some conclusion
and then a reroll.
cf. <f3b891c3-381f-de42-51d8-24fdfbca91d2@gmail.com>
cf. <xmqq603yn50l.fsf@gitster-ct.c.googlers.com>
cf. <xmqqzi1alodz.fsf@gitster-ct.c.googlers.com>
cf. <xmqqvabylnbi.fsf@gitster-ct.c.googlers.com>
* pw/add-p-select (2018-03-16) 3 commits
- add -p: optimize line selection for short hunks
- add -p: allow line selection to be inverted
- add -p: select individual hunk lines
"git add -p" interactive interface learned to let users choose
individual added/removed lines to be used in the operation, instead
of accepting or rejecting a whole hunk.
Expecting a reroll to reignite the discussion.
cf. <9895c7b7-eac4-28c1-90c6-443acd1131b7@talktalk.net>
* jh/json-writer (2018-03-28) 1 commit
- json_writer: new routines to create data in JSON format
Preparatory code to later add json output for unspecified telemetry
data.
We do not add random code that does not have real users to our
codebase, so let's have it wait until such a real code materializes
before too long.
* hn/bisect-first-parent (2018-04-21) 1 commit
- bisect: create 'bisect_flags' parameter in find_bisection()
Preliminary code update to allow passing more flags down the
bisection codepath in the future.
We do not add random code that does not have real users to our
codebase, so let's have it wait until such a real code materializes
before too long.
* is/parsing-line-range (2018-04-27) 2 commits
. log: prevent error if line range ends past end of file
. blame: prevent error if range ends past end of file
Parsing of -L[<N>][,[<M>]] parameters "git blame" and "git log"
take has been tweaked.
Seems to break a few tests.
* av/fsmonitor-updates (2018-01-04) 6 commits
- fsmonitor: use fsmonitor data in `git diff`
- fsmonitor: remove debugging lines from t/t7519-status-fsmonitor.sh
- fsmonitor: make output of test-dump-fsmonitor more concise
- fsmonitor: update helper tool, now that flags are filled later
- fsmonitor: stop inline'ing mark_fsmonitor_valid / _invalid
- dir.c: update comments to match argument name
Code clean-up on fsmonitor integration, plus optional utilization
of the fsmonitor data in diff-files.
Waiting for an update.
cf. <alpine.DEB.2.21.1.1801042335130.32@MININT-6BKU6QN.europe.corp.microsoft.com>
* pb/bisect-helper-2 (2017-10-28) 8 commits
- t6030: make various test to pass GETTEXT_POISON tests
- bisect--helper: `bisect_start` shell function partially in C
- bisect--helper: `get_terms` & `bisect_terms` shell function in C
- bisect--helper: `bisect_next_check` shell function in C
- bisect--helper: `check_and_set_terms` shell function in C
- wrapper: move is_empty_file() and rename it as is_empty_or_missing_file()
- bisect--helper: `bisect_write` shell function in C
- bisect--helper: `bisect_reset` shell function in C
Expecting a reroll.
cf. <0102015f5e5ee171-f30f4868-886f-47a1-a4e4-b4936afc545d-000000@eu-west-1.amazonses.com>
* mk/http-backend-content-length (2017-11-27) 4 commits
- SQUASH???
- t5560-http-backend-noserver.sh: add CONTENT_LENGTH cases
- SQUASH???
- http-backend: respect CONTENT_LENGTH as specified by rfc3875
The http-backend (used for smart-http transport) used to slurp the
whole input until EOF, without paying attention to CONTENT_LENGTH
that is supplied in the environment and instead expecting the Web
server to close the input stream. This has been fixed.
Expecting a reroll.
Suggested fixes to be used when rerolling is queued, but I'd
prefer _not_ squashing them myself.
Also, it may be too complex solution for the problem.
cf. <20171204171308.GA13332@sigill.intra.peff.net>
* jk/drop-ancient-curl (2017-08-09) 5 commits
- http: #error on too-old curl
- curl: remove ifdef'd code never used with curl >=7.19.4
- http: drop support for curl < 7.19.4
- http: drop support for curl < 7.16.0
- http: drop support for curl < 7.11.1
Some code in http.c that has bitrot is being removed.
Expecting a reroll.
* mk/use-size-t-in-zlib (2017-08-10) 1 commit
. zlib.c: use size_t for size
The wrapper to call into zlib followed our long tradition to use
"unsigned long" for sizes of regions in memory, which have been
updated to use "size_t".
Needs resurrecting by making sure the fix is good and still applies
(or adjusted to today's codebase).
--------------------------------------------------
[Cooking]
* ld/p4-unshelve (2018-05-16) 1 commit
- git-p4: add unshelve command
"git p4" learned to "unshelve" shelved commit from P4.
Will merge to 'next'.
* pc/submodule-helper-foreach (2018-05-11) 4 commits
- submodule: port submodule subcommand 'foreach' from shell to C
- submodule foreach: document variable '$displaypath'
- submodule foreach: document '$sm_path' instead of '$path'
- submodule foreach: correct '$path' in nested submodules from a subdirectory
The bulk of "git submodule foreach" has been rewritten in C.
Will merge to and cook in 'next'.
* tb/test-apfs-utf8-normalization (2018-05-02) 1 commit
(merged to 'next' on 2018-05-16 at feabe72b42)
+ test: correct detection of UTF8_NFD_TO_NFC for APFS
A test to see if the filesystem normalizes UTF-8 filename has been
updated to check what we need to know in a more direct way, i.e. a
path created in NFC form can be accessed with NFD form (or vice
versa) to cope with APFS as well as HFS.
Will merge to 'master'.
* ab/get-short-oid (2018-05-11) 5 commits
- get_short_oid: sort ambiguous objects by type, then SHA-1
- sha1-name.c: move around the collect_ambiguous() function
- git-p4: change "commitish" typo to "committish"
- sha1-array.h: align function arguments
- sha1-name.c: remove stray newline
When a short hexadecimal string is used to name an object but there
are multiple objects that share the string as the prefix of their
names, the code lists these ambiguous candidates in a help message.
These object names are now sorted according to their types for
easier eyeballing.
Will merge to 'next'.
* ah/misc-doc-updates (2018-05-06) 7 commits
(merged to 'next' on 2018-05-16 at e2e3b68a66)
+ doc: normalize [--options] to [options] in git-diff
+ doc: add note about shell quoting to revision.txt
+ git-svn: remove ''--add-author-from' for 'commit-diff'
+ doc: add '-d' and '-o' for 'git push'
+ doc: clarify ignore rules for git ls-files
+ doc: align 'diff --no-index' in text and synopsis
+ doc: improve formatting in githooks.txt
Misc doc fixes.
Will merge to 'master'.
* bc/format-patch-cover-no-attach (2018-05-02) 1 commit
(merged to 'next' on 2018-05-16 at fa1ffeb3fe)
+ format-patch: make cover letters always text/plain
"git format-patch --cover --attach" created a broken MIME multipart
message for the cover letter, which has been fixed by keeping the
cover letter as plain text file.
Will merge to 'master'.
* bp/test-drop-caches (2018-05-04) 1 commit
(merged to 'next' on 2018-05-16 at 0e40ab2408)
+ test-drop-caches: simplify delay loading of NtSetSystemInformation
Code simplification.
Will merge to 'master'.
* cc/perf-bisect (2018-05-06) 1 commit
(merged to 'next' on 2018-05-16 at 5a078a2fdf)
+ perf/bisect_run_script: disable codespeed
Performance test updates.
Will merge to 'master'.
* cf/submodule-progress-dissociate (2018-05-04) 3 commits
- submodule: add --dissociate option to add/update commands
- submodule: add --progress option to add command
- submodule: clean up subsititions in script
"git submodule update" and "git submodule add" supported the
"--reference" option to borrow objects from a neighbouring local
repository like "git clone" does, but lacked the more recent
invention "--dissociate". Also "git submodule add" has been taught
to take the "--progress" option.
Will merge to 'next'..
"subsititions" needs to be typofixed ;-)
* dd/send-email-reedit (2018-05-06) 1 commit
- git-send-email: allow re-editing of message
"git send-email" can sometimes offer confirmation dialog "Send this
email?" with choices 'Yes', 'No', 'Quit', and 'All'. A new action
'Edit' has been added to this dialog's choice.
Will merge to 'next'.
* em/status-rename-config (2018-05-06) 1 commit
(merged to 'next' on 2018-05-16 at 33c1cc093c)
+ wt-status: use settings from git_diff_ui_config
(this branch is used by bp/status-rename-config.)
"git status" learned to pay attention to UI related diff
configuration variables such as diff.renames.
Will merge to 'master'.
* js/branch-diff (2018-05-16) 19 commits
- fixup! Add a function to solve least-cost assignment problems
- completion: support branch-diff
- branch-diff: add a man page
- branch-diff --dual-color: work around bogus white-space warning
- branch-diff: offer to dual-color the diffs
- diff: add an internal option to dual-color diffs of diffs
- color: provide inverted colors, too
- branch-diff: use color for the commit pairs
- branch-diff: add tests
- branch-diff: do not show "function names" in hunk headers
- branch-diff: adjust the output of the commit pairs
- branch-diff: suppress the diff headers
- branch-diff: indent the diffs just like tbdiff
- branch-diff: right-trim commit messages
- branch-diff: also show the diff between patches
- branch-diff: improve the order of the shown commits
- branch-diff: first rudimentary implementation
- Add a new builtin: branch-diff
- Add a function to solve least-cost assignment problems
"git tbdiff" that lets us compare individual patches in two
iterations of a topic has been rewritten and made into a built-in
command.
Expecting a reroll.
cf. <nycvar.QRO.7.76.6.1805052351560.77@tvgsbejvaqbjf.bet>
* js/sequencer-and-root-commits (2018-05-06) 6 commits
- rebase --rebase-merges: root commits can be cousins, too
- rebase --rebase-merges: a "merge" into a new root is a fast-forward
- sequencer: allow introducing new root commits
- rebase -i --root: let the sequencer handle even the initial part
- sequencer: learn about the special "fake root commit" handling
- sequencer: extract helper to update active_cache_tree
(this branch uses js/rebase-recreate-merge.)
The implementation of "git rebase -i --root" has been updated to use
the sequencer machinery more.
Will merge to 'next'.
* js/use-bug-macro (2018-05-10) 5 commits
- BUG_exit_code: fix sparse "symbol not declared" warning
- Convert remaining die*(BUG) messages
- Replace all die("BUG: ...") calls by BUG() ones
- run-command: use BUG() to report bugs, not die()
- test-tool: help verifying BUG() code paths
Developer support update, by using BUG() macro instead of die() to
mark codepaths that should not happen more clearly.
Will merge to 'next'.
Further updates can come on top later.
cf. <20180507090109.GA367@sigill.intra.peff.net>
* jt/partial-clone-proto-v2 (2018-05-06) 4 commits
- {fetch,upload}-pack: support filter in protocol v2
- upload-pack: read config when serving protocol v2
- upload-pack: fix error message typo
- Merge branch 'bw/protocol-v2' into jt/partial-clone-proto-v2
Transfer protocol v2 learned to support the partial clone.
Will merge to 'next'.
* ma/doc-expand-tabs (2018-05-02) 1 commit
- revisions.txt: expand tabs to spaces in diagram
Fix one instance of asciidoctor's misformatting by expanding a tab
into spaces in a literal block.
Will discard. This approach is less maintainable than the approach
taken by bc/asciidoctor-tab-width topic.
* nd/completion-aliasfiletype-typofix (2018-05-06) 1 commit
(merged to 'next' on 2018-05-16 at 045e4ac190)
+ completion: fix misspelled config key aliasesfiletype
Typofix.
Will merge to 'master'.
* nd/doc-header (2018-05-02) 1 commit
(merged to 'next' on 2018-05-16 at 0599eb3ec9)
+ doc: keep first level section header in upper case
Doc formatting fix.
Will merge to 'master'.
* nd/pack-unreachable-objects-doc (2018-05-06) 1 commit
(merged to 'next' on 2018-05-16 at c4bf977564)
+ pack-objects: validation and documentation about unreachable options
Doc update.
Will merge to 'master'.
* sb/object-store-alloc (2018-05-16) 13 commits
- alloc: allow arbitrary repositories for alloc functions
- object: allow create_object to handle arbitrary repositories
- object: allow grow_object_hash to handle arbitrary repositories
- alloc: add repository argument to alloc_commit_index
- alloc: add repository argument to alloc_report
- alloc: add repository argument to alloc_object_node
- alloc: add repository argument to alloc_tag_node
- alloc: add repository argument to alloc_commit_node
- alloc: add repository argument to alloc_tree_node
- alloc: add repository argument to alloc_blob_node
- object: add repository argument to grow_object_hash
- object: add repository argument to create_object
- repository: introduce parsed objects field
(this branch is used by sb/object-store-grafts; uses sb/oid-object-info.)
The conversion to pass "the_repository" and then "a_repository"
throughout the object access API continues.
* tb/grep-column (2018-05-14) 7 commits
- contrib/git-jump/git-jump: jump to match column in addition to line
- grep.c: add configuration variables to show matched option
- builtin/grep.c: add '--column' option to 'git-grep(1)'
- grep.c: display column number of first match
- grep.[ch]: extend grep_opt to allow showing matched column
- grep.c: expose matched column in match_line()
- Documentation/config.txt: camel-case lineNumber for consistency
(this branch is used by tb/grep-only-matching.)
"git grep" learned the "--column" option that gives not just the
line number but the column number of the hit.
* bc/asciidoctor-tab-width (2018-05-07) 2 commits
(merged to 'next' on 2018-05-16 at be2a42c473)
+ Documentation: render revisions correctly under Asciidoctor
+ Documentation: use 8-space tabs with Asciidoctor
Asciidoctor gives a reasonable imitation for AsciiDoc, but does not
render illustration in a literal block correctly when indented with
HT by default. The problem is fixed by forcing 8-space tabs.
Will merge to 'master'.
* bc/mailmap-self (2018-05-08) 1 commit
(merged to 'next' on 2018-05-16 at a009c64bd2)
+ mailmap: update brian m. carlson's email address
Will merge to 'master'.
* cc/perf-aggregate-unknown-option (2018-04-26) 1 commit
(merged to 'next' on 2018-05-08 at db7d2870f8)
+ perf/aggregate: use Getopt::Long for option parsing
Perf-test helper updates.
Will merge to 'master'.
* ab/perl-python-attrs (2018-04-27) 3 commits
(merged to 'next' on 2018-05-08 at b440e9bbb9)
+ .gitattributes: add a diff driver for Python
+ .gitattributes: use the "perl" differ for Perl
+ .gitattributes: add *.pl extension for Perl
We learned that our source files with ".pl" and ".py" extensions
are Perl and Python files respectively and changes to them are
better viewed as such with appropriate diff drivers.
Will merge to 'master'.
* js/test-unset-prereq (2018-04-30) 1 commit
(merged to 'next' on 2018-05-08 at 3aecbf25a3)
+ tests: introduce test_unset_prereq, for debugging
Test debugging aid.
Will merge to 'master'.
cf. <20180507115950.3887-1-szeder.dev@gmail.com>
* fg/completion-external (2018-05-07) 1 commit
(merged to 'next' on 2018-05-16 at 5d83f92caf)
+ completion: load completion file for external subcommand
The command line completion mechanism (in contrib/) learned to load
custom completion file for "git $command" where $command is a
custom "git-$command" that the end user has on the $PATH when using
newer version of bash.
Will merge to 'master'.
cf. <CAM0VKjkTu+OkLM3gvX73mWugxArCVmqRBmWGHiKuLiLRNkkNow@mail.gmail.com>
* js/deprecate-grafts (2018-04-30) 12 commits
(merged to 'next' on 2018-05-08 at 1d7b31d179)
+ Remove obsolete script to convert grafts to replace refs
+ technical/shallow: describe why shallow cannot use replace refs
+ technical/shallow: stop referring to grafts
+ filter-branch: stop suggesting to use grafts
+ Deprecate support for .git/info/grafts
+ Add a test for `git replace --convert-graft-file`
+ replace: introduce --convert-graft-file
+ replace: prepare create_graft() for converting graft files wholesale
+ replace: "libify" create_graft() and callees
+ replace: avoid using die() to indicate a bug
+ commit: Let the callback of for_each_mergetag return on error
+ argv_array: offer to split a string by whitespace
The functionality of "$GIT_DIR/info/grafts" has been superseded by
the "refs/replace/" mechanism for some time now, but the internal
code had support for it in many places, which has been cleaned up
in order to drop support of the "grafts" mechanism.
Will merge to 'master'.
* js/rebase-i-clean-msg-after-fixup-continue (2018-05-02) 4 commits
(merged to 'next' on 2018-05-08 at 7e684c153d)
+ rebase --skip: clean up commit message after a failed fixup/squash
+ sequencer: always commit without editing when asked for
+ rebase -i: Handle "combination of <n> commits" with GETTEXT_POISON
+ rebase -i: demonstrate bugs with fixup!/squash! commit messages
"git rebase -i" sometimes left intermediate "# This is a
combination of N commits" message meant for the human consumption
inside an editor in the final result in certain corner cases, which
has been fixed.
Will merge to 'master'.
* bw/server-options (2018-04-24) 4 commits
(merged to 'next' on 2018-05-08 at a18ce56f3c)
+ fetch: send server options when using protocol v2
+ ls-remote: send server options when using protocol v2
+ serve: introduce the server-option capability
+ Merge branch 'bw/protocol-v2' into HEAD
The transport protocol v2 is getting updated further.
Will merge to 'master'.
* bc/object-id (2018-05-02) 42 commits
- merge-one-file: compute empty blob object ID
- add--interactive: compute the empty tree value
- Update shell scripts to compute empty tree object ID
- sha1_file: only expose empty object constants through git_hash_algo
- dir: use the_hash_algo for empty blob object ID
- sequencer: use the_hash_algo for empty tree object ID
- cache-tree: use is_empty_tree_oid
- sha1_file: convert cached object code to struct object_id
- builtin/reset: convert use of EMPTY_TREE_SHA1_BIN
- builtin/receive-pack: convert one use of EMPTY_TREE_SHA1_HEX
- wt-status: convert two uses of EMPTY_TREE_SHA1_HEX
- submodule: convert several uses of EMPTY_TREE_SHA1_HEX
- sequencer: convert one use of EMPTY_TREE_SHA1_HEX
- merge: convert empty tree constant to the_hash_algo
- builtin/merge: switch tree functions to use object_id
- builtin/am: convert uses of EMPTY_TREE_SHA1_BIN to the_hash_algo
- sha1-file: add functions for hex empty tree and blob OIDs
- builtin/receive-pack: avoid hard-coded constants for push certs
- diff: specify abbreviation size in terms of the_hash_algo
- upload-pack: replace use of several hard-coded constants
- revision: replace use of hard-coded constants
- http: eliminate hard-coded constants
- dir: convert struct untracked_cache_dir to object_id
- commit: convert uses of get_sha1_hex to get_oid_hex
- index-pack: abstract away hash function constant
- pack-redundant: convert linked lists to use struct object_id
- Update struct index_state to use struct object_id
- split-index: convert struct split_index to object_id
- submodule-config: convert structures to object_id
- fsck: convert static functions to struct object_id
- tree-walk: convert get_tree_entry_follow_symlinks to object_id
- tree-walk: avoid hard-coded 20 constant
- pack-redundant: abstract away hash algorithm
- pack-objects: abstract away hash algorithm
- packfile: abstract away hash constant values
- packfile: convert find_pack_entry to object_id
- sha1-file: convert freshen functions to object_id
- packfile: convert has_sha1_pack to object_id
- packfile: remove unused member from struct pack_entry
- Remove unused member in struct object_context
- server-info: remove unused members from struct pack_info
- cache: add a function to read an object ID from a buffer
Conversion from uchar[20] to struct object_id continues.
Will merge to 'next'.
* sb/oid-object-info (2018-04-26) 9 commits
(merged to 'next' on 2018-05-08 at f3c08f298e)
+ cache.h: allow oid_object_info to handle arbitrary repositories
+ packfile: add repository argument to cache_or_unpack_entry
+ packfile: add repository argument to unpack_entry
+ packfile: add repository argument to read_object
+ packfile: add repository argument to packed_object_info
+ packfile: add repository argument to packed_to_object_type
+ packfile: add repository argument to retry_bad_packed_offset
+ cache.h: add repository argument to oid_object_info
+ cache.h: add repository argument to oid_object_info_extended
(this branch is used by sb/object-store-alloc and sb/object-store-grafts.)
The codepath around object-info API has been taught to take the
repository object (which in turn tells the API which object store
the objects are to be located).
Will merge to 'master'.
* en/unpack-trees-split-index-fix (2018-05-02) 1 commit
(merged to 'next' on 2018-05-16 at 1adff065b2)
+ unpack_trees: fix breakage when o->src_index != o->dst_index
The split-index feature had a long-standing and dormant bug in
certain use of the in-core merge machinery, which has been fixed.
Will merge to 'master'.
cf. <CACsJy8CeDhrT9GXe9q5gqsAeq_sSQ8jyF2nMOFxzjwKtE31oPQ@mail.gmail.com>
* bp/merge-rename-config (2018-05-08) 3 commits
- merge: pass aggressive when rename detection is turned off
- merge: add merge.renames config setting
- merge: update documentation for {merge,diff}.renameLimit
(this branch uses en/rename-directory-detection-reboot.)
With merge.renames configuration set to false, the recursive merge
strategy can be told not to spend cycles trying to find renamed
paths and merge them accordingly.
Will merge to 'next'.
* en/git-debugger (2018-04-25) 1 commit
(merged to 'next' on 2018-05-08 at 73369cd1e5)
+ Make running git under other debugger-like programs easy
Dev support.
Will merge to 'master'.
* js/no-pager-shorthand (2018-05-04) 1 commit
(merged to 'next' on 2018-05-08 at 10e6031dd1)
+ git: add -P as a short option for --no-pager
"git --no-pager cmd" did not have short-and-sweet single letter
option. Now it does.
Will merge to 'master'.
* sb/diff-color-move-more (2018-04-25) 7 commits
- diff.c: add --color-moved-ignore-space-delta option
- diff.c: decouple white space treatment from move detection algorithm
- diff.c: add a blocks mode for moved code detection
- diff.c: adjust hash function signature to match hashmap expectation
- diff.c: do not pass diff options as keydata to hashmap
- xdiff/xdiffi.c: remove unneeded function declarations
- xdiff/xdiff.h: remove unused flags
"git diff --color-moved" feature has further been tweaked.
Will merge to 'next'.
* ds/generation-numbers (2018-05-02) 11 commits
- commit-graph.txt: update design document
- merge: check config before loading commits
- commit: use generation number in remove_redundant()
- commit: add short-circuit to paint_down_to_common()
- commit: use generation numbers for in_merge_bases()
- ref-filter: use generation number for --contains
- commit-graph: always load commit-graph information
- commit: use generations in paint_down_to_common()
- commit-graph: compute generation numbers
- commit: add generation number to struct commmit
- ref-filter: fix outdated comment on in_commit_list
(this branch is used by ds/commit-graph-lockfile-fix; uses ds/lazy-load-trees.)
A recently added "commit-graph" datafile has learned to store
pre-computed generation numbers to speed up the decisions to stop
history traversal.
Is this ready for 'next' with ds/commit-graph-lockfile-fix?
A commit with triple 'm' needs its title amended, though.
* en/rename-directory-detection-reboot (2018-05-08) 36 commits
(merged to 'next' on 2018-05-08 at be350ebc17)
+ merge-recursive: fix check for skipability of working tree updates
+ merge-recursive: make "Auto-merging" comment show for other merges
+ merge-recursive: fix remainder of was_dirty() to use original index
+ merge-recursive: fix was_tracked() to quit lying with some renamed paths
+ t6046: testcases checking whether updates can be skipped in a merge
+ merge-recursive: avoid triggering add_cacheinfo error with dirty mod
+ merge-recursive: move more is_dirty handling to merge_content
+ merge-recursive: improve add_cacheinfo error handling
+ merge-recursive: avoid spurious rename/rename conflict from dir renames
+ directory rename detection: new testcases showcasing a pair of bugs
+ merge-recursive: fix remaining directory rename + dirty overwrite cases
+ merge-recursive: fix overwriting dirty files involved in renames
+ merge-recursive: avoid clobbering untracked files with directory renames
+ merge-recursive: apply necessary modifications for directory renames
+ merge-recursive: when comparing files, don't include trees
+ merge-recursive: check for file level conflicts then get new name
+ merge-recursive: add computation of collisions due to dir rename & merging
+ merge-recursive: check for directory level conflicts
+ merge-recursive: add get_directory_renames()
+ merge-recursive: make a helper function for cleanup for handle_renames
+ merge-recursive: split out code for determining diff_filepairs
+ merge-recursive: make !o->detect_rename codepath more obvious
+ merge-recursive: fix leaks of allocated renames and diff_filepairs
+ merge-recursive: introduce new functions to handle rename logic
+ merge-recursive: move the get_renames() function
+ directory rename detection: tests for handling overwriting dirty files
+ directory rename detection: tests for handling overwriting untracked files
+ directory rename detection: miscellaneous testcases to complete coverage
+ directory rename detection: testcases exploring possibly suboptimal merges
+ directory rename detection: more involved edge/corner testcases
+ directory rename detection: testcases checking which side did the rename
+ directory rename detection: files/directories in the way of some renames
+ directory rename detection: partially renamed directory testcase/discussion
+ directory rename detection: testcases to avoid taking detection too far
+ directory rename detection: directory splitting testcases
+ directory rename detection: basic testcases
(this branch is used by bp/merge-rename-config.)
Rename detection logic in "diff" family that is used in "merge" has
learned to guess when all of x/a, x/b and x/c have moved to z/a,
z/b and z/c, it is likely that x/d added in the meantime would also
want to move to z/d by taking the hint that the entire directory
'x' moved to 'z'. A bug causing dirty files involved in a rename
to be overwritten during merge has also been fixed as part of this
work. Incidentally, this also avoids updating a file in the
working tree after a (non-trivial) merge whose result matches what
our side originally had.
Will merge to 'master'.
* nd/command-list (2018-05-10) 13 commits
- completion: allow to customize the completable command list
- completion: let git provide the completable command list
- command-list.txt: documentation and guide line
- help: use command-list.txt for the source of guides
- help: add "-a --verbose" to list all commands with synopsis
- git: support --list-cmds=list-<category>
- completion: implement and use --list-cmds=main,others
- git --list-cmds: collect command list in a string_list
- git.c: convert --list-* to --list-cmds=*
- Remove common-cmds.h
- help: use command-list.h for common command list
- generate-cmds.sh: export all commands to command-list.h
- generate-cmds.sh: factor out synopsis extract code
The list of commands with their various attributes were spread
across a few places in the build procedure, but it now is getting a
bit more consolidated to allow more automation.
Will merge to 'next'.
* sg/complete-paths (2018-04-17) 11 commits
(merged to 'next' on 2018-05-08 at 2a11444f90)
+ completion: fill COMPREPLY directly when completing paths
+ completion: improve handling quoted paths in 'git ls-files's output
+ completion: remove repeated dirnames with 'awk' during path completion
+ t9902-completion: ignore COMPREPLY element order in some tests
+ completion: use 'awk' to strip trailing path components
+ completion: let 'ls-files' and 'diff-index' filter matching paths
+ completion: improve handling quoted paths on the command line
+ completion: support completing non-ASCII pathnames
+ completion: simplify prefix path component handling during path completion
+ completion: move __git_complete_index_file() next to its helpers
+ t9902-completion: add tests demonstrating issues with quoted pathnames
Command line completion (in contrib/) learned to complete pathnames
for various commands better.
Will merge to 'master'.
* sb/blame-color (2018-04-24) 3 commits
- builtin/blame: add new coloring scheme config
- builtin/blame: highlight recently changed lines
- builtin/blame: dim uninteresting metadata lines
"git blame" learns to unhighlight uninteresting metadata from the
originating commit on lines that are the same as the previous one,
and also paint lines in different colors depending on the age of
the commit.
Will merge to 'next'.
* ds/lazy-load-trees (2018-05-02) 6 commits
(merged to 'next' on 2018-05-02 at d54016d9e3)
+ coccinelle: avoid wrong transformation suggestions from commit.cocci
(merged to 'next' on 2018-04-25 at b90813f421)
+ commit-graph: lazy-load trees for commits
+ treewide: replace maybe_tree with accessor methods
+ commit: create get_commit_tree() method
+ treewide: rename tree to maybe_tree
+ Merge branch 'bw/c-plus-plus' into ds/lazy-load-trees
(this branch is used by ds/commit-graph-lockfile-fix and ds/generation-numbers.)
The code has been taught to use the duplicated information stored
in the commit-graph file to learn the tree object name for a commit
to avoid opening and parsing the commit object when it makes sense
to do so.
Will merge to 'master'.
* jk/branch-l-0-deprecation (2018-03-26) 3 commits
(merged to 'next' on 2018-04-11 at 9b2b0305dd)
+ branch: deprecate "-l" option
+ t: switch "branch -l" to "branch --create-reflog"
+ t3200: unset core.logallrefupdates when testing reflog creation
(this branch is used by jk/branch-l-1-removal and jk/branch-l-2-reincarnation.)
The "-l" option in "git branch -l" is an unfortunate short-hand for
"--create-reflog", but many users, both old and new, somehow expect
it to be something else, perhaps "--list". This step deprecates
the short-hand and warns about the future removal of the it when it
is used.
Will cook in 'next'.
Perhaps merge to 'master' immediately after 2.18 release?
* jk/branch-l-1-removal (2018-03-26) 1 commit
- branch: drop deprecated "-l" option
(this branch is used by jk/branch-l-2-reincarnation; uses jk/branch-l-0-deprecation.)
Following the "git branch -l" deprecation, the short-hand is removed.
Will keep in 'pu'.
* jk/branch-l-2-reincarnation (2018-03-26) 1 commit
- branch: make "-l" a synonym for "--list"
(this branch uses jk/branch-l-0-deprecation and jk/branch-l-1-removal.)
Following the "git branch -l" removal, "-l" is resurrected as a
short-hand for "--list".
Will keep in 'pu'.
* nd/pack-objects-pack-struct (2018-04-16) 15 commits
(merged to 'next' on 2018-05-16 at 171459475d)
+ ci: exercise the whole test suite with uncommon code in pack-objects
+ pack-objects: reorder members to shrink struct object_entry
+ pack-objects: shrink delta_size field in struct object_entry
+ pack-objects: shrink size field in struct object_entry
+ pack-objects: clarify the use of object_entry::size
+ pack-objects: don't check size when the object is bad
+ pack-objects: shrink z_delta_size field in struct object_entry
+ pack-objects: refer to delta objects by index instead of pointer
+ pack-objects: move in_pack out of struct object_entry
+ pack-objects: move in_pack_pos out of struct object_entry
+ pack-objects: use bitfield for object_entry::depth
+ pack-objects: use bitfield for object_entry::dfs_state
+ pack-objects: turn type and in_pack_type to bitfields
+ pack-objects: a bit of document about struct object_entry
+ read-cache.c: make $GIT_TEST_SPLIT_INDEX boolean
"git pack-objects" needs to allocate tons of "struct object_entry"
while doing its work, and shrinking its size helps the performance
quite a bit.
Will merge to 'master'.
cf. <CACsJy8CuVRy4UPEwXJJYAjePEz5zjKMLhRjh9UFw0DPYTzobkw@mail.gmail.com>
* nd/repack-keep-pack (2018-04-16) 7 commits
(merged to 'next' on 2018-05-08 at ab906be358)
+ pack-objects: show some progress when counting kept objects
+ gc --auto: exclude base pack if not enough mem to "repack -ad"
+ gc: handle a corner case in gc.bigPackThreshold
+ gc: add gc.bigPackThreshold config
+ gc: add --keep-largest-pack option
+ repack: add --keep-pack option
+ t7700: have closing quote of a test at the beginning of line
"git gc" in a large repository takes a lot of time as it considers
to repack all objects into one pack by default. The command has
been taught to pretend as if the largest existing packfile is
marked with ".keep" so that it is left untouched while objects in
other packs and loose ones are repacked.
Will merge to 'master'.
cf. <CACsJy8CuVRy4UPEwXJJYAjePEz5zjKMLhRjh9UFw0DPYTzobkw@mail.gmail.com>
* tg/worktree-add-existing-branch (2018-04-30) 4 commits
(merged to 'next' on 2018-05-08 at 8b76505192)
+ worktree: teach "add" to check out existing branches
+ worktree: factor out dwim_branch function
+ worktree: improve message when creating a new worktree
+ worktree: remove extra members from struct add_opts
"git worktree add" learned to check out an existing branch.
Will merge to 'master'.
* js/rebase-recreate-merge (2018-04-26) 17 commits
(merged to 'next' on 2018-05-16 at f1aeea2879)
+ rebase -i --rebase-merges: add a section to the man page
+ rebase -i: introduce --rebase-merges=[no-]rebase-cousins
+ pull: accept --rebase=merges to recreate the branch topology
+ rebase --rebase-merges: avoid "empty merges"
+ sequencer: handle post-rewrite for merge commands
+ sequencer: make refs generated by the `label` command worktree-local
+ rebase --rebase-merges: add test for --keep-empty
+ rebase: introduce the --rebase-merges option
+ rebase-helper --make-script: introduce a flag to rebase merges
+ sequencer: fast-forward `merge` commands, if possible
+ sequencer: introduce the `merge` command
+ sequencer: introduce new commands to reset the revision
+ git-rebase--interactive: clarify arguments
+ sequencer: offer helpful advice when a command was rescheduled
+ sequencer: refactor how original todo list lines are accessed
+ sequencer: make rearrange_squash() a bit more obvious
+ sequencer: avoid using errno clobbered by rollback_lock_file()
(this branch is used by js/sequencer-and-root-commits.)
"git rebase" learned "--rebase-merges" to transplant the whole
topology of commit graph elsewhere.
Will merge to 'master'.
--------------------------------------------------
[Discarded]
* js/runtime-prefix-windows (2018-03-27) 5 commits
. mingw/msvc: use the new-style RUNTIME_PREFIX helper
. exec_cmd: provide a new-style RUNTIME_PREFIX helper for Windows
. exec_cmd: RUNTIME_PREFIX on some POSIX systems
. Makefile: add Perl runtime prefix support
. Makefile: generate Perl header from template file
The Windows port was the first that allowed Git to be installed
anywhere by having its components refer to each other with relative
pathnames. The recent dj/runtime-prefix topic extends the idea to
other platforms, and its approach has been adopted back in the
Windows port.
Ejected, as the parent topic dj/runtime-prefix covers Windows now.
* bp/fsexcludes (2018-04-16) 2 commits
. fsmonitor: switch to use new fsexcludes logic and remove unused untracked cache based logic
. fsexcludes: add a programmatic way to exclude files from git's working directory traversal logic
Can we have a few lines summary here, just like we have for other
topic ;-) I personally take the overlong title of these commits as
a sign that they can further be simplified and cleaned up by
splitting, focusing the scope, etc.
Retracted.
cf. <0de30972-b0a2-67e8-7cff-c19daf9ece8b@gmail.com>
^ permalink raw reply [relevance 3%]
* What's cooking in git.git (May 2018, #01; Mon, 7)
@ 2018-05-07 14:58 3% Junio C Hamano
0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2018-05-07 14:58 UTC (permalink / raw)
To: git
Here are the topics that have been cooking. Commits prefixed with
'-' are only in 'pu' (proposed updates) while commits prefixed with
'+' are in 'next'. The ones marked with '.' do not appear in any of
the integration branches, but I am still holding onto them.
You can find the changes described here in the integration branches
of the repositories listed at
http://git-blame.blogspot.com/p/git-public-repositories.html
--------------------------------------------------
[New Topics]
* tb/test-apfs-utf8-normalization (2018-05-02) 1 commit
- test: correct detection of UTF8_NFD_TO_NFC for APFS
A test to see if the filesystem normalizes UTF-8 filename has been
updated to check what we need to know in a more direct way, i.e. a
path created in NFC form can be accessed with NFD form (or vice
versa) to cope with APFS as well as HFS.
Will merge to 'next'.
* ab/get-short-oid (2018-05-02) 12 commits
- get_short_oid: document & warn if we ignore the type selector
- config doc: document core.disambiguate
- get_short_oid / peel_onion: ^{commit} should be commit, not committish
- get_short_oid / peel_onion: ^{tree} should be tree, not treeish
- get_short_oid: learn to disambiguate by ^{blob}
- get_short_oid: learn to disambiguate by ^{tag}
- get_short_oid: sort ambiguous objects by type, then SHA-1
- sha1-name.c: move around the collect_ambiguous() function
- cache.h: add comment explaining the order in object_type
- git-p4: change "commitish" typo to "committish"
- sha1-array.h: align function arguments
- sha1-name.c: remove stray newline
* ah/misc-doc-updates (2018-05-06) 7 commits
- doc: normalize [--options] to [options] in git-diff
- doc: add note about shell quoting to revision.txt
- git-svn: remove ''--add-author-from' for 'commit-diff'
- doc: add '-d' and '-o' for 'git push'
- doc: clarify ignore rules for git ls-files
- doc: align 'diff --no-index' in text and synopsis
- doc: improve formatting in githooks.txt
Misc doc fixes.
Will merge to 'next'.
* bc/format-patch-cover-no-attach (2018-05-02) 1 commit
- format-patch: make cover letters always text/plain
"git format-patch --cover --attach" created a broken MIME multipart
message for the cover letter, which has been fixed by keeping the
cover letter as plain text file.
Will merge to 'next'.
* bp/test-drop-caches (2018-05-04) 1 commit
- test-drop-caches: simplify delay loading of NtSetSystemInformation
Code simplification.
Will merge to 'next'.
* cc/perf-bisect (2018-05-06) 1 commit
- perf/bisect_run_script: disable codespeed
Performance test updates.
Will merge to 'next'.
* cf/submodule-progress-dissociate (2018-05-04) 3 commits
- submodule: add --dissociate option to add/update commands
- submodule: add --progress option to add command
- submodule: clean up subsititions in script
"git submodule update" and "git submodule add" supported the
"--reference" option to borrow objects from a neighbouring local
repository like "git clone" does, but lacked the more recent
invention "--dissociate". Also "git submodule add" has been taught
to take the "--progress" option.
Is this ready for 'next'? Should "git submodule -h" list the new
options in its short help?
* dd/send-email-reedit (2018-05-06) 1 commit
- git-send-email: allow re-editing of message
"git send-email" can sometimes offer confirmation dialog "Send this
email?" with choices 'Yes', 'No', 'Quit', and 'All'. A new action
'Edit' has been added to this dialog's choice.
Waiting briefly for an ack or two.
cf. <xmqq4ljlsahj.fsf@gitster-ct.c.googlers.com>
* em/status-rename-config (2018-05-06) 1 commit
- wt-status: use settings from git_diff_ui_config
"git status" learned to pay attention to UI related diff
configuration variables such as diff.renames.
Will merge to 'next'.
* jm/cache-entry-from-mem-pool (2018-05-02) 5 commits
- block alloc: add validations around cache_entry lifecyle
- block alloc: allocate cache entries from mem_pool
- mem-pool: fill out functionality
- block alloc: add lifecycle APIs for cache_entry structs
- read-cache: teach refresh_cache_entry() to take istate
For a large tree, the index needs to hold many cache entries
allocated on heap. These cache entries are now allocated out of a
dedicated memory pool to amortize malloc(3) overhead.
Needs review.
Is the "caller always knows which pool an entry came from and calls
the right kind of free" a feasible approach?
* js/branch-diff (2018-05-06) 18 commits
- completion: support branch-diff
- branch-diff: add a man page
- branch-diff --dual-color: work around bogus white-space warning
- branch-diff: offer to dual-color the diffs
- diff: add an internal option to dual-color diffs of diffs
- color: provide inverted colors, too
- branch-diff: use color for the commit pairs
- branch-diff: add tests
- branch-diff: do not show "function names" in hunk headers
- branch-diff: adjust the output of the commit pairs
- branch-diff: suppress the diff headers
- branch-diff: indent the diffs just like tbdiff
- branch-diff: right-trim commit messages
- branch-diff: also show the diff between patches
- branch-diff: improve the order of the shown commits
- branch-diff: first rudimentary implementation
- Add a new builtin: branch-diff
- Add a function to solve least-cost assignment problems
"git tbdiff" that lets us compare individual patches in two
iterations of a topic has been rewritten and made into a built-in
command.
Expecting a reroll.
cf. <nycvar.QRO.7.76.6.1805052351560.77@tvgsbejvaqbjf.bet>
* js/sequencer-and-root-commits (2018-05-06) 6 commits
- rebase --rebase-merges: root commits can be cousins, too
- rebase --rebase-merges: a "merge" into a new root is a fast-forward
- sequencer: allow introducing new root commits
- rebase -i --root: let the sequencer handle even the initial part
- sequencer: learn about the special "fake root commit" handling
- sequencer: extract helper to update active_cache_tree
(this branch uses js/rebase-recreate-merge.)
The implementation of "git rebase -i --root" has been updaed to use
the sequencer machinery more.
Will merge to 'next'.
* js/use-bug-macro (2018-05-06) 4 commits
- Convert remaining die*(BUG) messages
- Replace all die("BUG: ...") calls by BUG() ones
- run-command: use BUG() to report bugs, not die()
- test-tool: help verifying BUG() code paths
* jt/partial-clone-proto-v2 (2018-05-06) 4 commits
- {fetch,upload}-pack: support filter in protocol v2
- upload-pack: read config when serving protocol v2
- upload-pack: fix error message typo
- Merge branch 'bw/protocol-v2' into jt/partial-clone-proto-v2
(this branch uses bw/protocol-v2; is tangled with bw/server-options.)
Transfer protocol v2 learned to support the partial clone.
Will merge to 'next'.
* ma/doc-expand-tabs (2018-05-02) 1 commit
- revisions.txt: expand tabs to spaces in diagram
Fix one instance of asciidoctor's misformatting by expanding a tab
into spaces in a literal block.
Will discard. This approach is less maintainable than the approach
taken by bc/asciidoctor-tab-width topic.
* nd/completion-aliasfiletype-typofix (2018-05-06) 1 commit
- completion: fix misspelled config key aliasesfiletype
Typofix.
Will merge to 'next'.
* nd/doc-header (2018-05-02) 1 commit
- doc: keep first level section header in upper case
Doc formatting fix.
Will merge to 'next'.
* nd/pack-unreachable-objects-doc (2018-05-06) 1 commit
- pack-objects: validation and documentation about unreachable options
Doc update.
Will merge to 'next'.
* sb/object-store-alloc (2018-05-02) 14 commits
- alloc.c: include alloc.h
- alloc: allow arbitrary repositories for alloc functions
- object: allow create_object to handle arbitrary repositories
- object: allow grow_object_hash to handle arbitrary repositories
- alloc: add repository argument to alloc_commit_index
- alloc: add repository argument to alloc_report
- alloc: add repository argument to alloc_object_node
- alloc: add repository argument to alloc_tag_node
- alloc: add repository argument to alloc_commit_node
- alloc: add repository argument to alloc_tree_node
- alloc: add repository argument to alloc_blob_node
- object: add repository argument to grow_object_hash
- object: add repository argument to create_object
- repository: introduce object parser field
(this branch uses sb/object-store-replace and sb/oid-object-info.)
The conversion to pass "the_repository" and then "a_repository"
throughout the object access API continues.
* tb/grep-column (2018-05-06) 7 commits
- contrib/git-jump/git-jump: jump to match column in addition to line
- grep.c: add configuration variables to show matched option
- builtin/grep.c: add '--column' option to 'git-grep(1)'
- grep.c: display column number of first match
- grep.[ch]: extend grep_opt to allow showing matched column
- grep.c: expose matched column in match_line()
- Documentation/config.txt: camel-case lineNumber for consistency
"git grep" learned the "--column" option that gives not just the
line number but the column number of the hit.
* bc/asciidoctor-tab-width (2018-05-07) 2 commits
- Documentation: render revisions correctly under Asciidoctor
- Documentation: use 8-space tabs with Asciidoctor
Asciidoctor gives a reasonable imitation for AsciiDoc, but does not
render illustration in a literal block correctly when indented with
HT by default. The problem is fixed by forcing 8-space tabs.
Will merge to 'next'.
* bc/mailmap-self (2018-05-07) 1 commit
- mailmap: update brian m. carlson's email address
Will merge to 'next'.
--------------------------------------------------
[Stalled]
* pc/submodule-helper-foreach (2018-02-02) 5 commits
- submodule: port submodule subcommand 'foreach' from shell to C
- submodule foreach: document variable '$displaypath'
- submodule foreach: clarify the '$toplevel' variable documentation
- submodule foreach: document '$sm_path' instead of '$path'
- submodule foreach: correct '$path' in nested submodules from a subdirectory
Expecting a response to review comments
e.g. cf. <20180206150044.1bffbb573c088d38c8e44bf5@google.com>
* pw/add-p-select (2018-03-16) 3 commits
- add -p: optimize line selection for short hunks
- add -p: allow line selection to be inverted
- add -p: select individual hunk lines
"git add -p" interactive interface learned to let users choose
individual added/removed lines to be used in the operation, instead
of accepting or rejecting a whole hunk.
Expecting a reroll to reignite the discussion.
cf. <9895c7b7-eac4-28c1-90c6-443acd1131b7@talktalk.net>
* jh/json-writer (2018-03-28) 1 commit
- json_writer: new routines to create data in JSON format
Preparatory code to later add json output for unspecified telemetry
data.
We do not add random code that does not have real users to our
codebase, so let's have it wait until such a real code materializes
before too long.
* hn/bisect-first-parent (2018-04-21) 1 commit
- bisect: create 'bisect_flags' parameter in find_bisection()
Preliminary code update to allow passing more flags down the
bisection codepath in the future.
We do not add random code that does not have real users to our
codebase, so let's have it wait until such a real code materializes
before too long.
* is/parsing-line-range (2018-04-27) 2 commits
. log: prevent error if line range ends past end of file
. blame: prevent error if range ends past end of file
Parsing of -L[<N>][,[<M>]] parameters "git blame" and "git log"
take has been tweaked.
Seems to break a few tests.
* ld/p4-unshelve (2018-02-22) 1 commit
- git-p4: add unshelve command
"git p4" learned to "unshelve" shelved commit from P4.
Will hold, perhaps drop and use format-change that uses a proper "diff".
cf. <CAE5ih7_ooDMqVtTMoQ70s5XCkncr04HY0JkqSp1UmKQeG81oaA@mail.gmail.com>
* av/fsmonitor-updates (2018-01-04) 6 commits
- fsmonitor: use fsmonitor data in `git diff`
- fsmonitor: remove debugging lines from t/t7519-status-fsmonitor.sh
- fsmonitor: make output of test-dump-fsmonitor more concise
- fsmonitor: update helper tool, now that flags are filled later
- fsmonitor: stop inline'ing mark_fsmonitor_valid / _invalid
- dir.c: update comments to match argument name
Code clean-up on fsmonitor integration, plus optional utilization
of the fsmonitor data in diff-files.
Waiting for an update.
cf. <alpine.DEB.2.21.1.1801042335130.32@MININT-6BKU6QN.europe.corp.microsoft.com>
* pb/bisect-helper-2 (2017-10-28) 8 commits
- t6030: make various test to pass GETTEXT_POISON tests
- bisect--helper: `bisect_start` shell function partially in C
- bisect--helper: `get_terms` & `bisect_terms` shell function in C
- bisect--helper: `bisect_next_check` shell function in C
- bisect--helper: `check_and_set_terms` shell function in C
- wrapper: move is_empty_file() and rename it as is_empty_or_missing_file()
- bisect--helper: `bisect_write` shell function in C
- bisect--helper: `bisect_reset` shell function in C
Expecting a reroll.
cf. <0102015f5e5ee171-f30f4868-886f-47a1-a4e4-b4936afc545d-000000@eu-west-1.amazonses.com>
* mk/http-backend-content-length (2017-11-27) 4 commits
- SQUASH???
- t5560-http-backend-noserver.sh: add CONTENT_LENGTH cases
- SQUASH???
- http-backend: respect CONTENT_LENGTH as specified by rfc3875
The http-backend (used for smart-http transport) used to slurp the
whole input until EOF, without paying attention to CONTENT_LENGTH
that is supplied in the environment and instead expecting the Web
server to close the input stream. This has been fixed.
Expecting a reroll.
Suggested fixes to be used when rerolling is queued, but I'd
prefer _not_ squashing them myself.
Also, it may be too complex solution for the problem.
cf. <20171204171308.GA13332@sigill.intra.peff.net>
* jk/drop-ancient-curl (2017-08-09) 5 commits
- http: #error on too-old curl
- curl: remove ifdef'd code never used with curl >=7.19.4
- http: drop support for curl < 7.19.4
- http: drop support for curl < 7.16.0
- http: drop support for curl < 7.11.1
Some code in http.c that has bitrot is being removed.
Expecting a reroll.
* mk/use-size-t-in-zlib (2017-08-10) 1 commit
. zlib.c: use size_t for size
The wrapper to call into zlib followed our long tradition to use
"unsigned long" for sizes of regions in memory, which have been
updated to use "size_t".
Needs resurrecting by making sure the fix is good and still applies
(or adjusted to today's codebase).
--------------------------------------------------
[Cooking]
* cc/perf-aggregate-unknown-option (2018-04-26) 1 commit
- perf/aggregate: use Getopt::Long for option parsing
Perf-test helper updates.
Will merge to 'next'.
* ab/perl-python-attrs (2018-04-27) 3 commits
- .gitattributes: add a diff driver for Python
- .gitattributes: use the "perl" differ for Perl
- .gitattributes: add *.pl extension for Perl
We learned that our source files with ".pl" and ".py" extensions
are Perl and Python files respectively and changes to them are
better viewed as such with appropriate diff drivers.
Will merge to 'next'.
* js/test-unset-prereq (2018-04-30) 1 commit
- tests: introduce test_unset_prereq, for debugging
Test debugging aid.
Will merge to 'next'.
cf. <20180507115950.3887-1-szeder.dev@gmail.com>
* fg/completion-external (2018-04-30) 1 commit
- completion: load completion file for external subcommand
The command line completion mechanism (in contrib/) learned to load
custom completion file for "git $command" where $command is a
custom "git-$command" that the end user has on the $PATH when using
newer version of bash.
Will merge to 'next'.
cf. <CAM0VKjkTu+OkLM3gvX73mWugxArCVmqRBmWGHiKuLiLRNkkNow@mail.gmail.com>
* ma/double-dashes-in-docs (2018-04-18) 4 commits
(merged to 'next' on 2018-04-25 at aaac2dc63c)
+ git-submodule.txt: quote usage in monospace, drop backslash
+ git-[short]log.txt: unify quoted standalone --
+ doc: convert [\--] to [--]
+ doc: convert \--option to --option
Doc formatting updates.
Will merge to 'master'.
* sb/worktree-remove-opt-force (2018-04-18) 1 commit
(merged to 'next' on 2018-04-25 at 0367d52a4b)
+ worktree: accept -f as short for --force for removal
"git worktree remove" learned that "-f" is a shorthand for
"--force" option, just like for "git worktree add".
Will merge to 'master'.
* sg/completion-clear-cached (2018-04-18) 1 commit
(merged to 'next' on 2018-04-25 at 9178da6c3d)
+ completion: reduce overhead of clearing cached --options
The completion script (in contrib/) learned to clear cached list of
command line options upon dot-sourcing it again in a more efficient
way.
Will merge to 'master'.
* sg/doc-gc-quote-mismatch-fix (2018-04-18) 1 commit
(merged to 'next' on 2018-04-25 at bc3d1abf45)
+ docs/git-gc: fix minor rendering issue
Doc formatting fix.
Will merge to 'master'.
* js/ident-date-fix (2018-04-19) 1 commit
(merged to 'next' on 2018-04-30 at d50ec2f4c1)
+ sequencer: reset the committer date before commits
During a "rebase -i" session, the code could give older timestamp
to commits created by later "pick" than an earlier "reword", which
has been corrected.
Will merge to 'master'.
* nd/submodule-status-fix (2018-04-19) 1 commit
(merged to 'next' on 2018-04-30 at 34d1f9ca83)
+ submodule--helper: don't print null in 'submodule status'
"git submodule status" did not check the symbolic revision name it
computed for the submodule HEAD is not the NULL, and threw it at
printf routines, which has been corrected.
Will merge to 'master'.
* sa/send-email-dedup-some-headers (2018-04-19) 1 commit
(merged to 'next' on 2018-04-30 at 2a1fd8217e)
+ send-email: avoid duplicate In-Reply-To/References
When fed input that already has In-Reply-To: and/or References:
headers and told to add the same information, "git send-email"
added these headers separately, instead of appending to an existing
one, which is a violation of the RFC. This has been corrected.
Will merge to 'master'.
* tg/demote-stash-save-in-completion (2018-04-20) 2 commits
(merged to 'next' on 2018-04-30 at 93d0af5375)
+ completion: make stash -p and alias for stash push -p
+ completion: stop showing 'save' for stash by default
The command line completion (in contrib/) has been taught that "git
stash save" has been deprecated ("git stash push" is the preferred
spelling in the new world) and does not offer it as a possible
completion candidate when "git stash push" can be.
Will merge to 'master'.
* tz/doc-git-urls-reference (2018-04-20) 1 commit
(merged to 'next' on 2018-04-30 at 39926c99fd)
+ doc/clone: update caption for GIT URLS cross-reference
Doc fix.
Will merge to 'master'.
* js/deprecate-grafts (2018-04-30) 12 commits
- Remove obsolete script to convert grafts to replace refs
- technical/shallow: describe why shallow cannot use replace refs
- technical/shallow: stop referring to grafts
- filter-branch: stop suggesting to use grafts
- Deprecate support for .git/info/grafts
- Add a test for `git replace --convert-graft-file`
- replace: introduce --convert-graft-file
- replace: prepare create_graft() for converting graft files wholesale
- replace: "libify" create_graft() and callees
- replace: avoid using die() to indicate a bug
- commit: Let the callback of for_each_mergetag return on error
- argv_array: offer to split a string by whitespace
The functionality of "$GIT_DIR/info/grafts" has been superseded by
the "refs/replace/" mechanism for some time now, but the internal
code had support for it in many places, which has been cleaned up
in order to drop support of the "grafts" mechanism.
Will merge to 'next'.
* js/rebase-i-clean-msg-after-fixup-continue (2018-05-02) 4 commits
- rebase --skip: clean up commit message after a failed fixup/squash
- sequencer: always commit without editing when asked for
- rebase -i: Handle "combination of <n> commits" with GETTEXT_POISON
- rebase -i: demonstrate bugs with fixup!/squash! commit messages
"git rebase -i" sometimes left intermediate "# This is a
combination of N commits" message meant for the human consumption
inside an editor in the final result in certain corner cases, which
has been fixed.
Will merge to 'next'.
* ma/fast-export-skip-merge-fix (2018-04-21) 1 commit
(merged to 'next' on 2018-04-30 at f7fca02ab1)
+ fast-export: fix regression skipping some merge-commits
"git fast-export" had a regression in v2.15.0 era where it skipped
some merge commits in certain cases, which has been corrected.
Will merge to 'master'.
* bw/server-options (2018-04-24) 4 commits
- fetch: send server options when using protocol v2
- ls-remote: send server options when using protocol v2
- serve: introduce the server-option capability
- Merge branch 'bw/protocol-v2' into HEAD
(this branch uses bw/protocol-v2; is tangled with jt/partial-clone-proto-v2.)
The transport protocol v2 is getting updated further.
Will merge to 'next'.
* jc/parseopt-expiry-errors (2018-04-23) 2 commits
(merged to 'next' on 2018-04-30 at 637085f3d8)
+ parseopt: handle malformed --expire arguments more nicely
+ gc: do not upcase error message shown with die()
"git gc --prune=nonsense" spent long time repacking and then
silently failed when underlying "git prune --expire=nonsense"
failed to parse its command line. This has been corrected.
Will merge to 'master'.
* js/colored-push-errors (2018-04-24) 4 commits
(merged to 'next' on 2018-04-30 at 31076c52a2)
+ config: document the settings to colorize push errors/hints
+ push: test to verify that push errors are colored
+ push: colorize errors
+ color: introduce support for colorizing stderr
Error messages from "git push" can be painted for more visibility.
Will merge to 'master'.
* js/runtime-prefix (2018-04-24) 8 commits
(merged to 'next' on 2018-04-30 at c6cfccf40e)
+ Avoid multiple PREFIX definitions
+ git_setup_gettext: plug memory leak
+ gettext: avoid initialization if the locale dir is not present
(merged to 'next' on 2018-04-17 at a69aaa7a22)
+ mingw/msvc: use the new-style RUNTIME_PREFIX helper
+ exec_cmd: provide a new-style RUNTIME_PREFIX helper for Windows
+ exec_cmd: RUNTIME_PREFIX on some POSIX systems
+ Makefile: add Perl runtime prefix support
+ Makefile: generate Perl header from template file
(this branch is tangled with dj/runtime-prefix.)
Will merge to 'master'.
* ma/http-walker-no-partial (2018-04-24) 2 commits
(merged to 'next' on 2018-04-30 at 4582c99ba8)
+ walker: drop fields of `struct walker` which are always 1
+ http-fetch: make `-a` standard behaviour
"git http-fetch" (deprecated) had an optional and experimental
"feature" to fetch only commits and/or trees, which nobody used.
This has been removed.
Will merge to 'master'.
* bc/object-id (2018-05-02) 42 commits
- merge-one-file: compute empty blob object ID
- add--interactive: compute the empty tree value
- Update shell scripts to compute empty tree object ID
- sha1_file: only expose empty object constants through git_hash_algo
- dir: use the_hash_algo for empty blob object ID
- sequencer: use the_hash_algo for empty tree object ID
- cache-tree: use is_empty_tree_oid
- sha1_file: convert cached object code to struct object_id
- builtin/reset: convert use of EMPTY_TREE_SHA1_BIN
- builtin/receive-pack: convert one use of EMPTY_TREE_SHA1_HEX
- wt-status: convert two uses of EMPTY_TREE_SHA1_HEX
- submodule: convert several uses of EMPTY_TREE_SHA1_HEX
- sequencer: convert one use of EMPTY_TREE_SHA1_HEX
- merge: convert empty tree constant to the_hash_algo
- builtin/merge: switch tree functions to use object_id
- builtin/am: convert uses of EMPTY_TREE_SHA1_BIN to the_hash_algo
- sha1-file: add functions for hex empty tree and blob OIDs
- builtin/receive-pack: avoid hard-coded constants for push certs
- diff: specify abbreviation size in terms of the_hash_algo
- upload-pack: replace use of several hard-coded constants
- revision: replace use of hard-coded constants
- http: eliminate hard-coded constants
- dir: convert struct untracked_cache_dir to object_id
- commit: convert uses of get_sha1_hex to get_oid_hex
- index-pack: abstract away hash function constant
- pack-redundant: convert linked lists to use struct object_id
- Update struct index_state to use struct object_id
- split-index: convert struct split_index to object_id
- submodule-config: convert structures to object_id
- fsck: convert static functions to struct object_id
- tree-walk: convert get_tree_entry_follow_symlinks to object_id
- tree-walk: avoid hard-coded 20 constant
- pack-redundant: abstract away hash algorithm
- pack-objects: abstract away hash algorithm
- packfile: abstract away hash constant values
- packfile: convert find_pack_entry to object_id
- sha1-file: convert freshen functions to object_id
- packfile: convert has_sha1_pack to object_id
- packfile: remove unused member from struct pack_entry
- Remove unused member in struct object_context
- server-info: remove unused members from struct pack_info
- cache: add a function to read an object ID from a buffer
Conversion from uchar[20] to struct object_id continues.
* sb/oid-object-info (2018-04-26) 9 commits
- cache.h: allow oid_object_info to handle arbitrary repositories
- packfile: add repository argument to cache_or_unpack_entry
- packfile: add repository argument to unpack_entry
- packfile: add repository argument to read_object
- packfile: add repository argument to packed_object_info
- packfile: add repository argument to packed_to_object_type
- packfile: add repository argument to retry_bad_packed_offset
- cache.h: add repository argument to oid_object_info
- cache.h: add repository argument to oid_object_info_extended
(this branch is used by sb/object-store-alloc; uses sb/object-store-replace.)
The codepath around object-info API has been taught to take the
repository object (which in turn tells the API which object store
the objects are to be located).
Will merge to 'next'.
* en/unpack-trees-split-index-fix (2018-05-02) 1 commit
- unpack_trees: fix breakage when o->src_index != o->dst_index
The split-index feature had a long-standing and dormant bug in
certain use of the in-core merge machinery, which has been fixed.
Will merge to 'next'.
cf. <CACsJy8CeDhrT9GXe9q5gqsAeq_sSQ8jyF2nMOFxzjwKtE31oPQ@mail.gmail.com>
* bp/merge-rename-config (2018-05-04) 3 commits
- merge: pass aggressive when rename detection is turned off
- merge: add merge.renames config setting
- merge: update documentation for {merge,diff}.renameLimit
(this branch uses en/rename-directory-detection-reboot.)
* en/git-debugger (2018-04-25) 1 commit
- Make running git under other debugger-like programs easy
Dev support.
Will merge to 'next'.
* js/no-pager-shorthand (2018-05-04) 1 commit
- git: add -P as a short option for --no-pager
"git --no-pager cmd" did not have short-and-sweet single letter
option. Now it does.
Will merge to 'next'.
* sb/diff-color-move-more (2018-04-25) 7 commits
- diff.c: add --color-moved-ignore-space-delta option
- diff.c: decouple white space treatment from move detection algorithm
- diff.c: add a blocks mode for moved code detection
- diff.c: adjust hash function signature to match hashmap expectation
- diff.c: do not pass diff options as keydata to hashmap
- xdiff/xdiffi.c: remove unneeded function declarations
- xdiff/xdiff.h: remove unused flags
"git diff --color-moved" feature has further been tweaked.
* so/glossary-ancestor (2018-04-17) 1 commit
(merged to 'next' on 2018-04-25 at 0a849fee00)
+ glossary: substitute "ancestor" for "direct ancestor" in 'push' description.
Docfix.
Will merge to 'master'.
* bt/gpg-interface (2018-04-16) 7 commits
(merged to 'next' on 2018-04-30 at 50c507b7d8)
+ gpg-interface: find the last gpg signature line
+ gpg-interface: extract gpg line matching helper
+ gpg-interface: fix const-correctness of "eol" pointer
+ gpg-interface: use size_t for signature buffer size
+ gpg-interface: modernize function declarations
+ gpg-interface: handle bool user.signingkey
+ t7004: fix mistaken tag name
What is queued here is only the obviously correct and
uncontroversial code clean-up part, which is an earlier 7 patches,
of a larger series.
The remainder that is not queued introduces a few configuration
variables to deal with e-signature backends with different
signature format.
Will merge to 'master'.
* ds/generation-numbers (2018-05-02) 11 commits
- commit-graph.txt: update design document
- merge: check config before loading commits
- commit: use generation number in remove_redundant()
- commit: add short-circuit to paint_down_to_common()
- commit: use generation numbers for in_merge_bases()
- ref-filter: use generation number for --contains
- commit-graph: always load commit-graph information
- commit: use generations in paint_down_to_common()
- commit-graph: compute generation numbers
- commit: add generation number to struct commmit
- ref-filter: fix outdated comment on in_commit_list
(this branch uses ds/commit-graph and ds/lazy-load-trees.)
A recently added "commit-graph" datafile has learned to store
pre-computed generation numbers to speed up the decisions to stop
history traversal.
Is this ready for 'next'?
* en/rename-directory-detection-reboot (2018-04-25) 36 commits
- merge-recursive: fix check for skipability of working tree updates
- merge-recursive: make "Auto-merging" comment show for other merges
- merge-recursive: fix remainder of was_dirty() to use original index
- merge-recursive: fix was_tracked() to quit lying with some renamed paths
- t6046: testcases checking whether updates can be skipped in a merge
- merge-recursive: avoid triggering add_cacheinfo error with dirty mod
- merge-recursive: move more is_dirty handling to merge_content
- merge-recursive: improve add_cacheinfo error handling
- merge-recursive: avoid spurious rename/rename conflict from dir renames
- directory rename detection: new testcases showcasing a pair of bugs
- merge-recursive: fix remaining directory rename + dirty overwrite cases
- merge-recursive: fix overwriting dirty files involved in renames
- merge-recursive: avoid clobbering untracked files with directory renames
- merge-recursive: apply necessary modifications for directory renames
- merge-recursive: when comparing files, don't include trees
- merge-recursive: check for file level conflicts then get new name
- merge-recursive: add computation of collisions due to dir rename & merging
- merge-recursive: check for directory level conflicts
- merge-recursive: add get_directory_renames()
- merge-recursive: make a helper function for cleanup for handle_renames
- merge-recursive: split out code for determining diff_filepairs
- merge-recursive: make !o->detect_rename codepath more obvious
- merge-recursive: fix leaks of allocated renames and diff_filepairs
- merge-recursive: introduce new functions to handle rename logic
- merge-recursive: move the get_renames() function
- directory rename detection: tests for handling overwriting dirty files
- directory rename detection: tests for handling overwriting untracked files
- directory rename detection: miscellaneous testcases to complete coverage
- directory rename detection: testcases exploring possibly suboptimal merges
- directory rename detection: more involved edge/corner testcases
- directory rename detection: testcases checking which side did the rename
- directory rename detection: files/directories in the way of some renames
- directory rename detection: partially renamed directory testcase/discussion
- directory rename detection: testcases to avoid taking detection too far
- directory rename detection: directory splitting testcases
- directory rename detection: basic testcases
(this branch is used by bp/merge-rename-config.)
Rename detection logic in "diff" family that is used in "merge" has
learned to guess when all of x/a, x/b and x/c have moved to z/a,
z/b and z/c, it is likely that x/d added in the meantime would also
want to move to z/d by taking the hint that the entire directory
'x' moved to 'z'. Incidentally, this avoids updating a file in the
working tree after a (non-trivial) merge whose result matches what
our side originally had.
Will merge to 'next'.
* nd/command-list (2018-04-30) 10 commits
- completion: let git provide the completable command list
- help: use command-list.txt for the source of guides
- help: add "-a --verbose" to list all commands with synopsis
- git: support --list-cmds=list-<category>
- completion: implement and use --list-cmds=main,others
- git.c: convert --list-*builtins to --list-cmds=*
- Remove common-cmds.h
- help: use command-list.h for common command list
- generate-cmds.sh: export all commands to command-list.h
- generate-cmds.sh: factor out synopsis extract code
The list of commands with their various attributes were spread
across a few places in the build procedure, but it now is getting a
bit more consolidated to allow more automation.
Is this ready for 'next'.
* sb/object-store-replace (2018-04-12) 15 commits
(merged to 'next' on 2018-04-25 at 9a213fb505)
+ replace-object: allow lookup_replace_object to handle arbitrary repositories
+ replace-object: allow do_lookup_replace_object to handle arbitrary repositories
+ replace-object: allow prepare_replace_object to handle arbitrary repositories
+ refs: allow for_each_replace_ref to handle arbitrary repositories
+ refs: store the main ref store inside the repository struct
+ replace-object: add repository argument to lookup_replace_object
+ replace-object: add repository argument to do_lookup_replace_object
+ replace-object: add repository argument to prepare_replace_object
+ refs: add repository argument to for_each_replace_ref
+ refs: add repository argument to get_main_ref_store
+ replace-object: check_replace_refs is safe in multi repo environment
+ replace-object: eliminate replace objects prepared flag
+ object-store: move lookup_replace_object to replace-object.h
+ replace-object: move replace_map to object store
+ replace_object: use oidmap
(this branch is used by sb/object-store-alloc and sb/oid-object-info.)
The effort to pass the repository in-core structure throughout the
API continues. This round deals with the code that implements the
refs/replace/ mechanism.
Will merge to 'master'.
* sg/complete-paths (2018-04-17) 11 commits
- completion: fill COMPREPLY directly when completing paths
- completion: improve handling quoted paths in 'git ls-files's output
- completion: remove repeated dirnames with 'awk' during path completion
- t9902-completion: ignore COMPREPLY element order in some tests
- completion: use 'awk' to strip trailing path components
- completion: let 'ls-files' and 'diff-index' filter matching paths
- completion: improve handling quoted paths on the command line
- completion: support completing non-ASCII pathnames
- completion: simplify prefix path component handling during path completion
- completion: move __git_complete_index_file() next to its helpers
- t9902-completion: add tests demonstrating issues with quoted pathnames
Command line completion (in contrib/) learned to complete pathnames
for various commands better.
Will merge to 'next'.
* tq/t1510 (2018-04-17) 1 commit
(merged to 'next' on 2018-04-25 at 5710c81979)
+ t1510-repo-setup.sh: remove useless mkdir
Test cleanup.
Will merge to 'master'.
* sb/blame-color (2018-04-24) 3 commits
- builtin/blame: add new coloring scheme config
- builtin/blame: highlight recently changed lines
- builtin/blame: dim uninteresting metadata lines
"git blame" learns to unhighlight uninteresting metadata from the
originating commit on lines that are the same as the previous one,
and also paint lines in different colors depending on the age of
the commit.
Is this ready for 'next'?
* ab/simplify-perl-makefile (2018-04-19) 2 commits
(merged to 'next' on 2018-04-25 at 906cf21682)
+ Makefile: mark perllibdir as a .PHONY target
(merged to 'next' on 2018-04-17 at 4448756934)
+ perl: fix installing modules from contrib
Recent simplification of build procedure forgot a bit of tweak to
the build procedure of contrib/mw-to-git/
Will merge to 'master'.
* ds/lazy-load-trees (2018-05-02) 6 commits
(merged to 'next' on 2018-05-02 at d54016d9e3)
+ coccinelle: avoid wrong transformation suggestions from commit.cocci
(merged to 'next' on 2018-04-25 at b90813f421)
+ commit-graph: lazy-load trees for commits
+ treewide: replace maybe_tree with accessor methods
+ commit: create get_commit_tree() method
+ treewide: rename tree to maybe_tree
+ Merge branch 'bw/c-plus-plus' into ds/lazy-load-trees
(this branch is used by ds/generation-numbers; uses ds/commit-graph.)
The code has been taught to use the duplicated information stored
in the commit-graph file to learn the tree object name for a commit
to avoid opening and parsing the commit object when it makes sense
to do so.
Will merge to 'master'.
* ab/git-svn-get-record-typofix (2018-04-09) 1 commit
(merged to 'next' on 2018-04-30 at 23f875f6b9)
+ git-svn: avoid warning on undef readline()
"git svn" had a minor thinko/typo which has been fixed.
Will merge to 'master'.
* hn/sort-ls-remote (2018-04-09) 1 commit
(merged to 'next' on 2018-04-30 at 244ca5d30a)
+ ls-remote: create '--sort' option
"git ls-remote" learned an option to allow sorting its output based
on the refnames being shown.
Will merge to 'master'.
* js/empty-config-section-fix (2018-04-09) 15 commits
(merged to 'next' on 2018-04-25 at 1690df3e5f)
+ git_config_set: reuse empty sections
+ git config --unset: remove empty sections (in the common case)
+ git_config_set: make use of the config parser's event stream
+ git_config_set: do not use a state machine
+ config_set_store: rename some fields for consistency
+ config: avoid using the global variable `store`
+ config: introduce an optional event stream while parsing
+ t1300: `--unset-all` can leave an empty section behind (bug)
+ t1300: add a few more hairy examples of sections becoming empty
+ t1300: remove unreasonable expectation from TODO
+ t1300: avoid relying on a bug
+ config --replace-all: avoid extra line breaks
+ t1300: demonstrate that --replace-all can "invent" newlines
+ t1300: rename it to reflect that `repo-config` was deprecated
+ git_config_set: fix off-by-two
"git config --unset a.b", when "a.b" is the last variable in an
otherwise empty section "a", left an empty section "a" behind, and
worse yet, a subsequent "git config a.c value" did not reuse that
empty shell and instead created a new one. These have been
(partially) corrected.
Will merge to 'master'.
* nd/warn-more-for-devs (2018-04-16) 4 commits
(merged to 'next' on 2018-04-25 at 2978e61414)
+ Makefile: add a DEVOPTS to get all of -Wextra
+ Makefile: add a DEVOPTS to suppress -Werror under DEVELOPER
+ Makefile: detect compiler and enable more warnings in DEVELOPER=1
+ connect.c: mark die_initial_contact() NORETURN
The build procedure "make DEVELOPER=YesPlease" learned to enable a
bit more warning options depending on the compiler used to help
developers more. There also is "make DEVOPTS=tokens" knob
available now, for those who want to help fixing warnings we
usually ignore, for example.
Will merge to 'master'.
* sb/submodule-move-nested (2018-03-29) 6 commits
(merged to 'next' on 2018-04-25 at 86b177433a)
+ submodule: fixup nested submodules after moving the submodule
+ submodule-config: remove submodule_from_cache
+ submodule-config: add repository argument to submodule_from_{name, path}
+ submodule-config: allow submodule_free to handle arbitrary repositories
+ grep: remove "repo" arg from non-supporting funcs
+ submodule.h: drop declaration of connect_work_tree_and_git_dir
Moving a submodule that itself has submodule in it with "git mv"
forgot to make necessary adjustment to the nested sub-submodules;
now the codepath learned to recurse into the submodules.
Will merge to 'master'.
* tb/config-type (2018-04-19) 2 commits
(merged to 'next' on 2018-04-25 at fe69e93c82)
+ builtin/config.c: support `--type=<type>` as preferred alias for `--<type>`
+ builtin/config.c: treat type specifiers singularly
(this branch is used by tb/config-default.)
The "git config" command uses separate options e.g. "--int",
"--bool", etc. to specify what type the caller wants the value to
be interpreted as. A new "--type=<typename>" option has been
introduced, which would make it cleaner to define new types.
Will merge to 'master'.
* tb/config-default (2018-04-23) 3 commits
(merged to 'next' on 2018-04-25 at 59bb6beb2a)
+ builtin/config: introduce `color` type specifier
+ config.c: introduce 'git_config_color' to parse ANSI colors
+ builtin/config: introduce `--default`
(this branch uses tb/config-type.)
"git config --get" learned the "--default" option, to help the
calling script. Building on top of the tb/config-type topic, the
"git config" learns "--type=color" type. Taken together, you can
do things like "git config --get foo.color --default blue" and get
the ANSI color sequence for the color given to foo.color variable,
or "blue" if the variable does not exist.
Will merge to 'master'.
* ot/libify-get-ref-atom-value (2018-03-29) 6 commits
(merged to 'next' on 2018-04-25 at 056bcaa69c)
+ ref-filter: libify get_ref_atom_value()
+ ref-filter: add return value to parsers
+ ref-filter: change parsing function error handling
+ ref-filter: add return value && strbuf to handlers
+ ref-filter: start adding strbufs with errors
+ ref-filter: add shortcut to work with strbufs
Code restructuring, in preparation for further work.
Will merge to 'master'.
* jk/branch-l-0-deprecation (2018-03-26) 3 commits
(merged to 'next' on 2018-04-11 at 9b2b0305dd)
+ branch: deprecate "-l" option
+ t: switch "branch -l" to "branch --create-reflog"
+ t3200: unset core.logallrefupdates when testing reflog creation
(this branch is used by jk/branch-l-1-removal and jk/branch-l-2-reincarnation.)
The "-l" option in "git branch -l" is an unfortunate short-hand for
"--create-reflog", but many users, both old and new, somehow expect
it to be something else, perhaps "--list". This step deprecates
the short-hand and warns about the future removal of the it when it
is used.
Will cook in 'next'.
* jk/branch-l-1-removal (2018-03-26) 1 commit
- branch: drop deprecated "-l" option
(this branch is used by jk/branch-l-2-reincarnation; uses jk/branch-l-0-deprecation.)
Following the "git branch -l" deprecation, the short-hand is removed.
Will keep in 'pu'.
* jk/branch-l-2-reincarnation (2018-03-26) 1 commit
- branch: make "-l" a synonym for "--list"
(this branch uses jk/branch-l-0-deprecation and jk/branch-l-1-removal.)
Following the "git branch -l" removal, "-l" is resurrected as a
short-hand for "--list".
Will keep in 'pu'.
* dj/runtime-prefix (2018-04-24) 7 commits
(merged to 'next' on 2018-04-25 at e7e635a70e)
+ Makefile: quote $INSTLIBDIR when passing it to sed
+ Makefile: remove unused @@PERLLIBDIR@@ substitution variable
(merged to 'next' on 2018-04-17 at a69aaa7a22)
+ mingw/msvc: use the new-style RUNTIME_PREFIX helper
+ exec_cmd: provide a new-style RUNTIME_PREFIX helper for Windows
+ exec_cmd: RUNTIME_PREFIX on some POSIX systems
+ Makefile: add Perl runtime prefix support
+ Makefile: generate Perl header from template file
(this branch is tangled with js/runtime-prefix.)
A build-time option has been added to allow Git to be told to refer
to its associated files relative to the main binary, in the same
way that has been possible on Windows for quite some time, for
Linux, BSDs and Darwin.
Will merge to 'master'.
* ab/nuke-emacs-contrib (2018-04-16) 1 commit
(merged to 'next' on 2018-04-25 at 9b133d8a65)
+ git{,-blame}.el: remove old bitrotting Emacs code
The scripts in contrib/emacs/ have outlived their usefulness and
have been replaced with a stub that errors out and tells the user
there are replacements.
Will merge to 'master'.
* nd/pack-objects-pack-struct (2018-04-16) 15 commits
- ci: exercise the whole test suite with uncommon code in pack-objects
- pack-objects: reorder members to shrink struct object_entry
- pack-objects: shrink delta_size field in struct object_entry
- pack-objects: shrink size field in struct object_entry
- pack-objects: clarify the use of object_entry::size
- pack-objects: don't check size when the object is bad
- pack-objects: shrink z_delta_size field in struct object_entry
- pack-objects: refer to delta objects by index instead of pointer
- pack-objects: move in_pack out of struct object_entry
- pack-objects: move in_pack_pos out of struct object_entry
- pack-objects: use bitfield for object_entry::depth
- pack-objects: use bitfield for object_entry::dfs_state
- pack-objects: turn type and in_pack_type to bitfields
- pack-objects: a bit of document about struct object_entry
- read-cache.c: make $GIT_TEST_SPLIT_INDEX boolean
"git pack-objects" needs to allocate tons of "struct object_entry"
while doing its work, and shrinking its size helps the performance
quite a bit.
Will merge to 'next'.
cf. <CACsJy8CuVRy4UPEwXJJYAjePEz5zjKMLhRjh9UFw0DPYTzobkw@mail.gmail.com>
* nd/repack-keep-pack (2018-04-16) 7 commits
- pack-objects: show some progress when counting kept objects
- gc --auto: exclude base pack if not enough mem to "repack -ad"
- gc: handle a corner case in gc.bigPackThreshold
- gc: add gc.bigPackThreshold config
- gc: add --keep-largest-pack option
- repack: add --keep-pack option
- t7700: have closing quote of a test at the beginning of line
"git gc" in a large repository takes a lot of time as it considers
to repack all objects into one pack by default. The command has
been taught to pretend as if the largest existing packfile is
marked with ".keep" so that it is left untouched while objects in
other packs and loose ones are repacked.
Will merge to 'next'.
cf. <CACsJy8CuVRy4UPEwXJJYAjePEz5zjKMLhRjh9UFw0DPYTzobkw@mail.gmail.com>
* ds/commit-graph (2018-04-11) 16 commits
(merged to 'next' on 2018-04-25 at 18af3d28d9)
+ commit-graph: implement "--append" option
+ commit-graph: build graph from starting commits
+ commit-graph: read only from specific pack-indexes
+ commit: integrate commit graph with commit parsing
+ commit-graph: close under reachability
+ commit-graph: add core.commitGraph setting
+ commit-graph: implement git commit-graph read
+ commit-graph: implement git-commit-graph write
+ commit-graph: implement write_commit_graph()
+ commit-graph: create git-commit-graph builtin
+ graph: add commit graph design document
+ commit-graph: add format document
+ csum-file: refactor finalize_hashfile() method
+ csum-file: rename hashclose() to finalize_hashfile()
+ Merge branch 'jk/cached-commit-buffer' into HEAD
+ Merge branch 'jt/binsearch-with-fanout' into HEAD
(this branch is used by ds/generation-numbers and ds/lazy-load-trees.)
Precompute and store information necessary for ancestry traversal
in a separate file to optimize graph walking.
Will merge to 'master'.
* tg/worktree-add-existing-branch (2018-04-30) 4 commits
- worktree: teach "add" to check out existing branches
- worktree: factor out dwim_branch function
- worktree: improve message when creating a new worktree
- worktree: remove extra members from struct add_opts
"git worktree add" learned to check out an existing branch.
Will merge to 'next'.
* js/rebase-recreate-merge (2018-04-26) 17 commits
- rebase -i --rebase-merges: add a section to the man page
- rebase -i: introduce --rebase-merges=[no-]rebase-cousins
- pull: accept --rebase=merges to recreate the branch topology
- rebase --rebase-merges: avoid "empty merges"
- sequencer: handle post-rewrite for merge commands
- sequencer: make refs generated by the `label` command worktree-local
- rebase --rebase-merges: add test for --keep-empty
- rebase: introduce the --rebase-merges option
- rebase-helper --make-script: introduce a flag to rebase merges
- sequencer: fast-forward `merge` commands, if possible
- sequencer: introduce the `merge` command
- sequencer: introduce new commands to reset the revision
- git-rebase--interactive: clarify arguments
- sequencer: offer helpful advice when a command was rescheduled
- sequencer: refactor how original todo list lines are accessed
- sequencer: make rearrange_squash() a bit more obvious
- sequencer: avoid using errno clobbered by rollback_lock_file()
(this branch is used by js/sequencer-and-root-commits.)
"git rebase" learned "--rebase-merges" to transplant the whole
topology of commit graph elsewhere.
Will merge to 'next'.
* bw/protocol-v2 (2018-03-15) 35 commits
(merged to 'next' on 2018-04-11 at 23ee234a2c)
+ remote-curl: don't request v2 when pushing
+ remote-curl: implement stateless-connect command
+ http: eliminate "# service" line when using protocol v2
+ http: don't always add Git-Protocol header
+ http: allow providing extra headers for http requests
+ remote-curl: store the protocol version the server responded with
+ remote-curl: create copy of the service name
+ pkt-line: add packet_buf_write_len function
+ transport-helper: introduce stateless-connect
+ transport-helper: refactor process_connect_service
+ transport-helper: remove name parameter
+ connect: don't request v2 when pushing
+ connect: refactor git_connect to only get the protocol version once
+ fetch-pack: support shallow requests
+ fetch-pack: perform a fetch using v2
+ upload-pack: introduce fetch server command
+ push: pass ref prefixes when pushing
+ fetch: pass ref prefixes when fetching
+ ls-remote: pass ref prefixes when requesting a remote's refs
+ transport: convert transport_get_remote_refs to take a list of ref prefixes
+ transport: convert get_refs_list to take a list of ref prefixes
+ connect: request remote refs using v2
+ ls-refs: introduce ls-refs server command
+ serve: introduce git-serve
+ test-pkt-line: introduce a packet-line test helper
+ protocol: introduce enum protocol_version value protocol_v2
+ transport: store protocol version
+ connect: discover protocol version outside of get_remote_heads
+ connect: convert get_remote_heads to use struct packet_reader
+ transport: use get_refs_via_connect to get refs
+ upload-pack: factor out processing lines
+ upload-pack: convert to a builtin
+ pkt-line: add delim packet support
+ pkt-line: allow peeking a packet line without consuming it
+ pkt-line: introduce packet_read_with_status
(this branch is used by bw/server-options and jt/partial-clone-proto-v2.)
The beginning of the next-gen transfer protocol.
Will merge to 'master'.
* ls/checkout-encoding (2018-04-16) 10 commits
(merged to 'next' on 2018-04-25 at e0f8554b2a)
+ convert: add round trip check based on 'core.checkRoundtripEncoding'
+ convert: add tracing for 'working-tree-encoding' attribute
+ convert: check for detectable errors in UTF encodings
+ convert: add 'working-tree-encoding' attribute
+ utf8: add function to detect a missing UTF-16/32 BOM
+ utf8: add function to detect prohibited UTF-16/32 BOM
+ utf8: teach same_encoding() alternative UTF encoding names
+ strbuf: add a case insensitive starts_with()
+ strbuf: add xstrdup_toupper()
+ strbuf: remove unnecessary NUL assignment in xstrdup_tolower()
The new "checkout-encoding" attribute can ask Git to convert the
contents to the specified encoding when checking out to the working
tree (and the other way around when checking in).
Will merge to 'master'.
--------------------------------------------------
[Discarded]
* js/runtime-prefix-windows (2018-03-27) 5 commits
. mingw/msvc: use the new-style RUNTIME_PREFIX helper
. exec_cmd: provide a new-style RUNTIME_PREFIX helper for Windows
. exec_cmd: RUNTIME_PREFIX on some POSIX systems
. Makefile: add Perl runtime prefix support
. Makefile: generate Perl header from template file
The Windows port was the first that allowed Git to be installed
anywhere by having its components refer to each other with relative
pathnames. The recent dj/runtime-prefix topic extends the idea to
other platforms, and its approach has been adopted back in the
Windows port.
Ejected, as the parent topic dj/runtime-prefix covers Windows now.
* bp/fsexcludes (2018-04-16) 2 commits
. fsmonitor: switch to use new fsexcludes logic and remove unused untracked cache based logic
. fsexcludes: add a programmatic way to exclude files from git's working directory traversal logic
Can we have a few lines summary here, just like we have for other
topic ;-) I personally take the overlong title of these commits as
a sign that they can further be simplified and cleaned up by
splitting, focusing the scope, etc.
Retracted.
cf. <0de30972-b0a2-67e8-7cff-c19daf9ece8b@gmail.com>
^ permalink raw reply [relevance 3%]
* What's cooking in git.git (Apr 2018, #04; Mon, 30)
@ 2018-04-30 3:25 3% Junio C Hamano
0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2018-04-30 3:25 UTC (permalink / raw)
To: git
What's cooking in git.git (Apr 2018, #04; Mon, 30)
--------------------------------------------------
Here are the topics that have been cooking. Commits prefixed with
'-' are only in 'pu' (proposed updates) while commits prefixed with
'+' are in 'next'. The ones marked with '.' do not appear in any of
the integration branches, but I am still holding onto them.
You can find the changes described here in the integration branches
of the repositories listed at
http://git-blame.blogspot.com/p/git-public-repositories.html
--------------------------------------------------
[New Topics]
* cc/perf-aggregate-unknown-option (2018-04-26) 1 commit
- perf/aggregate: use Getopt::Long for option parsing
Perf-test helper updates.
Will merge to 'next'.
* ab/perl-python-attrs (2018-04-27) 3 commits
- .gitattributes: add a diff driver for Python
- .gitattributes: use the "perl" differ for Perl
- .gitattributes: add *.pl extension for Perl
We learned that our source files with ".pl" and ".py" extensions
are Perl and Python files respectively and changes to them are
better viewed as such with appropriate diff drivers.
Will merge to 'next'.
* is/parsing-line-range (2018-04-27) 2 commits
. log: prevent error if line range ends past end of file
. blame: prevent error if range ends past end of file
Parsing of -L[<N>][,[<M>]] parameters "git blame" and "git log"
take has been tweaked.
Seems to break a few tests.
* js/test-unset-prereq (2018-04-30) 1 commit
- tests: introduce test_unset_prereq, for debugging
Test debugging aid.
Will merge to 'next'.
--------------------------------------------------
[Stalled]
* ld/p4-unshelve (2018-02-22) 1 commit
- git-p4: add unshelve command
"git p4" learned to "unshelve" shelved commit from P4.
Will hold, perhaps drop and use format-change that uses a proper "diff".
cf. <CAE5ih7_ooDMqVtTMoQ70s5XCkncr04HY0JkqSp1UmKQeG81oaA@mail.gmail.com>
* av/fsmonitor-updates (2018-01-04) 6 commits
- fsmonitor: use fsmonitor data in `git diff`
- fsmonitor: remove debugging lines from t/t7519-status-fsmonitor.sh
- fsmonitor: make output of test-dump-fsmonitor more concise
- fsmonitor: update helper tool, now that flags are filled later
- fsmonitor: stop inline'ing mark_fsmonitor_valid / _invalid
- dir.c: update comments to match argument name
Code clean-up on fsmonitor integration, plus optional utilization
of the fsmonitor data in diff-files.
Waiting for an update.
cf. <alpine.DEB.2.21.1.1801042335130.32@MININT-6BKU6QN.europe.corp.microsoft.com>
* pb/bisect-helper-2 (2017-10-28) 8 commits
- t6030: make various test to pass GETTEXT_POISON tests
- bisect--helper: `bisect_start` shell function partially in C
- bisect--helper: `get_terms` & `bisect_terms` shell function in C
- bisect--helper: `bisect_next_check` shell function in C
- bisect--helper: `check_and_set_terms` shell function in C
- wrapper: move is_empty_file() and rename it as is_empty_or_missing_file()
- bisect--helper: `bisect_write` shell function in C
- bisect--helper: `bisect_reset` shell function in C
Expecting a reroll.
cf. <0102015f5e5ee171-f30f4868-886f-47a1-a4e4-b4936afc545d-000000@eu-west-1.amazonses.com>
* mk/http-backend-content-length (2017-11-27) 4 commits
- SQUASH???
- t5560-http-backend-noserver.sh: add CONTENT_LENGTH cases
- SQUASH???
- http-backend: respect CONTENT_LENGTH as specified by rfc3875
The http-backend (used for smart-http transport) used to slurp the
whole input until EOF, without paying attention to CONTENT_LENGTH
that is supplied in the environment and instead expecting the Web
server to close the input stream. This has been fixed.
Expecting a reroll.
Suggested fixes to be used when rerolling is queued, but I'd
prefer _not_ squashing them myself.
Also, it may be too complex solution for the problem.
cf. <20171204171308.GA13332@sigill.intra.peff.net>
* jk/drop-ancient-curl (2017-08-09) 5 commits
- http: #error on too-old curl
- curl: remove ifdef'd code never used with curl >=7.19.4
- http: drop support for curl < 7.19.4
- http: drop support for curl < 7.16.0
- http: drop support for curl < 7.11.1
Some code in http.c that has bitrot is being removed.
Expecting a reroll.
* mk/use-size-t-in-zlib (2017-08-10) 1 commit
. zlib.c: use size_t for size
The wrapper to call into zlib followed our long tradition to use
"unsigned long" for sizes of regions in memory, which have been
updated to use "size_t".
Needs resurrecting by making sure the fix is good and still applies
(or adjusted to today's codebase).
--------------------------------------------------
[Cooking]
* fg/completion-external (2018-04-30) 1 commit
- completion: load completion file for external subcommand
The command line completion mechanism (in contrib/) learned to load
custom completion file for "git $command" where $command is a
custom "git-$command" that the end user has on the $PATH when using
newer version of bash.
* ma/double-dashes-in-docs (2018-04-18) 4 commits
(merged to 'next' on 2018-04-25 at aaac2dc63c)
+ git-submodule.txt: quote usage in monospace, drop backslash
+ git-[short]log.txt: unify quoted standalone --
+ doc: convert [\--] to [--]
+ doc: convert \--option to --option
Doc formatting updates.
Will merge to 'master'.
* sb/worktree-remove-opt-force (2018-04-18) 1 commit
(merged to 'next' on 2018-04-25 at 0367d52a4b)
+ worktree: accept -f as short for --force for removal
"git worktree remove" learned that "-f" is a shorthand for
"--force" option, just like for "git worktree add".
Will merge to 'master'.
* sg/completion-clear-cached (2018-04-18) 1 commit
(merged to 'next' on 2018-04-25 at 9178da6c3d)
+ completion: reduce overhead of clearing cached --options
The completion script (in contrib/) learned to clear cached list of
command line options upon dot-sourcing it again in a more efficient
way.
Will merge to 'master'.
* sg/doc-gc-quote-mismatch-fix (2018-04-18) 1 commit
(merged to 'next' on 2018-04-25 at bc3d1abf45)
+ docs/git-gc: fix minor rendering issue
Doc formatting fix.
Will merge to 'master'.
* js/ident-date-fix (2018-04-19) 1 commit
(merged to 'next' on 2018-04-30 at d50ec2f4c1)
+ sequencer: reset the committer date before commits
During a "rebase -i" session, the code could give older timestamp
to commits created by later "pick" than an earlier "reword", which
has been corrected.
Will merge to 'master'.
* nd/submodule-status-fix (2018-04-19) 1 commit
(merged to 'next' on 2018-04-30 at 34d1f9ca83)
+ submodule--helper: don't print null in 'submodule status'
"git submodule status" did not check the symbolic revision name it
computed for the submodule HEAD is not the NULL, and threw it at
printf routines, which has been corrected.
Will merge to 'master'.
* sa/send-email-dedup-some-headers (2018-04-19) 1 commit
(merged to 'next' on 2018-04-30 at 2a1fd8217e)
+ send-email: avoid duplicate In-Reply-To/References
When fed input that already has In-Reply-To: and/or References:
headers and told to add the same information, "git send-email"
added these headers separately, instead of appending to an existing
one, which is a violation of the RFC. This has been corrected.
Will merge to 'master'.
* tg/demote-stash-save-in-completion (2018-04-20) 2 commits
(merged to 'next' on 2018-04-30 at 93d0af5375)
+ completion: make stash -p and alias for stash push -p
+ completion: stop showing 'save' for stash by default
The command line completion (in contrib/) has been taught that "git
stash save" has been deprecated ("git stash push" is the preferred
spelling in the new world) and does not offer it as a possible
completion candidate when "git stash push" can be.
Will merge to 'master'.
* tz/doc-git-urls-reference (2018-04-20) 1 commit
(merged to 'next' on 2018-04-30 at 39926c99fd)
+ doc/clone: update caption for GIT URLS cross-reference
Doc fix.
Will merge to 'master'.
* js/deprecate-grafts (2018-04-30) 12 commits
- Remove obsolete script to convert grafts to replace refs
- technical/shallow: describe why shallow cannot use replace refs
- technical/shallow: stop referring to grafts
- filter-branch: stop suggesting to use grafts
- Deprecate support for .git/info/grafts
- Add a test for `git replace --convert-graft-file`
- replace: introduce --convert-graft-file
- replace: prepare create_graft() for converting graft files wholesale
- replace: "libify" create_graft() and callees
- replace: avoid using die() to indicate a bug
- commit: Let the callback of for_each_mergetag return on error
- argv_array: offer to split a string by whitespace
The functionality of "$GIT_DIR/info/grafts" has been superseded by
the "refs/replace/" mechanism for some time now, but the internal
code had support for it in many places, which has been cleaned up
in order to drop support of the "grafts" mechanism.
Will merge to 'next'.
* js/rebase-i-clean-msg-after-fixup-continue (2018-04-30) 4 commits
- rebase --skip: clean up commit message after a failed fixup/squash
- sequencer: always commit without editing when asked for
- rebase -i: Handle "combination of <n> commits" with GETTEXT_POISON
- rebase -i: demonstrate bugs with fixup!/squash! commit messages
"git rebase -i" sometimes left intermediate "# This is a
combination of N commits" message meant for the human consumption
inside an editor in the final result in certain corner cases, which
has been fixed.
Will merge to 'next'.
* ma/fast-export-skip-merge-fix (2018-04-21) 1 commit
(merged to 'next' on 2018-04-30 at f7fca02ab1)
+ fast-export: fix regression skipping some merge-commits
"git fast-export" had a regression in v2.15.0 era where it skipped
some merge commits in certain cases, which has been corrected.
Will merge to 'master'.
* bw/server-options (2018-04-24) 4 commits
- fetch: send server options when using protocol v2
- ls-remote: send server options when using protocol v2
- serve: introduce the server-option capability
- Merge branch 'bw/protocol-v2' into HEAD
(this branch uses bw/protocol-v2.)
The transport protocol v2 is getting updated further.
Will merge to 'next'.
* jc/parseopt-expiry-errors (2018-04-23) 2 commits
(merged to 'next' on 2018-04-30 at 637085f3d8)
+ parseopt: handle malformed --expire arguments more nicely
+ gc: do not upcase error message shown with die()
"git gc --prune=nonsense" spent long time repacking and then
silently failed when underlying "git prune --expire=nonsense"
failed to parse its command line. This has been corrected.
Will merge to 'master'.
* js/colored-push-errors (2018-04-24) 4 commits
(merged to 'next' on 2018-04-30 at 31076c52a2)
+ config: document the settings to colorize push errors/hints
+ push: test to verify that push errors are colored
+ push: colorize errors
+ color: introduce support for colorizing stderr
Error messages from "git push" can be painted for more visibility.
Will merge to 'master'.
* js/runtime-prefix (2018-04-24) 8 commits
(merged to 'next' on 2018-04-30 at c6cfccf40e)
+ Avoid multiple PREFIX definitions
+ git_setup_gettext: plug memory leak
+ gettext: avoid initialization if the locale dir is not present
(merged to 'next' on 2018-04-17 at a69aaa7a22)
+ mingw/msvc: use the new-style RUNTIME_PREFIX helper
+ exec_cmd: provide a new-style RUNTIME_PREFIX helper for Windows
+ exec_cmd: RUNTIME_PREFIX on some POSIX systems
+ Makefile: add Perl runtime prefix support
+ Makefile: generate Perl header from template file
(this branch is tangled with dj/runtime-prefix.)
Will merge to 'master'.
* ma/http-walker-no-partial (2018-04-24) 2 commits
(merged to 'next' on 2018-04-30 at 4582c99ba8)
+ walker: drop fields of `struct walker` which are always 1
+ http-fetch: make `-a` standard behaviour
"git http-fetch" (deprecated) had an optional and experimental
"feature" to fetch only commits and/or trees, which nobody used.
This has been removed.
Will merge to 'master'.
* bc/object-id (2018-04-24) 41 commits
- merge-one-file: compute empty blob object ID
- add--interactive: compute the empty tree value
- Update shell scripts to compute empty tree object ID
- sha1_file: only expose empty object constants through git_hash_algo
- dir: use the_hash_algo for empty blob object ID
- sequencer: use the_hash_algo for empty tree object ID
- cache-tree: use is_empty_tree_oid
- sha1_file: convert cached object code to struct object_id
- builtin/reset: convert use of EMPTY_TREE_SHA1_BIN
- builtin/receive-pack: convert one use of EMPTY_TREE_SHA1_HEX
- wt-status: convert two uses of EMPTY_TREE_SHA1_HEX
- submodule: convert several uses of EMPTY_TREE_SHA1_HEX
- sequencer: convert one use of EMPTY_TREE_SHA1_HEX
- merge: convert empty tree constant to the_hash_algo
- builtin/merge: switch tree functions to use object_id
- builtin/am: convert uses of EMPTY_TREE_SHA1_BIN to the_hash_algo
- builtin/receive-pack: avoid hard-coded constants for push certs
- diff: specify abbreviation size in terms of the_hash_algo
- upload-pack: replace use of several hard-coded constants
- revision: replace use of hard-coded constants
- http: eliminate hard-coded constants
- dir: convert struct untracked_cache_dir to object_id
- commit: convert uses of get_sha1_hex to get_oid_hex
- index-pack: abstract away hash function constant
- pack-redundant: convert linked lists to use struct object_id
- Update struct index_state to use struct object_id
- split-index: convert struct split_index to object_id
- submodule-config: convert structures to object_id
- fsck: convert static functions to struct object_id
- tree-walk: convert get_tree_entry_follow_symlinks to object_id
- tree-walk: avoid hard-coded 20 constant
- pack-redundant: abstract away hash algorithm
- pack-objects: abstract away hash algorithm
- packfile: abstract away hash constant values
- packfile: convert find_pack_entry to object_id
- sha1_file: convert freshen functions to object_id
- packfile: convert has_sha1_pack to object_id
- packfile: remove unused member from struct pack_entry
- Remove unused member in struct object_context
- server-info: remove unused members from struct pack_info
- cache: add a function to read an object ID from a buffer
Conversion from uchar[20] to struct object_id continues.
Expecting a reroll.
cf. <20180426011337.GA722934@genre.crustytoothpaste.net>
* sb/oid-object-info (2018-04-26) 9 commits
- cache.h: allow oid_object_info to handle arbitrary repositories
- packfile: add repository argument to cache_or_unpack_entry
- packfile: add repository argument to unpack_entry
- packfile: add repository argument to read_object
- packfile: add repository argument to packed_object_info
- packfile: add repository argument to packed_to_object_type
- packfile: add repository argument to retry_bad_packed_offset
- cache.h: add repository argument to oid_object_info
- cache.h: add repository argument to oid_object_info_extended
(this branch uses sb/object-store-replace.)
The codepath around object-info API has been taught to take the
repository object (which in turn tells the API which object store
the objects are to be located).
Will merge to 'next'.
* en/unpack-trees-split-index-fix (2018-04-24) 1 commit
- unpack_trees: fix breakage when o->src_index != o->dst_index
The split-index feature had a long-standing and dormant bug in
certain use of the in-core merge machinery, which has been fixed.
Hold.
cf. <CACsJy8DyP_mXXJKn52Jzqe63N3GLpXePCr8ha97Lv9hr6u-M0w@mail.gmail.com>
* bp/merge-rename-config (2018-04-25) 2 commits
- merge: add merge.aggressive config setting
- merge: add merge.renames config setting
* en/git-debugger (2018-04-25) 1 commit
- Make running git under other debugger-like programs easy
Dev support.
Will merge to 'next'.
* js/no-pager-shorthand (2018-04-25) 1 commit
- git: add -N as a short option for --no-pager
"git --no-pager cmd" did not have short-and-sweet single letter
option. Now it does.
Will merge to 'next'.
* sb/diff-color-move-more (2018-04-25) 7 commits
- diff.c: add --color-moved-ignore-space-delta option
- diff.c: decouple white space treatment from move detection algorithm
- diff.c: add a blocks mode for moved code detection
- diff.c: adjust hash function signature to match hashmap expectation
- diff.c: do not pass diff options as keydata to hashmap
- xdiff/xdiffi.c: remove unneeded function declarations
- xdiff/xdiff.h: remove unused flags
"git diff --color-moved" feature has further been tweaked.
* so/glossary-ancestor (2018-04-17) 1 commit
(merged to 'next' on 2018-04-25 at 0a849fee00)
+ glossary: substitute "ancestor" for "direct ancestor" in 'push' description.
Docfix.
Will merge to 'master'.
* bt/gpg-interface (2018-04-16) 7 commits
(merged to 'next' on 2018-04-30 at 50c507b7d8)
+ gpg-interface: find the last gpg signature line
+ gpg-interface: extract gpg line matching helper
+ gpg-interface: fix const-correctness of "eol" pointer
+ gpg-interface: use size_t for signature buffer size
+ gpg-interface: modernize function declarations
+ gpg-interface: handle bool user.signingkey
+ t7004: fix mistaken tag name
What is queued here is only the obviously correct and
uncontroversial code clean-up part, which is an earlier 7 patches,
of a larger series.
The remainder that is not queued introduces a few configuration
variables to deal with e-signature backends with different
signature format.
Will merge to 'master'.
* ds/generation-numbers (2018-04-26) 10 commits
- commit-graph.txt: update design document
- merge: check config before loading commits
- commit: add short-circuit to paint_down_to_common()
- commit: use generation numbers for in_merge_bases()
- ref-filter: use generation number for --contains
- commit-graph: always load commit-graph information
- commit: use generations in paint_down_to_common()
- commit-graph: compute generation numbers
- commit: add generation number to struct commmit
- ref-filter: fix outdated comment on in_commit_list
(this branch uses ds/commit-graph and ds/lazy-load-trees.)
A recently added "commit-graph" datafile has learned to store
pre-computed generation numbers to speed up the decisions to stop
history traversal.
* en/rename-directory-detection-reboot (2018-04-25) 36 commits
- merge-recursive: fix check for skipability of working tree updates
- merge-recursive: make "Auto-merging" comment show for other merges
- merge-recursive: fix remainder of was_dirty() to use original index
- merge-recursive: fix was_tracked() to quit lying with some renamed paths
- t6046: testcases checking whether updates can be skipped in a merge
- merge-recursive: avoid triggering add_cacheinfo error with dirty mod
- merge-recursive: move more is_dirty handling to merge_content
- merge-recursive: improve add_cacheinfo error handling
- merge-recursive: avoid spurious rename/rename conflict from dir renames
- directory rename detection: new testcases showcasing a pair of bugs
- merge-recursive: fix remaining directory rename + dirty overwrite cases
- merge-recursive: fix overwriting dirty files involved in renames
- merge-recursive: avoid clobbering untracked files with directory renames
- merge-recursive: apply necessary modifications for directory renames
- merge-recursive: when comparing files, don't include trees
- merge-recursive: check for file level conflicts then get new name
- merge-recursive: add computation of collisions due to dir rename & merging
- merge-recursive: check for directory level conflicts
- merge-recursive: add get_directory_renames()
- merge-recursive: make a helper function for cleanup for handle_renames
- merge-recursive: split out code for determining diff_filepairs
- merge-recursive: make !o->detect_rename codepath more obvious
- merge-recursive: fix leaks of allocated renames and diff_filepairs
- merge-recursive: introduce new functions to handle rename logic
- merge-recursive: move the get_renames() function
- directory rename detection: tests for handling overwriting dirty files
- directory rename detection: tests for handling overwriting untracked files
- directory rename detection: miscellaneous testcases to complete coverage
- directory rename detection: testcases exploring possibly suboptimal merges
- directory rename detection: more involved edge/corner testcases
- directory rename detection: testcases checking which side did the rename
- directory rename detection: files/directories in the way of some renames
- directory rename detection: partially renamed directory testcase/discussion
- directory rename detection: testcases to avoid taking detection too far
- directory rename detection: directory splitting testcases
- directory rename detection: basic testcases
Reboot of an attempt to detect wholesale directory renames and use
it while merging.
Will merge to 'next'.
* nd/command-list (2018-04-30) 10 commits
- completion: let git provide the completable command list
- help: use command-list.txt for the source of guides
- help: add "-a --verbose" to list all commands with synopsis
- git: support --list-cmds=list-<category>
- completion: implement and use --list-cmds=main,others
- git.c: convert --list-*builtins to --list-cmds=*
- Remove common-cmds.h
- help: use command-list.h for common command list
- generate-cmds.sh: export all commands to command-list.h
- generate-cmds.sh: factor out synopsis extract code
The list of commands with their various attributes were spread
across a few places in the build procedure, but it now is getting a
bit more consolidated to allow more automation.
* sb/object-store-replace (2018-04-12) 15 commits
(merged to 'next' on 2018-04-25 at 9a213fb505)
+ replace-object: allow lookup_replace_object to handle arbitrary repositories
+ replace-object: allow do_lookup_replace_object to handle arbitrary repositories
+ replace-object: allow prepare_replace_object to handle arbitrary repositories
+ refs: allow for_each_replace_ref to handle arbitrary repositories
+ refs: store the main ref store inside the repository struct
+ replace-object: add repository argument to lookup_replace_object
+ replace-object: add repository argument to do_lookup_replace_object
+ replace-object: add repository argument to prepare_replace_object
+ refs: add repository argument to for_each_replace_ref
+ refs: add repository argument to get_main_ref_store
+ replace-object: check_replace_refs is safe in multi repo environment
+ replace-object: eliminate replace objects prepared flag
+ object-store: move lookup_replace_object to replace-object.h
+ replace-object: move replace_map to object store
+ replace_object: use oidmap
(this branch is used by sb/oid-object-info.)
The effort to pass the repository in-core structure throughout the
API continues. This round deals with the code that implements the
refs/replace/ mechanism.
Will merge to 'master'.
* hn/bisect-first-parent (2018-04-21) 1 commit
- bisect: create 'bisect_flags' parameter in find_bisection()
Preliminary code update to allow passing more flags down the
bisection codepath in the future.
We do not add random code that does not have real users to our
codebase, so let's have it wait until such a real code materializes
before too long.
* sg/complete-paths (2018-04-17) 11 commits
- completion: fill COMPREPLY directly when completing paths
- completion: improve handling quoted paths in 'git ls-files's output
- completion: remove repeated dirnames with 'awk' during path completion
- t9902-completion: ignore COMPREPLY element order in some tests
- completion: use 'awk' to strip trailing path components
- completion: let 'ls-files' and 'diff-index' filter matching paths
- completion: improve handling quoted paths on the command line
- completion: support completing non-ASCII pathnames
- completion: simplify prefix path component handling during path completion
- completion: move __git_complete_index_file() next to its helpers
- t9902-completion: add tests demonstrating issues with quoted pathnames
Command line completion (in contrib/) learned to complete pathnames
for various commands better.
Will merge to 'next'.
* tq/t1510 (2018-04-17) 1 commit
(merged to 'next' on 2018-04-25 at 5710c81979)
+ t1510-repo-setup.sh: remove useless mkdir
Test cleanup.
Will merge to 'master'.
* sb/blame-color (2018-04-24) 3 commits
- builtin/blame: add new coloring scheme config
- builtin/blame: highlight recently changed lines
- builtin/blame: dim uninteresting metadata lines
"git blame" learns to unhighlight uninteresting metadata from the
originating commit on lines that are the same as the previous one,
and also paint lines in different colors depending on the age of
the commit.
* ab/simplify-perl-makefile (2018-04-19) 2 commits
(merged to 'next' on 2018-04-25 at 906cf21682)
+ Makefile: mark perllibdir as a .PHONY target
(merged to 'next' on 2018-04-17 at 4448756934)
+ perl: fix installing modules from contrib
Recent simplification of build procedure forgot a bit of tweak to
the build procedure of contrib/mw-to-git/
Will merge to 'master'.
* ds/lazy-load-trees (2018-04-11) 5 commits
(merged to 'next' on 2018-04-25 at b90813f421)
+ commit-graph: lazy-load trees for commits
+ treewide: replace maybe_tree with accessor methods
+ commit: create get_commit_tree() method
+ treewide: rename tree to maybe_tree
+ Merge branch 'bw/c-plus-plus' into ds/lazy-load-trees
(this branch is used by ds/generation-numbers; uses ds/commit-graph.)
The code has been taught to use the duplicated information stored
in the commit-graph file to learn the tree object name for a commit
to avoid opening and parsing the commit object when it makes sense
to do so.
Will merge to 'master'.
* ab/git-svn-get-record-typofix (2018-04-09) 1 commit
(merged to 'next' on 2018-04-30 at 23f875f6b9)
+ git-svn: avoid warning on undef readline()
"git svn" had a minor thinko/typo which has been fixed.
Will merge to 'master'.
* hn/sort-ls-remote (2018-04-09) 1 commit
(merged to 'next' on 2018-04-30 at 244ca5d30a)
+ ls-remote: create '--sort' option
"git ls-remote" learned an option to allow sorting its output based
on the refnames being shown.
Will merge to 'master'.
* js/empty-config-section-fix (2018-04-09) 15 commits
(merged to 'next' on 2018-04-25 at 1690df3e5f)
+ git_config_set: reuse empty sections
+ git config --unset: remove empty sections (in the common case)
+ git_config_set: make use of the config parser's event stream
+ git_config_set: do not use a state machine
+ config_set_store: rename some fields for consistency
+ config: avoid using the global variable `store`
+ config: introduce an optional event stream while parsing
+ t1300: `--unset-all` can leave an empty section behind (bug)
+ t1300: add a few more hairy examples of sections becoming empty
+ t1300: remove unreasonable expectation from TODO
+ t1300: avoid relying on a bug
+ config --replace-all: avoid extra line breaks
+ t1300: demonstrate that --replace-all can "invent" newlines
+ t1300: rename it to reflect that `repo-config` was deprecated
+ git_config_set: fix off-by-two
"git config --unset a.b", when "a.b" is the last variable in an
otherwise empty section "a", left an empty section "a" behind, and
worse yet, a subsequent "git config a.c value" did not reuse that
empty shell and instead created a new one. These have been
(partially) corrected.
Will merge to 'master'.
* nd/warn-more-for-devs (2018-04-16) 4 commits
(merged to 'next' on 2018-04-25 at 2978e61414)
+ Makefile: add a DEVOPTS to get all of -Wextra
+ Makefile: add a DEVOPTS to suppress -Werror under DEVELOPER
+ Makefile: detect compiler and enable more warnings in DEVELOPER=1
+ connect.c: mark die_initial_contact() NORETURN
The build procedure "make DEVELOPER=YesPlease" learned to enable a
bit more warning options depending on the compiler used to help
developers more. There also is "make DEVOPTS=tokens" knob
available now, for those who want to help fixing warnings we
usually ignore, for example.
Will merge to 'master'.
* sb/submodule-move-nested (2018-03-29) 6 commits
(merged to 'next' on 2018-04-25 at 86b177433a)
+ submodule: fixup nested submodules after moving the submodule
+ submodule-config: remove submodule_from_cache
+ submodule-config: add repository argument to submodule_from_{name, path}
+ submodule-config: allow submodule_free to handle arbitrary repositories
+ grep: remove "repo" arg from non-supporting funcs
+ submodule.h: drop declaration of connect_work_tree_and_git_dir
Moving a submodule that itself has submodule in it with "git mv"
forgot to make necessary adjustment to the nested sub-submodules;
now the codepath learned to recurse into the submodules.
Will merge to 'master'.
* tb/config-type (2018-04-19) 2 commits
(merged to 'next' on 2018-04-25 at fe69e93c82)
+ builtin/config.c: support `--type=<type>` as preferred alias for `--<type>`
+ builtin/config.c: treat type specifiers singularly
(this branch is used by tb/config-default.)
The "git config" command uses separate options e.g. "--int",
"--bool", etc. to specify what type the caller wants the value to
be interpreted as. A new "--type=<typename>" option has been
introduced, which would make it cleaner to define new types.
Will merge to 'master'.
* tb/config-default (2018-04-23) 3 commits
(merged to 'next' on 2018-04-25 at 59bb6beb2a)
+ builtin/config: introduce `color` type specifier
+ config.c: introduce 'git_config_color' to parse ANSI colors
+ builtin/config: introduce `--default`
(this branch uses tb/config-type.)
"git config --get" learned the "--default" option, to help the
calling script. Building on top of the tb/config-type topic, the
"git config" learns "--type=color" type. Taken together, you can
do things like "git config --get foo.color --default blue" and get
the ANSI color sequence for the color given to foo.color variable,
or "blue" if the variable does not exist.
Will merge to 'master'.
* jh/json-writer (2018-03-28) 1 commit
- json_writer: new routines to create data in JSON format
Preparatory code to later add json output for unspecified telemetry
data.
We do not add random code that does not have real users to our
codebase, so let's have it wait until such a real code materializes
before too long.
* ot/libify-get-ref-atom-value (2018-03-29) 6 commits
(merged to 'next' on 2018-04-25 at 056bcaa69c)
+ ref-filter: libify get_ref_atom_value()
+ ref-filter: add return value to parsers
+ ref-filter: change parsing function error handling
+ ref-filter: add return value && strbuf to handlers
+ ref-filter: start adding strbufs with errors
+ ref-filter: add shortcut to work with strbufs
Code restructuring, in preparation for further work.
Will merge to 'master'.
* jk/branch-l-0-deprecation (2018-03-26) 3 commits
(merged to 'next' on 2018-04-11 at 9b2b0305dd)
+ branch: deprecate "-l" option
+ t: switch "branch -l" to "branch --create-reflog"
+ t3200: unset core.logallrefupdates when testing reflog creation
(this branch is used by jk/branch-l-1-removal and jk/branch-l-2-reincarnation.)
The "-l" option in "git branch -l" is an unfortunate short-hand for
"--create-reflog", but many users, both old and new, somehow expect
it to be something else, perhaps "--list". This step deprecates
the short-hand and warns about the future removal of the it when it
is used.
Will cook in 'next'.
* jk/branch-l-1-removal (2018-03-26) 1 commit
- branch: drop deprecated "-l" option
(this branch is used by jk/branch-l-2-reincarnation; uses jk/branch-l-0-deprecation.)
Following the "git branch -l" deprecation, the short-hand is removed.
Will keep in 'pu'.
* jk/branch-l-2-reincarnation (2018-03-26) 1 commit
- branch: make "-l" a synonym for "--list"
(this branch uses jk/branch-l-0-deprecation and jk/branch-l-1-removal.)
Following the "git branch -l" removal, "-l" is resurrected as a
short-hand for "--list".
Will keep in 'pu'.
* dj/runtime-prefix (2018-04-24) 7 commits
(merged to 'next' on 2018-04-25 at e7e635a70e)
+ Makefile: quote $INSTLIBDIR when passing it to sed
+ Makefile: remove unused @@PERLLIBDIR@@ substitution variable
(merged to 'next' on 2018-04-17 at a69aaa7a22)
+ mingw/msvc: use the new-style RUNTIME_PREFIX helper
+ exec_cmd: provide a new-style RUNTIME_PREFIX helper for Windows
+ exec_cmd: RUNTIME_PREFIX on some POSIX systems
+ Makefile: add Perl runtime prefix support
+ Makefile: generate Perl header from template file
(this branch is tangled with js/runtime-prefix.)
A build-time option has been added to allow Git to be told to refer
to its associated files relative to the main binary, in the same
way that has been possible on Windows for quite some time, for
Linux, BSDs and Darwin.
Will merge to 'master'.
* ab/nuke-emacs-contrib (2018-04-16) 1 commit
(merged to 'next' on 2018-04-25 at 9b133d8a65)
+ git{,-blame}.el: remove old bitrotting Emacs code
The scripts in contrib/emacs/ have outlived their usefulness and
have been replaced with a stub that errors out and tells the user
there are replacements.
Will merge to 'master'.
* nd/pack-objects-pack-struct (2018-04-16) 15 commits
- ci: exercise the whole test suite with uncommon code in pack-objects
- pack-objects: reorder members to shrink struct object_entry
- pack-objects: shrink delta_size field in struct object_entry
- pack-objects: shrink size field in struct object_entry
- pack-objects: clarify the use of object_entry::size
- pack-objects: don't check size when the object is bad
- pack-objects: shrink z_delta_size field in struct object_entry
- pack-objects: refer to delta objects by index instead of pointer
- pack-objects: move in_pack out of struct object_entry
- pack-objects: move in_pack_pos out of struct object_entry
- pack-objects: use bitfield for object_entry::depth
- pack-objects: use bitfield for object_entry::dfs_state
- pack-objects: turn type and in_pack_type to bitfields
- pack-objects: a bit of document about struct object_entry
- read-cache.c: make $GIT_TEST_SPLIT_INDEX boolean
"git pack-objects" needs to allocate tons of "struct object_entry"
while doing its work, and shrinking its size helps the performance
quite a bit.
What's the doneness of this thing? The interdiff since previous
rounds looked reasonable, but I didn't see this round otherwise
scrutinized by reviewers. The numbers given in the commit near the
tip do look impressive, though ;-)
* nd/repack-keep-pack (2018-04-16) 7 commits
- pack-objects: show some progress when counting kept objects
- gc --auto: exclude base pack if not enough mem to "repack -ad"
- gc: handle a corner case in gc.bigPackThreshold
- gc: add gc.bigPackThreshold config
- gc: add --keep-largest-pack option
- repack: add --keep-pack option
- t7700: have closing quote of a test at the beginning of line
"git gc" in a large repository takes a lot of time as it considers
to repack all objects into one pack by default. The command has
been taught to pretend as if the largest existing packfile is
marked with ".keep" so that it is left untouched while objects in
other packs and loose ones are repacked.
What's the doneness of this thing? The interdiff since the earlier
one looked reasonable, but I didn't see this round otherwise
scrutinized by reviewers.
* pw/add-p-select (2018-03-16) 3 commits
- add -p: optimize line selection for short hunks
- add -p: allow line selection to be inverted
- add -p: select individual hunk lines
"git add -p" interactive interface learned to let users choose
individual added/removed lines to be used in the operation, instead
of accepting or rejecting a whole hunk.
Expecting a reroll to reignite the discussion.
cf. <9895c7b7-eac4-28c1-90c6-443acd1131b7@talktalk.net>
* ds/commit-graph (2018-04-11) 16 commits
(merged to 'next' on 2018-04-25 at 18af3d28d9)
+ commit-graph: implement "--append" option
+ commit-graph: build graph from starting commits
+ commit-graph: read only from specific pack-indexes
+ commit: integrate commit graph with commit parsing
+ commit-graph: close under reachability
+ commit-graph: add core.commitGraph setting
+ commit-graph: implement git commit-graph read
+ commit-graph: implement git-commit-graph write
+ commit-graph: implement write_commit_graph()
+ commit-graph: create git-commit-graph builtin
+ graph: add commit graph design document
+ commit-graph: add format document
+ csum-file: refactor finalize_hashfile() method
+ csum-file: rename hashclose() to finalize_hashfile()
+ Merge branch 'jk/cached-commit-buffer' into HEAD
+ Merge branch 'jt/binsearch-with-fanout' into HEAD
(this branch is used by ds/generation-numbers and ds/lazy-load-trees.)
Precompute and store information necessary for ancestry traversal
in a separate file to optimize graph walking.
Will merge to 'master'.
* pc/submodule-helper-foreach (2018-02-02) 5 commits
- submodule: port submodule subcommand 'foreach' from shell to C
- submodule foreach: document variable '$displaypath'
- submodule foreach: clarify the '$toplevel' variable documentation
- submodule foreach: document '$sm_path' instead of '$path'
- submodule foreach: correct '$path' in nested submodules from a subdirectory
Expecting a response to review comments
e.g. cf. <20180206150044.1bffbb573c088d38c8e44bf5@google.com>
* tg/worktree-add-existing-branch (2018-04-30) 4 commits
- worktree: teach "add" to check out existing branches
- worktree: factor out dwim_branch function
- worktree: improve message when creating a new worktree
- worktree: remove extra members from struct add_opts
"git worktree add" learned to check out an existing branch.
Will merge to 'next'.
* js/rebase-recreate-merge (2018-04-26) 17 commits
- rebase -i --rebase-merges: add a section to the man page
- rebase -i: introduce --rebase-merges=[no-]rebase-cousins
- pull: accept --rebase=merges to recreate the branch topology
- rebase --rebase-merges: avoid "empty merges"
- sequencer: handle post-rewrite for merge commands
- sequencer: make refs generated by the `label` command worktree-local
- rebase --rebase-merges: add test for --keep-empty
- rebase: introduce the --rebase-merges option
- rebase-helper --make-script: introduce a flag to rebase merges
- sequencer: fast-forward `merge` commands, if possible
- sequencer: introduce the `merge` command
- sequencer: introduce new commands to reset the revision
- git-rebase--interactive: clarify arguments
- sequencer: offer helpful advice when a command was rescheduled
- sequencer: refactor how original todo list lines are accessed
- sequencer: make rearrange_squash() a bit more obvious
- sequencer: avoid using errno clobbered by rollback_lock_file()
"git rebase" learned "--rebase-merges" to transplant the whole
topology of commit graph elsewhere.
* bw/protocol-v2 (2018-03-15) 35 commits
(merged to 'next' on 2018-04-11 at 23ee234a2c)
+ remote-curl: don't request v2 when pushing
+ remote-curl: implement stateless-connect command
+ http: eliminate "# service" line when using protocol v2
+ http: don't always add Git-Protocol header
+ http: allow providing extra headers for http requests
+ remote-curl: store the protocol version the server responded with
+ remote-curl: create copy of the service name
+ pkt-line: add packet_buf_write_len function
+ transport-helper: introduce stateless-connect
+ transport-helper: refactor process_connect_service
+ transport-helper: remove name parameter
+ connect: don't request v2 when pushing
+ connect: refactor git_connect to only get the protocol version once
+ fetch-pack: support shallow requests
+ fetch-pack: perform a fetch using v2
+ upload-pack: introduce fetch server command
+ push: pass ref prefixes when pushing
+ fetch: pass ref prefixes when fetching
+ ls-remote: pass ref prefixes when requesting a remote's refs
+ transport: convert transport_get_remote_refs to take a list of ref prefixes
+ transport: convert get_refs_list to take a list of ref prefixes
+ connect: request remote refs using v2
+ ls-refs: introduce ls-refs server command
+ serve: introduce git-serve
+ test-pkt-line: introduce a packet-line test helper
+ protocol: introduce enum protocol_version value protocol_v2
+ transport: store protocol version
+ connect: discover protocol version outside of get_remote_heads
+ connect: convert get_remote_heads to use struct packet_reader
+ transport: use get_refs_via_connect to get refs
+ upload-pack: factor out processing lines
+ upload-pack: convert to a builtin
+ pkt-line: add delim packet support
+ pkt-line: allow peeking a packet line without consuming it
+ pkt-line: introduce packet_read_with_status
(this branch is used by bw/server-options.)
The beginning of the next-gen transfer protocol.
Will merge to 'master'.
* ls/checkout-encoding (2018-04-16) 10 commits
(merged to 'next' on 2018-04-25 at e0f8554b2a)
+ convert: add round trip check based on 'core.checkRoundtripEncoding'
+ convert: add tracing for 'working-tree-encoding' attribute
+ convert: check for detectable errors in UTF encodings
+ convert: add 'working-tree-encoding' attribute
+ utf8: add function to detect a missing UTF-16/32 BOM
+ utf8: add function to detect prohibited UTF-16/32 BOM
+ utf8: teach same_encoding() alternative UTF encoding names
+ strbuf: add a case insensitive starts_with()
+ strbuf: add xstrdup_toupper()
+ strbuf: remove unnecessary NUL assignment in xstrdup_tolower()
The new "checkout-encoding" attribute can ask Git to convert the
contents to the specified encoding when checking out to the working
tree (and the other way around when checking in).
Will merge to 'master'.
--------------------------------------------------
[Discarded]
* js/runtime-prefix-windows (2018-03-27) 5 commits
. mingw/msvc: use the new-style RUNTIME_PREFIX helper
. exec_cmd: provide a new-style RUNTIME_PREFIX helper for Windows
. exec_cmd: RUNTIME_PREFIX on some POSIX systems
. Makefile: add Perl runtime prefix support
. Makefile: generate Perl header from template file
The Windows port was the first that allowed Git to be installed
anywhere by having its components refer to each other with relative
pathnames. The recent dj/runtime-prefix topic extends the idea to
other platforms, and its approach has been adopted back in the
Windows port.
Ejected, as the parent topic dj/runtime-prefix covers Windows now.
* bp/fsexcludes (2018-04-16) 2 commits
. fsmonitor: switch to use new fsexcludes logic and remove unused untracked cache based logic
. fsexcludes: add a programmatic way to exclude files from git's working directory traversal logic
Can we have a few lines summary here, just like we have for other
topic ;-) I personally take the overlong title of these commits as
a sign that they can further be simplified and cleaned up by
splitting, focusing the scope, etc.
Retracted.
cf. <0de30972-b0a2-67e8-7cff-c19daf9ece8b@gmail.com>
^ permalink raw reply [relevance 3%]
* What's cooking in git.git (Apr 2018, #03; Wed, 25)
@ 2018-04-25 8:37 3% Junio C Hamano
0 siblings, 0 replies; 200+ results
From: Junio C Hamano @ 2018-04-25 8:37 UTC (permalink / raw)
To: git
Here are the topics that have been cooking. Commits prefixed with
'-' are only in 'pu' (proposed updates) while commits prefixed with
'+' are in 'next'. The ones marked with '.' do not appear in any of
the integration branches, but I am still holding onto them.
You can find the changes described here in the integration branches
of the repositories listed at
http://git-blame.blogspot.com/p/git-public-repositories.html
--------------------------------------------------
[Graduated to "master"]
* ak/bisect-doc-typofix (2018-04-07) 1 commit
(merged to 'next' on 2018-04-17 at eafdeb0248)
+ Documentation/git-bisect.txt: git bisect term → git bisect terms
Docfix.
* bb/git-gui-ssh-key-files (2018-03-02) 2 commits
(merged to 'next' on 2018-04-17 at e439f0398d)
+ Merge branch 'bb/ssh-key-files' of git-gui into bb/git-gui-ssh-key-files
+ git-gui: search for all current SSH key types
"git gui" learned that "~/.ssh/id_ecdsa.pub" and
"~/.ssh/id_ed25519.pub" are also possible SSH key files.
* bp/fsmonitor-bufsize-fix (2018-04-11) 1 commit
(merged to 'next' on 2018-04-17 at 70a7091e06)
+ fsmonitor: fix incorrect buffer size when printing version number
Fix an unexploitable (because the oversized contents are not under
attacker's control) buffer overflow.
* bp/fsmonitor-prime-index (2018-04-11) 1 commit
(merged to 'next' on 2018-04-17 at 765edccdf0)
+ fsmonitor: force index write after full scan
The index file is updated to record the fsmonitor section after a
full scan was made, to avoid wasting the effort that has already
spent.
* bp/git-gui-bind-kp-enter (2018-03-02) 2 commits
(merged to 'next' on 2018-04-17 at 35828e90e2)
+ Merge branch 'bp/bind-kp-enter' of git-gui into bp/git-gui-bind-kp-enter
+ git-gui: bind CTRL/CMD+numpad ENTER to do_commit
"git gui" performs commit upon CTRL/CMD+ENTER but the
CTRL/CMD+KP_ENTER (i.e. enter key on the numpad) did not have the
same key binding. It now does.
* br/mergetools-guiffy (2018-04-06) 1 commit
(merged to 'next' on 2018-04-17 at 8ec0697d5d)
+ mergetools: add support for guiffy
"git mergetools" learned talking to guiffy.
* bw/commit-partial-from-subdirectory-fix (2018-04-05) 1 commit
(merged to 'next' on 2018-04-17 at 1e56bbc14d)
+ commit: allow partial commits with relative paths
"cd sub/dir && git commit ../path" ought to record the changes to
the file "sub/path", but this regressed long time ago.
* cb/bash-completion-ls-files-processing (2018-04-10) 1 commit
(merged to 'next' on 2018-04-17 at 956b155366)
+ completion: improve ls-files filter performance
Shell completion (in contrib) that gives list of paths have been
optimized somewhat.
* cb/git-gui-ttk-style (2018-03-05) 2 commits
(merged to 'next' on 2018-04-17 at 1a4f677a0d)
+ Merge branch 'cb/ttk-style' of git-gui into cb/git-gui-ttk-style
+ git-gui: workaround ttk:style theme use
"git gui" has been taught to work with old versions of tk (like
8.5.7) that do not support "ttk::style theme use" as a way to query
the current theme.
* cc/perf-bisect (2018-04-11) 2 commits
(merged to 'next' on 2018-04-17 at 62a1498dd0)
+ t/perf: add scripts to bisect performance regressions
+ perf/run: add --subsection option
Performance measuring framework in t/perf learned to help bisecting
performance regressions.
* en/doc-typoes (2018-04-09) 2 commits
(merged to 'next' on 2018-04-17 at 81e5c8da18)
+ Documentation: normalize spelling of 'normalised'
+ Documentation: fix several one-character-off spelling errors
Docfix.
* es/fread-reads-dir-autoconf-fix (2018-04-09) 1 commit
(merged to 'next' on 2018-04-17 at 538601fef3)
+ configure.ac: fix botched FREAD_READS_DIRECTORIES check
Small fix to the autoconf build procedure.
* es/worktree-docs (2018-04-09) 2 commits
(merged to 'next' on 2018-04-17 at 15a098e9b1)
+ git-worktree.txt: unify command-line prompt in example blocks
+ git-worktree.txt: recommend 'git worktree remove' over manual deletion
(this branch uses nd/worktree-move.)
Doc updates.
* jk/flockfile-stdio (2018-03-30) 1 commit
(merged to 'next' on 2018-04-17 at e11bd565f4)
+ config: move flockfile() closer to unlocked functions
Code clean-up.
* jk/ref-array-push (2018-04-09) 3 commits
(merged to 'next' on 2018-04-17 at 61859b271b)
+ ref-filter: factor ref_array pushing into its own function
+ ref-filter: make ref_array_item allocation more consistent
+ ref-filter: use "struct object_id" consistently
(this branch is used by hn/sort-ls-remote.)
API clean-up aournd ref-filter code.
* jk/relative-directory-fix (2018-03-30) 5 commits
(merged to 'next' on 2018-04-17 at 1b8cc9dcb4)
+ refs: use chdir_notify to update cached relative paths
+ set_work_tree: use chdir_notify
+ add chdir-notify API
+ trace.c: export trace_setup_key
+ set_git_dir: die when setenv() fails
Some codepaths, including the refs API, get and keep relative
paths, that go out of sync when the process does chdir(2). The
chdir-notify API is introduced to let these codepaths adjust these
cached paths to the new current directory.
* jk/t5561-missing-curl (2018-04-05) 2 commits
(merged to 'next' on 2018-04-17 at d8592fa6c2)
+ t5561: skip tests if curl is not available
+ t5561: drop curl stderr redirects
Test fixes.
* jm/mem-pool (2018-04-12) 3 commits
(merged to 'next' on 2018-04-17 at 8a3641ab3a)
+ mem-pool: move reusable parts of memory pool into its own file
+ fast-import: introduce mem_pool type
+ fast-import: rename mem_pool type to mp_block
An reusable "memory pool" implementation has been extracted from
fast-import.c, which in turn has become the first user of the
mem-pool API.
* js/t5404-path-fix (2018-04-09) 1 commit
(merged to 'next' on 2018-04-17 at 94092f2896)
+ t5404: relax overzealous test
Test fix.
* ks/branch-list-detached-rebase-i (2018-04-05) 2 commits
(merged to 'next' on 2018-04-17 at 5c2842c3f9)
+ t3200: verify "branch --list" sanity when rebasing from detached HEAD
+ branch --list: print useful info whilst interactive rebasing a detached HEAD
"git branch --list" during an interrupted "rebase -i" now lets
users distinguish the case where a detached HEAD is being rebased
and a normal branch is being rebased.
* lw/daemon-log-destination (2018-04-09) 1 commit
(merged to 'next' on 2018-04-17 at b06cdcc45e)
+ daemon.c: fix condition for redirecting stderr
Recent introduction of "--log-destination" option to "git daemon"
did not work well when the daemon was run under "--inetd" mode.
* mn/send-email-credential-doc (2018-04-08) 1 commit
(merged to 'next' on 2018-04-17 at c4db21eb9b)
+ send-email: simplify Gmail example in the documentation
Doc update.
* nd/worktree-move (2018-04-05) 1 commit
(merged to 'next' on 2018-04-17 at 11ca393110)
+ t2028: tighten grep expression to make "move worktree" test more robust
(this branch is used by es/worktree-docs.)
Test update.
* ps/test-chmtime-get (2018-04-09) 1 commit
(merged to 'next' on 2018-04-17 at dcb138d8b1)
+ t/helper: 'test-chmtime (--get|-g)' to print only the mtime
Test cleanup.
* pw/rebase-keep-empty-fixes (2018-03-29) 3 commits
(merged to 'next' on 2018-04-17 at 10a4d92060)
+ rebase: respect --no-keep-empty
+ rebase -i --keep-empty: don't prune empty commits
+ rebase --root: stop assuming squash_onto is unset
(this branch is used by pw/rebase-signoff.)
"git rebase --keep-empty" still removed an empty commit if the
other side contained an empty commit (due to the "does an
equivalent patch exist already?" check), which has been corrected.
* pw/rebase-signoff (2018-03-29) 4 commits
(merged to 'next' on 2018-04-17 at fbdc16e20e)
+ rebase --keep-empty: always use interactive rebase
+ rebase -p: error out if --signoff is given
+ rebase: extend --signoff support
+ Merge branch 'pw/rebase-keep-empty-fixes' into pw/rebase-signoff
(this branch uses pw/rebase-keep-empty-fixes.)
"git rebase" has learned to honor "--signoff" option when using
backends other than "am" (but not "--preserve-merges").
* sb/filenames-with-dashes (2018-04-11) 6 commits
(merged to 'next' on 2018-04-17 at 45fdeb5cb1)
+ replace_object.c: rename to use dash in file name
+ sha1_file.c: rename to use dash in file name
+ sha1_name.c: rename to use dash in file name
+ exec_cmd: rename to use dash in file name
+ unicode_width.h: rename to use dash in file name
+ write_or_die.c: rename to use dashes in file name
Rename bunch of source files to more consistently use dashes
instead of underscores to connect words.
* tg/use-git-contacts (2018-04-12) 1 commit
(merged to 'next' on 2018-04-17 at 26cf8c1d8c)
+ SubmittingPatches: mention the git contacts command
Doc update.
--------------------------------------------------
[New Topics]
* ma/double-dashes-in-docs (2018-04-18) 4 commits
(merged to 'next' on 2018-04-25 at aaac2dc63c)
+ git-submodule.txt: quote usage in monospace, drop backslash
+ git-[short]log.txt: unify quoted standalone --
+ doc: convert [\--] to [--]
+ doc: convert \--option to --option
Doc formatting updates.
Will merge to 'master'.
* sb/worktree-remove-opt-force (2018-04-18) 1 commit
(merged to 'next' on 2018-04-25 at 0367d52a4b)
+ worktree: accept -f as short for --force for removal
"git worktree remove" learned that "-f" is a shorthand for
"--force" option, just like for "git worktree add".
Will merge to 'master'.
* sg/completion-clear-cached (2018-04-18) 1 commit
(merged to 'next' on 2018-04-25 at 9178da6c3d)
+ completion: reduce overhead of clearing cached --options
The completion script (in contrib/) learned to clear cached list of
command line options upon dot-sourcing it again in a more efficient
way.
Will merge to 'master'.
* sg/doc-gc-quote-mismatch-fix (2018-04-18) 1 commit
(merged to 'next' on 2018-04-25 at bc3d1abf45)
+ docs/git-gc: fix minor rendering issue
Doc formatting fix.
Will merge to 'master'.
* js/ident-date-fix (2018-04-19) 1 commit
- sequencer: reset the committer date before commits
During a "rebase -i" session, the code could give older timestamp
to commits created by later "pick" than an earlier "reword", which
has been corrected.
Will merge to 'next'.
* nd/submodule-status-fix (2018-04-19) 1 commit
- submodule--helper: don't print null in 'submodule status'
"git submodule status" did not check the symbolic revision name it
computed for the submodule HEAD is not the NULL, and threw it at
printf routines, which has been corrected.
Will merge to 'next'.
* sa/send-email-dedup-some-headers (2018-04-19) 1 commit
- send-email: avoid duplicate In-Reply-To/References
When fed input that already has In-Reply-To: and/or References:
headers and told to add the same information, "git send-email"
added these headers separately, instead of appending to an existing
one, which is a violation of the RFC. This has been corrected.
Will merge to 'next'.
* tg/demote-stash-save-in-completion (2018-04-20) 2 commits
- completion: make stash -p and alias for stash push -p
- completion: stop showing 'save' for stash by default
THe command line completion (in contrib/) has been taught that "git
stash save" has been deprecated ("git stash push" is the preferred
spellingin the new world) and does not offer it as a possible
completion candidate when "git stash push" can be.
Will merge to 'next'.
* tz/doc-git-urls-reference (2018-04-20) 1 commit
- doc/clone: update caption for GIT URLS cross-reference
Doc fix.
Will merge to 'next'.
* js/deprecate-grafts (2018-04-24) 11 commits
- Remove obsolete script to convert grafts to replace refs
- technical/shallow: describe why shallow cannot use replace refs
- technical/shallow: describe the relationship with replace refs
- filter-branch: stop suggesting to use grafts
- Deprecate support for .git/info/grafts
- Add a test for `git replace --convert-graft-file`
- replace: introduce --convert-graft-file
- replace: "libify" create_graft() and callees
- replace: avoid using die() to indicate a bug
- commit: Let the callback of for_each_mergetag return on error
- argv_array: offer to split a string by whitespace
The functionality of "$GIT_DIR/info/grafts" has been superseded by
the "refs/replace/" mechanism for some time now, but the internal
code had support for it in many places, which has been cleaned up
in order to drop support of the "grafts" mechanism.
* js/rebase-i-clean-msg-after-fixup-continue (2018-04-24) 4 commits
- rebase --skip: clean up commit message after a failed fixup/squash
- sequencer: leave a tell-tale when a fixup/squash failed
- rebase -i: Handle "combination of <n> commits" with GETTEXT_POISON
- rebase -i: demonstrate bugs with fixup!/squash! commit messages
"git rebase -i" sometimes left intermediate "# This is a
combination of N commits" message meant for the human consumption
inside an editor in the final result in certain corner cases, which
has been fixed.
Will merge to 'next'.
* ma/fast-export-skip-merge-fix (2018-04-21) 1 commit
- fast-export: fix regression skipping some merge-commits
"git fast-export" had a regression in v2.15.0 era where it skipped
some merge commits in certain cases, which has been corrected.
Will merge to 'next'.
* bw/server-options (2018-04-24) 4 commits
- fetch: send server options when using protocol v2
- ls-remote: send server options when using protocol v2
- serve: introduce the server-option capability
- Merge branch 'bw/protocol-v2' into HEAD
(this branch uses bw/protocol-v2.)
The transport protocol v2 is getting updated further.
* jc/parseopt-expiry-errors (2018-04-23) 2 commits
- parseopt: handle malformed --expire arguments more nicely
- gc: do not upcase error message shown with die()
"git gc --prune=nonsense" spent long time repacking and then
silently failed when underlying "git prune --expire=nonsense"
failed to parse its command line. This has been corrected.
Will merge to 'next'.
* js/colored-push-errors (2018-04-24) 4 commits
- config: document the settings to colorize push errors/hints
- push: test to verify that push errors are colored
- push: colorize errors
- color: introduce support for colorizing stderr
Error messages from "git push" can be painted for more visibility.
Will merge to 'next'.
* js/runtime-prefix (2018-04-24) 8 commits
- Avoid multiple PREFIX definitions
- git_setup_gettext: plug memory leak
- gettext: avoid initialization if the locale dir is not present
(merged to 'next' on 2018-04-17 at a69aaa7a22)
+ mingw/msvc: use the new-style RUNTIME_PREFIX helper
+ exec_cmd: provide a new-style RUNTIME_PREFIX helper for Windows
+ exec_cmd: RUNTIME_PREFIX on some POSIX systems
+ Makefile: add Perl runtime prefix support
+ Makefile: generate Perl header from template file
(this branch is tangled with dj/runtime-prefix.)
Will merge to 'next'.
* ma/http-walker-no-partial (2018-04-24) 2 commits
- walker: drop fields of `struct walker` which are always 1
- http-fetch: make `-a` standard behaviour
"git http-fetch" (deprecated) had an optional and experimental
"feature" to fetch only commits and/or trees, which nobody used.
This has been removed.
Will merge to 'next'.
* bc/object-id (2018-04-24) 41 commits
- merge-one-file: compute empty blob object ID
- add--interactive: compute the empty tree value
- Update shell scripts to compute empty tree object ID
- sha1_file: only expose empty object constants through git_hash_algo
- dir: use the_hash_algo for empty blob object ID
- sequencer: use the_hash_algo for empty tree object ID
- cache-tree: use is_empty_tree_oid
- sha1_file: convert cached object code to struct object_id
- builtin/reset: convert use of EMPTY_TREE_SHA1_BIN
- builtin/receive-pack: convert one use of EMPTY_TREE_SHA1_HEX
- wt-status: convert two uses of EMPTY_TREE_SHA1_HEX
- submodule: convert several uses of EMPTY_TREE_SHA1_HEX
- sequencer: convert one use of EMPTY_TREE_SHA1_HEX
- merge: convert empty tree constant to the_hash_algo
- builtin/merge: switch tree functions to use object_id
- builtin/am: convert uses of EMPTY_TREE_SHA1_BIN to the_hash_algo
- builtin/receive-pack: avoid hard-coded constants for push certs
- diff: specify abbreviation size in terms of the_hash_algo
- upload-pack: replace use of several hard-coded constants
- revision: replace use of hard-coded constants
- http: eliminate hard-coded constants
- dir: convert struct untracked_cache_dir to object_id
- commit: convert uses of get_sha1_hex to get_oid_hex
- index-pack: abstract away hash function constant
- pack-redundant: convert linked lists to use struct object_id
- Update struct index_state to use struct object_id
- split-index: convert struct split_index to object_id
- submodule-config: convert structures to object_id
- fsck: convert static functions to struct object_id
- tree-walk: convert get_tree_entry_follow_symlinks to object_id
- tree-walk: avoid hard-coded 20 constant
- pack-redundant: abstract away hash algorithm
- pack-objects: abstract away hash algorithm
- packfile: abstract away hash constant values
- packfile: convert find_pack_entry to object_id
- sha1_file: convert freshen functions to object_id
- packfile: convert has_sha1_pack to object_id
- packfile: remove unused member from struct pack_entry
- Remove unused member in struct object_context
- server-info: remove unused members from struct pack_info
- cache: add a function to read an object ID from a buffer
Conversion from uchar[20] to struct object_id continues.
* sb/oid-object-info (2018-04-25) 9 commits
- cache.h: allow oid_object_info to handle arbitrary repositories
- packfile: add repository argument to cache_or_unpack_entry
- packfile: add repository argument to unpack_entry
- packfile: add repository argument to read_object
- packfile: add repository argument to packed_object_info
- packfile: add repository argument to packed_to_object_type
- packfile: add repository argument to retry_bad_packed_offset
- cache.h: add repository argument to oid_object_info
- cache.h: add repository argument to oid_object_info_extended
(this branch uses sb/object-store-replace.)
The codepath around object-info API has been taught to take the
repository object (which in turn tells the API which object store
the objects are to be located).
* en/unpack-trees-split-index-fix (2018-04-24) 1 commit
- unpack_trees: fix breakage when o->src_index != o->dst_index
The split-index feature had a long-standing and dormant bug in
certain use of the in-core merge machinery, which has been fixed.
Will merge to 'next'.
* bp/merge-rename-config (2018-04-25) 2 commits
- merge: add merge.aggressive config setting
- merge: add merge.renames config setting
* en/git-debugger (2018-04-25) 1 commit
- Make running git under other debugger-like programs easy
* js/no-pager-shorthand (2018-04-25) 1 commit
- git: add -N as a short option for --no-pager
"git --no-pager cmd" did not have short-and-sweet single letter
option.
* sb/diff-color-move-more (2018-04-25) 7 commits
- diff.c: add --color-moved-ignore-space-delta option
- diff.c: decouple white space treatment from move detection algorithm
- diff.c: add a blocks mode for moved code detection
- diff.c: adjust hash function signature to match hashmap expectation
- diff.c: do not pass diff options as keydata to hashmap
- xdiff/xdiffi.c: remove unneeded function declarations
- xdiff/xdiff.h: remove unused flags
"git diff --color-moved" feature has further been tweaked.
--------------------------------------------------
[Stalled]
* fg/completion-external (2018-04-11) 1 commit
- completion: load completion file for external subcommand
The command line completion mechanism (in contrib/) learned to load
custom completion file for "git $command" where $command is a
custom "git-$command" that the end user has on the $PATH when using
newer version of bash.
Hold.
cf. <CAM0VKj=pDVxfJtUZx7c6uCmPxwQFPBOQYdd7NH=YnVG86iK0Pw@mail.gmail.com>
* ld/p4-unshelve (2018-02-22) 1 commit
- git-p4: add unshelve command
"git p4" learned to "unshelve" shelved commit from P4.
Will hold, perhaps drop and use format-change that uses a proper "diff".
cf. <CAE5ih7_ooDMqVtTMoQ70s5XCkncr04HY0JkqSp1UmKQeG81oaA@mail.gmail.com>
* av/fsmonitor-updates (2018-01-04) 6 commits
- fsmonitor: use fsmonitor data in `git diff`
- fsmonitor: remove debugging lines from t/t7519-status-fsmonitor.sh
- fsmonitor: make output of test-dump-fsmonitor more concise
- fsmonitor: update helper tool, now that flags are filled later
- fsmonitor: stop inline'ing mark_fsmonitor_valid / _invalid
- dir.c: update comments to match argument name
Code clean-up on fsmonitor integration, plus optional utilization
of the fsmonitor data in diff-files.
Waiting for an update.
cf. <alpine.DEB.2.21.1.1801042335130.32@MININT-6BKU6QN.europe.corp.microsoft.com>
* pb/bisect-helper-2 (2017-10-28) 8 commits
- t6030: make various test to pass GETTEXT_POISON tests
- bisect--helper: `bisect_start` shell function partially in C
- bisect--helper: `get_terms` & `bisect_terms` shell function in C
- bisect--helper: `bisect_next_check` shell function in C
- bisect--helper: `check_and_set_terms` shell function in C
- wrapper: move is_empty_file() and rename it as is_empty_or_missing_file()
- bisect--helper: `bisect_write` shell function in C
- bisect--helper: `bisect_reset` shell function in C
Expecting a reroll.
cf. <0102015f5e5ee171-f30f4868-886f-47a1-a4e4-b4936afc545d-000000@eu-west-1.amazonses.com>
* mk/http-backend-content-length (2017-11-27) 4 commits
- SQUASH???
- t5560-http-backend-noserver.sh: add CONTENT_LENGTH cases
- SQUASH???
- http-backend: respect CONTENT_LENGTH as specified by rfc3875
The http-backend (used for smart-http transport) used to slurp the
whole input until EOF, without paying attention to CONTENT_LENGTH
that is supplied in the environment and instead expecting the Web
server to close the input stream. This has been fixed.
Expecting a reroll.
Suggested fixes to be used when rerolling is queued, but I'd
prefer _not_ squashing them myself.
Also, it may be too complex solution for the problem.
cf. <20171204171308.GA13332@sigill.intra.peff.net>
* jk/drop-ancient-curl (2017-08-09) 5 commits
- http: #error on too-old curl
- curl: remove ifdef'd code never used with curl >=7.19.4
- http: drop support for curl < 7.19.4
- http: drop support for curl < 7.16.0
- http: drop support for curl < 7.11.1
Some code in http.c that has bitrot is being removed.
Expecting a reroll.
* mk/use-size-t-in-zlib (2017-08-10) 1 commit
. zlib.c: use size_t for size
The wrapper to call into zlib followed our long tradition to use
"unsigned long" for sizes of regions in memory, which have been
updated to use "size_t".
Needs resurrecting by making sure the fix is good and still applies
(or adjusted to today's codebase).
--------------------------------------------------
[Cooking]
* so/glossary-ancestor (2018-04-17) 1 commit
(merged to 'next' on 2018-04-25 at 0a849fee00)
+ glossary: substitute "ancestor" for "direct ancestor" in 'push' description.
Docfix.
Will merge to 'master'.
* bt/gpg-interface (2018-04-16) 7 commits
- gpg-interface: find the last gpg signature line
- gpg-interface: extract gpg line matching helper
- gpg-interface: fix const-correctness of "eol" pointer
- gpg-interface: use size_t for signature buffer size
- gpg-interface: modernize function declarations
- gpg-interface: handle bool user.signingkey
- t7004: fix mistaken tag name
What is queued here is only the obviously correct and
uncontroversial code clean-up part, which is an earlier 7 patches,
of a larger series.
The remainder that is not queued introuces a few configuration
variables to deal with e-signature backends with different
signature format.
Will merge to 'next'.
* ds/generation-numbers (2018-04-11) 10 commits
- commit: add short-circuit to paint_down_to_common()
- commit: use generation numbers for in_merge_bases()
- ref-filter: use generation number for --contains
- commit-graph.txt: update future work
- commit.c: use generation to halt paint walk
- commit: use generations in paint_down_to_common()
- commit-graph: compute generation numbers
- commit: add generation number to struct commmit
- merge: check config before loading commits
- object.c: parse commit in graph first
(this branch uses ds/commit-graph; is tangled with ds/lazy-load-trees.)
A recently added "commit-graph" datafile has learned to store
pre-computed generation numbers to speed up the decisions to stop
history traversal.
Expecting a reroll.
cf. <cc58d8c1-f8de-4841-934f-56e4ad7729aa@gmail.com>
* en/rename-directory-detection-reboot (2018-04-25) 36 commits
- merge-recursive: fix check for skipability of working tree updates
- merge-recursive: make "Auto-merging" comment show for other merges
- merge-recursive: fix remainder of was_dirty() to use original index
- merge-recursive: fix was_tracked() to quit lying with some renamed paths
- t6046: testcases checking whether updates can be skipped in a merge
- merge-recursive: avoid triggering add_cacheinfo error with dirty mod
- merge-recursive: move more is_dirty handling to merge_content
- merge-recursive: improve add_cacheinfo error handling
- merge-recursive: avoid spurious rename/rename conflict from dir renames
- directory rename detection: new testcases showcasing a pair of bugs
- merge-recursive: fix remaining directory rename + dirty overwrite cases
- merge-recursive: fix overwriting dirty files involved in renames
- merge-recursive: avoid clobbering untracked files with directory renames
- merge-recursive: apply necessary modifications for directory renames
- merge-recursive: when comparing files, don't include trees
- merge-recursive: check for file level conflicts then get new name
- merge-recursive: add computation of collisions due to dir rename & merging
- merge-recursive: check for directory level conflicts
- merge-recursive: add get_directory_renames()
- merge-recursive: make a helper function for cleanup for handle_renames
- merge-recursive: split out code for determining diff_filepairs
- merge-recursive: make !o->detect_rename codepath more obvious
- merge-recursive: fix leaks of allocated renames and diff_filepairs
- merge-recursive: introduce new functions to handle rename logic
- merge-recursive: move the get_renames() function
- directory rename detection: tests for handling overwriting dirty files
- directory rename detection: tests for handling overwriting untracked files
- directory rename detection: miscellaneous testcases to complete coverage
- directory rename detection: testcases exploring possibly suboptimal merges
- directory rename detection: more involved edge/corner testcases
- directory rename detection: testcases checking which side did the rename
- directory rename detection: files/directories in the way of some renames
- directory rename detection: partially renamed directory testcase/discussion
- directory rename detection: testcases to avoid taking detection too far
- directory rename detection: directory splitting testcases
- directory rename detection: basic testcases
Reboot of an attempt to detect wholesale directory renames and use
it while merging.
Expecting a reroll.
cf. <CABPp-BHZ-agTY77iqe9BxLC2ijrcKO+UPk83Bn+0cckA3fJFYg@mail.gmail.com>
* nd/command-list (2018-04-24) 6 commits
- help: use command-list.txt for the source of guides
- help: add "-a --verbose" to list all commands with synopsis
- git.c: implement --list-cmds=porcelain
- generate-cmdlist.sh: keep all information in common-cmds.h
- git.c: implement --list-cmds=all and use it in git-completion.bash
- git.c: convert --list-*builtins to --list-cmds=*
The list of commands with their various attributes were spread
across a few places in the build procedure, but it now is getting a
bit more consolidated to allow more automation.
Expecting a reroll.
Bash-isms and other things need to be fixed.
* sb/object-store-replace (2018-04-12) 15 commits
(merged to 'next' on 2018-04-25 at 9a213fb505)
+ replace-object: allow lookup_replace_object to handle arbitrary repositories
+ replace-object: allow do_lookup_replace_object to handle arbitrary repositories
+ replace-object: allow prepare_replace_object to handle arbitrary repositories
+ refs: allow for_each_replace_ref to handle arbitrary repositories
+ refs: store the main ref store inside the repository struct
+ replace-object: add repository argument to lookup_replace_object
+ replace-object: add repository argument to do_lookup_replace_object
+ replace-object: add repository argument to prepare_replace_object
+ refs: add repository argument to for_each_replace_ref
+ refs: add repository argument to get_main_ref_store
+ replace-object: check_replace_refs is safe in multi repo environment
+ replace-object: eliminate replace objects prepared flag
+ object-store: move lookup_replace_object to replace-object.h
+ replace-object: move replace_map to object store
+ replace_object: use oidmap
(this branch is used by sb/oid-object-info.)
The effort to pass the repository in-core structure throughout the
API continues. This round deals with the code that implements the
refs/replace/ mechanism.
Will merge to 'master'.
* hn/bisect-first-parent (2018-04-21) 1 commit
- bisect: create 'bisect_flags' parameter in find_bisection()
Preliminary code update to allow passing more flags down the
bisection codepath in the future.
We do not add random code that does not have real users to our
codebase, so let's have it wait until such a real code materializes
before too long.
* sg/complete-paths (2018-04-17) 11 commits
- completion: fill COMPREPLY directly when completing paths
- completion: improve handling quoted paths in 'git ls-files's output
- completion: remove repeated dirnames with 'awk' during path completion
- t9902-completion: ignore COMPREPLY element order in some tests
- completion: use 'awk' to strip trailing path components
- completion: let 'ls-files' and 'diff-index' filter matching paths
- completion: improve handling quoted paths on the command line
- completion: support completing non-ASCII pathnames
- completion: simplify prefix path component handling during path completion
- completion: move __git_complete_index_file() next to its helpers
- t9902-completion: add tests demonstrating issues with quoted pathnames
Command line completion (in contrib/) learned to complete pathnames
for various commands better.
Will merge to 'next'.
* tq/t1510 (2018-04-17) 1 commit
(merged to 'next' on 2018-04-25 at 5710c81979)
+ t1510-repo-setup.sh: remove useless mkdir
Test cleanup.
Will merge to 'master'.
* sb/blame-color (2018-04-24) 3 commits
- builtin/blame: add new coloring scheme config
- builtin/blame: highlight recently changed lines
- builtin/blame: dim uninteresting metadata lines
"git blame" learns to unhighlight uninteresting metadata from the
originating commit on lines that are the same as the previous one,
and also paint lines in different colors depending on the age of
the commit.
* ab/simplify-perl-makefile (2018-04-19) 2 commits
(merged to 'next' on 2018-04-25 at 906cf21682)
+ Makefile: mark perllibdir as a .PHONY target
(merged to 'next' on 2018-04-17 at 4448756934)
+ perl: fix installing modules from contrib
Recent simplification of build procedure forgot a bit of tweak to
the build procedure of contrib/mw-to-git/
Will merge to 'master'.
* ds/lazy-load-trees (2018-04-11) 5 commits
(merged to 'next' on 2018-04-25 at b90813f421)
+ commit-graph: lazy-load trees for commits
+ treewide: replace maybe_tree with accessor methods
+ commit: create get_commit_tree() method
+ treewide: rename tree to maybe_tree
+ Merge branch 'bw/c-plus-plus' into ds/lazy-load-trees
(this branch uses ds/commit-graph; is tangled with ds/generation-numbers.)
The code has been taught to use the duplicated information stored
in the commit-graph file to learn the tree object name for a commit
to avoid opening and parsing the commit object when it makes sense
to do so.
Will merge to 'master'.
* ab/git-svn-get-record-typofix (2018-04-09) 1 commit
- git-svn: avoid warning on undef readline()
"git svn" had a minor thinko/typo which has been fixed.
Will merge to 'next'.
* hn/sort-ls-remote (2018-04-09) 1 commit
- ls-remote: create '--sort' option
"git ls-remote" learned an option to allow sorting its output based
on the refnames being shown.
Will merge to 'next'.
* js/empty-config-section-fix (2018-04-09) 15 commits
(merged to 'next' on 2018-04-25 at 1690df3e5f)
+ git_config_set: reuse empty sections
+ git config --unset: remove empty sections (in the common case)
+ git_config_set: make use of the config parser's event stream
+ git_config_set: do not use a state machine
+ config_set_store: rename some fields for consistency
+ config: avoid using the global variable `store`
+ config: introduce an optional event stream while parsing
+ t1300: `--unset-all` can leave an empty section behind (bug)
+ t1300: add a few more hairy examples of sections becoming empty
+ t1300: remove unreasonable expectation from TODO
+ t1300: avoid relying on a bug
+ config --replace-all: avoid extra line breaks
+ t1300: demonstrate that --replace-all can "invent" newlines
+ t1300: rename it to reflect that `repo-config` was deprecated
+ git_config_set: fix off-by-two
"git config --unset a.b", when "a.b" is the last variable in an
otherwise empty section "a", left an empty section "a" behind, and
worse yet, a subsequent "git config a.c value" did not reuse that
empty shell and instead created a new one. These have been
(partially) corrected.
Will merge to 'master'.
* nd/warn-more-for-devs (2018-04-16) 4 commits
(merged to 'next' on 2018-04-25 at 2978e61414)
+ Makefile: add a DEVOPTS to get all of -Wextra
+ Makefile: add a DEVOPTS to suppress -Werror under DEVELOPER
+ Makefile: detect compiler and enable more warnings in DEVELOPER=1
+ connect.c: mark die_initial_contact() NORETURN
The build procedure "make DEVELOPER=YesPlease" learned to enable a
bit more warning options depending on the compiler used to help
developers more. There also is "make DEVOPTS=tokens" knob
available now, for those who want to help fixing warnings we
usually ignore, for example.
Will merge to 'master'.
* sb/submodule-move-nested (2018-03-29) 6 commits
(merged to 'next' on 2018-04-25 at 86b177433a)
+ submodule: fixup nested submodules after moving the submodule
+ submodule-config: remove submodule_from_cache
+ submodule-config: add repository argument to submodule_from_{name, path}
+ submodule-config: allow submodule_free to handle arbitrary repositories
+ grep: remove "repo" arg from non-supporting funcs
+ submodule.h: drop declaration of connect_work_tree_and_git_dir
Moving a submodule that itself has submodule in it with "git mv"
forgot to make necessary adjustment to the nested sub-submodules;
now the codepath learned to recurse into the submodules.
Will merge to 'master'.
* tb/config-type (2018-04-19) 2 commits
(merged to 'next' on 2018-04-25 at fe69e93c82)
+ builtin/config.c: support `--type=<type>` as preferred alias for `--<type>`
+ builtin/config.c: treat type specifiers singularly
(this branch is used by tb/config-default.)
The "git config" command uses separate options e.g. "--int",
"--bool", etc. to specify what type the caller wants the value to
be interpreted as. A new "--type=<typename>" option has been
introduced, which would make it cleaner to define new types.
Expecting a final reroll.
cf. <20180411034941.GA63158@syl.local>
This looked more or less ready, IIRC
* tb/config-default (2018-04-23) 3 commits
(merged to 'next' on 2018-04-25 at 59bb6beb2a)
+ builtin/config: introduce `color` type specifier
+ config.c: introduce 'git_config_color' to parse ANSI colors
+ builtin/config: introduce `--default`
(this branch uses tb/config-type.)
"git config --get" learned the "--default" option, to help the
calling script. Building on top of the tb/config-type topic, the
"git config" learns "--type=color" type. Taken together, you can
do things like "git config --get foo.color --default blue" and get
the ANSI color sequence for the color given to foo.color variable,
or "blue" if the variable does not exist.
Will wait on the tb/config-type topic.
* jh/json-writer (2018-03-28) 1 commit
- json_writer: new routines to create data in JSON format
Preparatory code to later add json output for unspecified telemetry
data.
We do not add random code that does not have real users to our
codebase, so let's have it wait until such a real code materializes
before too long.
* ot/libify-get-ref-atom-value (2018-03-29) 6 commits
(merged to 'next' on 2018-04-25 at 056bcaa69c)
+ ref-filter: libify get_ref_atom_value()
+ ref-filter: add return value to parsers
+ ref-filter: change parsing function error handling
+ ref-filter: add return value && strbuf to handlers
+ ref-filter: start adding strbufs with errors
+ ref-filter: add shortcut to work with strbufs
Code restructuring, in preparation for further work.
Will merge to 'master'.
* jk/branch-l-0-deprecation (2018-03-26) 3 commits
(merged to 'next' on 2018-04-11 at 9b2b0305dd)
+ branch: deprecate "-l" option
+ t: switch "branch -l" to "branch --create-reflog"
+ t3200: unset core.logallrefupdates when testing reflog creation
(this branch is used by jk/branch-l-1-removal and jk/branch-l-2-reincarnation.)
The "-l" option in "git branch -l" is an unfortunate short-hand for
"--create-reflog", but many users, both old and new, somehow expect
it to be something else, perhaps "--list". This step deprecates
the short-hand and warns about the future removal of the it when it
is used.
Will cook in 'next'.
* jk/branch-l-1-removal (2018-03-26) 1 commit
- branch: drop deprecated "-l" option
(this branch is used by jk/branch-l-2-reincarnation; uses jk/branch-l-0-deprecation.)
Following the "git branch -l" deprecation, the short-hand is removed.
Will keep in 'pu'.
* jk/branch-l-2-reincarnation (2018-03-26) 1 commit
- branch: make "-l" a synonym for "--list"
(this branch uses jk/branch-l-0-deprecation and jk/branch-l-1-removal.)
Following the "git branch -l" removal, "-l" is resurrected as a
short-hand for "--list".
Will keep in 'pu'.
* dj/runtime-prefix (2018-04-24) 7 commits
(merged to 'next' on 2018-04-25 at e7e635a70e)
+ Makefile: quote $INSTLIBDIR when passing it to sed
+ Makefile: remove unused @@PERLLIBDIR@@ substitution variable
(merged to 'next' on 2018-04-17 at a69aaa7a22)
+ mingw/msvc: use the new-style RUNTIME_PREFIX helper
+ exec_cmd: provide a new-style RUNTIME_PREFIX helper for Windows
+ exec_cmd: RUNTIME_PREFIX on some POSIX systems
+ Makefile: add Perl runtime prefix support
+ Makefile: generate Perl header from template file
(this branch is tangled with js/runtime-prefix.)
A build-time option has been added to allow Git to be told to refer
to its associated files relative to the main binary, in the same
way that has been possible on Windows for quite some time, for
Linux, BSDs and Darwin.
Will merge to 'master'.
* ab/nuke-emacs-contrib (2018-04-16) 1 commit
(merged to 'next' on 2018-04-25 at 9b133d8a65)
+ git{,-blame}.el: remove old bitrotting Emacs code
The scripts in contrib/emacs/ have outlived their usefulness and
have been replaced with a stub that errors out and tells the user
there are replacements.
Will merge to 'master'.
* nd/pack-objects-pack-struct (2018-04-16) 15 commits
- ci: exercise the whole test suite with uncommon code in pack-objects
- pack-objects: reorder members to shrink struct object_entry
- pack-objects: shrink delta_size field in struct object_entry
- pack-objects: shrink size field in struct object_entry
- pack-objects: clarify the use of object_entry::size
- pack-objects: don't check size when the object is bad
- pack-objects: shrink z_delta_size field in struct object_entry
- pack-objects: refer to delta objects by index instead of pointer
- pack-objects: move in_pack out of struct object_entry
- pack-objects: move in_pack_pos out of struct object_entry
- pack-objects: use bitfield for object_entry::depth
- pack-objects: use bitfield for object_entry::dfs_state
- pack-objects: turn type and in_pack_type to bitfields
- pack-objects: a bit of document about struct object_entry
- read-cache.c: make $GIT_TEST_SPLIT_INDEX boolean
"git pack-objects" needs to allocate tons of "struct object_entry"
while doing its work, and shrinking its size helps the performance
quite a bit.
What's the doneness of this thing? The interdiff since previous
rounds looked reasonable, but I didn't see this round otherwise
scrutinized by reviewers. The numbers given in the commit near the
tip do look impressive, though ;-)
* nd/repack-keep-pack (2018-04-16) 7 commits
- pack-objects: show some progress when counting kept objects
- gc --auto: exclude base pack if not enough mem to "repack -ad"
- gc: handle a corner case in gc.bigPackThreshold
- gc: add gc.bigPackThreshold config
- gc: add --keep-largest-pack option
- repack: add --keep-pack option
- t7700: have closing quote of a test at the beginning of line
"git gc" in a large repository takes a lot of time as it considers
to repack all objects into one pack by default. The command has
been taught to pretend as if the largest existing packfile is
marked with ".keep" so that it is left untouched while objects in
other packs and loose ones are repacked.
What's the doneness of this thing? The interdiff since the earlier
one looked reasonable, but I didn't see this round otherwise
scrutinized by reviewers.
* pw/add-p-select (2018-03-16) 3 commits
- add -p: optimize line selection for short hunks
- add -p: allow line selection to be inverted
- add -p: select individual hunk lines
"git add -p" interactive interface learned to let users choose
individual added/removed lines to be used in the operation, instead
of accepting or rejecting a whole hunk.
Expecting a reroll to reignite the discussion.
cf. <9895c7b7-eac4-28c1-90c6-443acd1131b7@talktalk.net>
* ds/commit-graph (2018-04-11) 16 commits
(merged to 'next' on 2018-04-25 at 18af3d28d9)
+ commit-graph: implement "--append" option
+ commit-graph: build graph from starting commits
+ commit-graph: read only from specific pack-indexes
+ commit: integrate commit graph with commit parsing
+ commit-graph: close under reachability
+ commit-graph: add core.commitGraph setting
+ commit-graph: implement git commit-graph read
+ commit-graph: implement git-commit-graph write
+ commit-graph: implement write_commit_graph()
+ commit-graph: create git-commit-graph builtin
+ graph: add commit graph design document
+ commit-graph: add format document
+ csum-file: refactor finalize_hashfile() method
+ csum-file: rename hashclose() to finalize_hashfile()
+ Merge branch 'jk/cached-commit-buffer' into HEAD
+ Merge branch 'jt/binsearch-with-fanout' into HEAD
(this branch is used by ds/generation-numbers and ds/lazy-load-trees.)
Precompute and store information necessary for ancestry traversal
in a separate file to optimize graph walking.
Will merge to 'master'.
* pc/submodule-helper-foreach (2018-02-02) 5 commits
- submodule: port submodule subcommand 'foreach' from shell to C
- submodule foreach: document variable '$displaypath'
- submodule foreach: clarify the '$toplevel' variable documentation
- submodule foreach: document '$sm_path' instead of '$path'
- submodule foreach: correct '$path' in nested submodules from a subdirectory
Expecting a response to review comments
e.g. cf. <20180206150044.1bffbb573c088d38c8e44bf5@google.com>
* tg/worktree-add-existing-branch (2018-04-25) 4 commits
- worktree: teach "add" to check out existing branches
- worktree: factor out dwim_branch function
- worktree: improve message when creating a new worktree
- worktree: remove extra members from struct add_opts
"git worktree add" learned to check out an existing branch.
Is this ready for 'next'?
* js/rebase-recreate-merge (2018-04-24) 16 commits
- rebase -i --rebase-merges: add a section to the man page
- rebase -i: introduce --rebase-merges=[no-]rebase-cousins
- pull: accept --rebase=merges to recreate the branch topology
- rebase --rebase-merges: avoid "empty merges"
- sequencer: handle post-rewrite for merge commands
- sequencer: make refs generated by the `label` command worktree-local
- rebase --rebase-merges: add test for --keep-empty
- rebase: introduce the --rebase-merges option
- rebase-helper --make-script: introduce a flag to rebase merges
- sequencer: fast-forward `merge` commands, if possible
- sequencer: introduce the `merge` command
- git-rebase--interactive: clarify arguments
- sequencer: offer helpful advice when a command was rescheduled
- sequencer: refactor how original todo list lines are accessed
- sequencer: make rearrange_squash() a bit more obvious
- sequencer: avoid using errno clobbered by rollback_lock_file()
"git rebase" learned "--rebase-merges" to transplant the whole
topology of commit graph elsewhere.
Was on hold. What's the donness of this thing?
cf. <nycvar.QRO.7.76.6.1804210017020.4241@ZVAVAG-6OXH6DA.rhebcr.pbec.zvpebfbsg.pbz>
* bw/protocol-v2 (2018-03-15) 35 commits
(merged to 'next' on 2018-04-11 at 23ee234a2c)
+ remote-curl: don't request v2 when pushing
+ remote-curl: implement stateless-connect command
+ http: eliminate "# service" line when using protocol v2
+ http: don't always add Git-Protocol header
+ http: allow providing extra headers for http requests
+ remote-curl: store the protocol version the server responded with
+ remote-curl: create copy of the service name
+ pkt-line: add packet_buf_write_len function
+ transport-helper: introduce stateless-connect
+ transport-helper: refactor process_connect_service
+ transport-helper: remove name parameter
+ connect: don't request v2 when pushing
+ connect: refactor git_connect to only get the protocol version once
+ fetch-pack: support shallow requests
+ fetch-pack: perform a fetch using v2
+ upload-pack: introduce fetch server command
+ push: pass ref prefixes when pushing
+ fetch: pass ref prefixes when fetching
+ ls-remote: pass ref prefixes when requesting a remote's refs
+ transport: convert transport_get_remote_refs to take a list of ref prefixes
+ transport: convert get_refs_list to take a list of ref prefixes
+ connect: request remote refs using v2
+ ls-refs: introduce ls-refs server command
+ serve: introduce git-serve
+ test-pkt-line: introduce a packet-line test helper
+ protocol: introduce enum protocol_version value protocol_v2
+ transport: store protocol version
+ connect: discover protocol version outside of get_remote_heads
+ connect: convert get_remote_heads to use struct packet_reader
+ transport: use get_refs_via_connect to get refs
+ upload-pack: factor out processing lines
+ upload-pack: convert to a builtin
+ pkt-line: add delim packet support
+ pkt-line: allow peeking a packet line without consuming it
+ pkt-line: introduce packet_read_with_status
(this branch is used by bw/server-options.)
The beginning of the next-gen transfer protocol.
Will cook in 'next'.
* ls/checkout-encoding (2018-04-16) 10 commits
(merged to 'next' on 2018-04-25 at e0f8554b2a)
+ convert: add round trip check based on 'core.checkRoundtripEncoding'
+ convert: add tracing for 'working-tree-encoding' attribute
+ convert: check for detectable errors in UTF encodings
+ convert: add 'working-tree-encoding' attribute
+ utf8: add function to detect a missing UTF-16/32 BOM
+ utf8: add function to detect prohibited UTF-16/32 BOM
+ utf8: teach same_encoding() alternative UTF encoding names
+ strbuf: add a case insensitive starts_with()
+ strbuf: add xstrdup_toupper()
+ strbuf: remove unnecessary NUL assignment in xstrdup_tolower()
The new "checkout-encoding" attribute can ask Git to convert the
contents to the specified encoding when checking out to the working
tree (and the other way around when checking in).
Will merge to 'master'.
This looked more or less ready for 'next'. Please stop me if there
are remaining issues I forgot about.
--------------------------------------------------
[Discarded]
* js/runtime-prefix-windows (2018-03-27) 5 commits
. mingw/msvc: use the new-style RUNTIME_PREFIX helper
. exec_cmd: provide a new-style RUNTIME_PREFIX helper for Windows
. exec_cmd: RUNTIME_PREFIX on some POSIX systems
. Makefile: add Perl runtime prefix support
. Makefile: generate Perl header from template file
The Windows port was the first that allowed Git to be installed
anywhere by having its components refer to each other with relative
pathnames. The recent dj/runtime-prefix topic extends the idea to
other platforms, and its approach has been adopted back in the
Windows port.
Ejected, as the parent topic dj/runtime-prefix covers Windows now.
* bp/fsexcludes (2018-04-16) 2 commits
. fsmonitor: switch to use new fsexcludes logic and remove unused untracked cache based logic
. fsexcludes: add a programmatic way to exclude files from git's working directory traversal logic
Can we have a few lines summary here, just like we have for other
topic ;-) I personally take the overlong title of these commits as
a sign that they can further be simplified and cleaned up by
splitting, focusing the scope, etc.
Retracted.
cf. <0de30972-b0a2-67e8-7cff-c19daf9ece8b@gmail.com>
^ permalink raw reply [relevance 3%]
* Re: [PATCH v1 0/5] Allocate cache entries from memory pool
@ 2018-04-23 16:44 2% ` Jameson Miller
0 siblings, 0 replies; 200+ results
From: Jameson Miller @ 2018-04-23 16:44 UTC (permalink / raw)
To: Stefan Beller, Junio C Hamano
Cc: Jameson Miller, git@vger.kernel.org, pclouds@gmail.com,
jonathantanmy@google.com
On 04/20/2018 01:49 PM, Stefan Beller wrote:
>>> base-commit: cafaccae98f749ebf33495aec42ea25060de8682
>>
>> I couldn't quite figure out what these five patches were based on,
>> even with this line. Basing on and referring to a commit that is
>> not part of our published history with "base-commit" is not all that
>> useful to others.
>
> I'd like to second this. In the object store refactoring, I am at a point where
> I'd want to migrate the memory management of {object, tree, commit, tag}.c
> which currently is done in alloc.c to a memory pool, that has a dedicated
> pointer to it.
>
> So I'd either have to refactor alloc.c to take the_repository[1] or
> I'd play around with the mem_pool to manage memory in the
> object layer. I guess this playing around can happen with
> what is at origin/jm/mem-pool, however the life cycle management
> part of the third patch[2] would allow for stopping memleaks there.
> So I am interested in this series as well.
>
Sorry about the confusion here. This patch series can be applied to the
next branch. They apply cleanly on [3]. The lifecycle functions are
re-introduced in [4], which we could incorporate sooner if useful. I
didn't have a consumer for the calls in the original patch series, and
so deferred them until there was a caller. I would be interested to
understand how the mem_pool would fit your needs, and if it is
sufficient or needs modification for your use cases.
> [1] proof of concept in patches nearby
> https://public-inbox.org/git/20180206001749.218943-31-sbeller@google.com/
>
> [2] https://public-inbox.org/git/20180417163400.3875-5-jamill@microsoft.com/
>
> Thanks,
> Stefan
>
[3] b46fe60e1d ("merge-fix/ps/test-chmtime-get", 2018-04-20)
[4]
https://public-inbox.org/git/20180417163400.3875-5-jamill@microsoft.com/
^ permalink raw reply [relevance 2%]
* Re: [PATCH v1 0/5] Allocate cache entries from memory pool
@ 2018-04-23 16:19 1% ` Jameson Miller
1 sibling, 0 replies; 200+ results
From: Jameson Miller @ 2018-04-23 16:19 UTC (permalink / raw)
To: Junio C Hamano, Jameson Miller
Cc: git@vger.kernel.org, pclouds@gmail.com, jonathantanmy@google.com
On 04/18/2018 12:49 AM, Junio C Hamano wrote:
> Jameson Miller <jamill@microsoft.com> writes:
>
>> This patch series improves the performance of loading indexes by
>> reducing the number of malloc() calls. ...
>>
>> Jameson Miller (5):
>> read-cache: teach refresh_cache_entry to take istate
>> Add an API creating / discarding cache_entry structs
>> mem-pool: fill out functionality
>> Allocate cache entries from memory pools
>> Add optional memory validations around cache_entry lifecyle
>>
>> apply.c | 26 +++---
>> blame.c | 5 +-
>> builtin/checkout.c | 8 +-
>> builtin/difftool.c | 8 +-
>> builtin/reset.c | 6 +-
>> builtin/update-index.c | 26 +++---
>> cache.h | 40 ++++++++-
>> git.c | 3 +
>> mem-pool.c | 136 ++++++++++++++++++++++++++++-
>> mem-pool.h | 34 ++++++++
>> merge-recursive.c | 4 +-
>> read-cache.c | 229 +++++++++++++++++++++++++++++++++++++++----------
>> resolve-undo.c | 6 +-
>> split-index.c | 31 +++++--
>> tree.c | 4 +-
>> unpack-trees.c | 27 +++---
>> 16 files changed, 476 insertions(+), 117 deletions(-)
>>
>>
>> base-commit: cafaccae98f749ebf33495aec42ea25060de8682
> I couldn't quite figure out what these five patches were based on,
> even with this line. Basing on and referring to a commit that is
> not part of our published history with "base-commit" is not all that
> useful to others.
My apologies - this patch series should be applied to the 'next'
branch. It applies cleanly on top of
b46fe60e1d ("merge-fix/ps/test-chmtime-get", 2018-04-20), which
is a commit in the 'next' branch.
> Offhand without applying these patches and viewing the changes in
> wider contexts, one thing that makes me wonder is how the two
> allocation schemes can be used with two implementations of free().
> Upon add_index_entry() that replaces an index entry for an existing
> path, we'd discard an entry that was originally read as part of
> read_cache(). If we do that again, the second add_index_entry()
> will be discading, in its call to replace_index_entry(), the entry
> that was allocated by the caller of the first add_index_entry()
> call. And replace_index_entry() would not have a way to know from
> which allocation the entry's memory came from.
>
> Perhaps it is not how you are using the "transient" stuff, and from
> the comment in 2/5, it is for "entries that are not meant to go into
> the index", but then higher stage index entries in unpack_trees seem
> to be allocated via the "transient" stuff, so I am not sure what the
> plans are for things like merge_recursive() that uses unpack_trees()
> to prepare the index and then later "fix it up" by further futzing
> around the index to adjust for renames it finds, etc.
Good points. The intention with this logic is that any entries
that *could* go into an index are allocated from the memory
pool. The "transient" entries only exist for a short period of
time. These have a defined lifetime and we can always trace the
corresponding "free" call. make_transient_cache_entry() is only
used to construct a temporary cache_entry to pass to the
checkout_entry() / write_entry(). There is a note in checkout.c
indicating that write_entry() needs to be re-factored to not take
a cache_entry.
The cache_entry type could gain knowledge about where it was
allocated from. This would allow us to only have a
single "free()" function, which could inspect the cache_entry to
see if it was allocated from a mem_pool (and possibly which
mem_pool) and take the appropriate action. The downside of this
approach is that cache_entry would need to gain a field to track
this information, and I *think* all of the bit field spots are
taken.
> Let me read it fully once we know where these patches are to be
> applied, but before that I cannot say much about them X-<.
>
> Thanks.
>
^ permalink raw reply [relevance 1%]
* [PATCH v10 00/36] Add directory rename detection to git
@ 2018-04-19 17:57 3% Elijah Newren
0 siblings, 0 replies; 200+ results
From: Elijah Newren @ 2018-04-19 17:57 UTC (permalink / raw)
To: git; +Cc: sbeller, gitster, torvalds, Elijah Newren
This series is a reboot of the directory rename detection series that was
merged to master and then reverted due to the final patch having a buggy
can-skip-update check, as noted at
https://public-inbox.org/git/xmqqmuya43cs.fsf@gitster-ct.c.googlers.com/
This series based on top of master.
This updated series fixes the problem found with the previous series, and
also fixes Linus' issue with unnecessary rebuilds noted at
https://public-inbox.org/git/CA+55aFzLZ3UkG5svqZwSnhNk75=fXJRkvU1m_RHBG54NOoaZPA@mail.gmail.com/
For the original details about design considerations surrounding
directory rename detection, see
https://public-inbox.org/git/20171110190550.27059-1-newren@gmail.com/
Patches 1--28 are identical to what was previously merged to master,
modulo trivial compilation fixes due to the fact that I've rebased on
master which now includes commit 916bc35b29af ("tree-walk: convert tree
entry functions to object_id", 2018-03-12). As such, I've retained the
Reviewed-by and Signed-off-by tags for these first 28 patches. (The
final patch of the original series, patch 29, has been rewritten and
replaced in this series.)
The remaining eight patches are new; a brief summary:
merge-recursive: improve add_cacheinfo error handling
merge-recursive: move more is_dirty handling to merge_content
merge-recursive: avoid triggering add_cacheinfo error with dirty mod
When Junio was bit by the previous series, the code reached a
detected error state that should not ever be hit in production.
That was bad enough, but the problem compounded because the code
simply printed a vague not-very-scary-sounding error, and returned
an error code that the caller ignored (which not only proceeded to
then handle other paths which might print messages causing the error
to scroll off the screen, but could result in a "clean" merge). Fix
issues with the error handling...and then deal with the breakage of
one particular test that was triggering this codepath.
t6046: testcases checking whether updates can be skipped in a merge
Add a fairly comprehensive set of tests for the skipability of
working tree updates.
merge-recursive: fix was_tracked() to quit lying with some renamed
paths
merge-recursive: fix remainder of was_dirty() to use original index
Instead of using the current index as a (rather imperfect) proxy for
the state of the index just before the merge, keep a copy of the
original index around so we can get correct answers to whether
certain paths were tracked or dirty before the merge.
merge-recursive: make "Auto-merging" comment show for other merges
merge-recursive: fix check for skipability of working tree updates
Fix and simplify the skipability check. Due to some tests being
picky about output, the first of these two patches exists to avoid
triggering the "Auto-merging $FILE" message too often with the
simplified logic; in the process, it fixes a pair of existing issues
with when those messages are shown, making it more accurate in
general.
Additional testing:
* I've re-merged all ~13k merge commits in git.git with both
git-2.17.0 and this version of git, comparing the results to each
other in detail. (Including stdout & stderr, as well as the output
of subsequent commands like `git status`, `git ls-files -s`, `git
diff -M`, `git diff -M --staged`). The only differences were in 23
merges of either git-gui or gitk which involved directory renames
(e.g. git-2.17.0's merge would result in files like 'lib/tools.tcl'
or 'po/ru.po' instead of the expected 'git-gui/lib/tools.tcl' or
'gitk-git/po/ru.po')
* I'm trying to do the same with linux.git, but it looks like that will
take nearly a week to complete...
My biggest question:
* Is there any other testing others would like to see, in order to avoid
a repeat of the pain from my previous series and allow us to safely
merge this newer one?
Elijah Newren (36):
directory rename detection: basic testcases
directory rename detection: directory splitting testcases
directory rename detection: testcases to avoid taking detection too
far
directory rename detection: partially renamed directory
testcase/discussion
directory rename detection: files/directories in the way of some
renames
directory rename detection: testcases checking which side did the
rename
directory rename detection: more involved edge/corner testcases
directory rename detection: testcases exploring possibly suboptimal
merges
directory rename detection: miscellaneous testcases to complete
coverage
directory rename detection: tests for handling overwriting untracked
files
directory rename detection: tests for handling overwriting dirty files
merge-recursive: move the get_renames() function
merge-recursive: introduce new functions to handle rename logic
merge-recursive: fix leaks of allocated renames and diff_filepairs
merge-recursive: make !o->detect_rename codepath more obvious
merge-recursive: split out code for determining diff_filepairs
merge-recursive: make a helper function for cleanup for handle_renames
merge-recursive: add get_directory_renames()
merge-recursive: check for directory level conflicts
merge-recursive: add computation of collisions due to dir rename &
merging
merge-recursive: check for file level conflicts then get new name
merge-recursive: when comparing files, don't include trees
merge-recursive: apply necessary modifications for directory renames
merge-recursive: avoid clobbering untracked files with directory
renames
merge-recursive: fix overwriting dirty files involved in renames
merge-recursive: fix remaining directory rename + dirty overwrite
cases
directory rename detection: new testcases showcasing a pair of bugs
merge-recursive: avoid spurious rename/rename conflict from dir
renames
merge-recursive: improve add_cacheinfo error handling
merge-recursive: move more is_dirty handling to merge_content
merge-recursive: avoid triggering add_cacheinfo error with dirty mod
t6046: testcases checking whether updates can be skipped in a merge
merge-recursive: fix was_tracked() to quit lying with some renamed
paths
merge-recursive: fix remainder of was_dirty() to use original index
merge-recursive: make "Auto-merging" comment show for other merges
merge-recursive: fix check for skipability of working tree updates
merge-recursive.c | 1432 ++++++++-
merge-recursive.h | 28 +
strbuf.c | 16 +
strbuf.h | 16 +
t/t3501-revert-cherry-pick.sh | 7 +-
t/t6022-merge-rename.sh | 2 +-
t/t6043-merge-rename-directories.sh | 3998 ++++++++++++++++++++++++
t/t6046-merge-skip-unneeded-updates.sh | 761 +++++
t/t7607-merge-overwrite.sh | 2 +-
unpack-trees.c | 4 +-
unpack-trees.h | 4 +
11 files changed, 6092 insertions(+), 178 deletions(-)
create mode 100755 t/t6043-merge-rename-directories.sh
create mode 100755 t/t6046-merge-skip-unneeded-updates.sh
--
2.17.0.290.ge988e9ce2a
^ permalink raw reply [relevance 3%]
* Re: [RFC] Rebasing merges: a jorney to the ultimate solution (Road Clear)
2018-03-13 18:24 3% ` Junio C Hamano
@ 2018-03-26 13:17 0% ` Johannes Schindelin
0 siblings, 0 replies; 200+ results
From: Johannes Schindelin @ 2018-03-26 13:17 UTC (permalink / raw)
To: Junio C Hamano
Cc: Phillip Wood, Sergey Organov, Igor Djordjevic, phillip.wood,
Git mailing list, Jacob Keller, Johannes Sixt
Hi Junio,
On Tue, 13 Mar 2018, Junio C Hamano wrote:
> Johannes Schindelin <Johannes.Schindelin@gmx.de> writes:
>
> > If so, what tooling do you have to identify quickly what to
> > cherry-pick, given merge conflicts?
>
> It exactly is the issue I've been trying to find ideal solution for
> quite a while and not successfully. Here is a sample thread
>
> https://public-inbox.org/git/xmqqeft3u0u5.fsf@gitster.mtv.corp.google.com/#t
>
> and every message I mention "merge-fix" is relevant.
>
> [... detailed explanation of the current "band-aid" system...]
Thank you for the very thorough account. I have been struggling with this,
too, even chatting to Michael Haggerty about this at the Contributors'
Summit (where I missed you a lot). He pointed me to a blog post of his
about the very interesting concept of "obsolete markers" in Hg:
http://softwareswirl.blogspot.de/2013/05/obsolete-markers-in-mercurial.html
Granted, that concept really makes most sense for rebase, but I wonder
whether the concept could be extended to help your (and my) use case of
frequently-changing targets (for me, it is more rebase targets, for you it
is merge targets). It would probably be implemented using commit notes, to
allow for bidirectional mappings.
Ciao,
Dscho
>
> The current band-aid system punts and indexes the merge-fix changes
> by merely a branch name. When refs/merge-fix/X exists, what it
> means is "When branch X is merged to an integration branch, it is
> likely that the integration branch _already_ has merged an unnamed
> topic that causes semantic conflicts and requires this fix-up".
> This needs occasional manual adjustment---e.g. when the topic X
> turns out to be a lot more stable than the other topic Y that was
> causing us trouble with semantic conflicts, I may at some point
> reorder the topics and have topic X advance to 'next' before topic Y
> does. And when that happens, when I merge X to 'next', because Y is
> not yet in 'next', I shouldn't apply refs/merge-fix/X (often, an
> attempt to cherry-pick it on top of a merge of X into 'next' would
> fail, which would be a bit of safety, but not always). What I
> should do instead is to rename refs/merge-fix/X to refs/merge-fix/Y
> immediately before merging X to 'next', so that the cherry-pick is
> not applied. When rebuilding 'master'->'jch'->'pu' chain, X (now in
> 'next') will be merged before Y (not in 'next') gets merged, and
> when it is Y's turn to be merged, the merge-fix I used to apply when
> merging topic X will be applied.
>
> In the ideal world (I think I'm repeating the ideas raised in the
> thread quoted), the merge-fix database should be indexed with a pair
> of commit object names (e.g. a step in branch X that adds a new
> callsite for function frotz() and a step in branch Y that changes
> the function signature of frotz()), and teach the system to
> cherry-pick refs/merge-fix/A-B to resolve semantic conflicts, when
> both commits A and B appears in the integration branch for the first
> time. And make sure these are kept up-to-date across rebasing of
> commits A and B. After rebasing the topics X and Y that contained
> the commits A and B, if they became C and D, the system somehow
> needs to be able to locate the previous merge-fix that was valid for
> A-B pair when C-D pair gets merged.
>
>
^ permalink raw reply [relevance 0%]
* Re: [RFC] Rebasing merges: a jorney to the ultimate solution (Road Clear)
2018-03-11 11:56 0% ` Johannes Schindelin
@ 2018-03-13 18:24 3% ` Junio C Hamano
2018-03-26 13:17 0% ` Johannes Schindelin
0 siblings, 1 reply; 200+ results
From: Junio C Hamano @ 2018-03-13 18:24 UTC (permalink / raw)
To: Johannes Schindelin
Cc: Phillip Wood, Sergey Organov, Igor Djordjevic, phillip.wood,
Git mailing list, Jacob Keller, Johannes Sixt
Johannes Schindelin <Johannes.Schindelin@gmx.de> writes:
> So essentially, what your cherry-pick'able commits are is a way to store
> what rerere would have stored (i.e. the set of merge conflicts together
> with their resolution)?
If rerere would have stored, I wouldn't have separate band-aid
system on top. These fix-up commits are usually on parts that do
not get involved in textual conflicts; "rerere" which relies on
having textual conflicts (the "shape" of the text in the conflicted
region is what lets "rerere" index into its database to find the
recorded resolution) wouldn't have stored them and that is
fundamental.
> If so, what tooling do you have to identify quickly what to cherry-pick,
> given merge conflicts?
It exactly is the issue I've been trying to find ideal solution for
quite a while and not successfully. Here is a sample thread
https://public-inbox.org/git/xmqqeft3u0u5.fsf@gitster.mtv.corp.google.com/#t
and every message I mention "merge-fix" is relevant.
The current band-aid system punts and indexes the merge-fix changes
by merely a branch name. When refs/merge-fix/X exists, what it
means is "When branch X is merged to an integration branch, it is
likely that the integration branch _already_ has merged an unnamed
topic that causes semantic conflicts and requires this fix-up".
This needs occasional manual adjustment---e.g. when the topic X
turns out to be a lot more stable than the other topic Y that was
causing us trouble with semantic conflicts, I may at some point
reorder the topics and have topic X advance to 'next' before topic Y
does. And when that happens, when I merge X to 'next', because Y is
not yet in 'next', I shouldn't apply refs/merge-fix/X (often, an
attempt to cherry-pick it on top of a merge of X into 'next' would
fail, which would be a bit of safety, but not always). What I
should do instead is to rename refs/merge-fix/X to refs/merge-fix/Y
immediately before merging X to 'next', so that the cherry-pick is
not applied. When rebuilding 'master'->'jch'->'pu' chain, X (now in
'next') will be merged before Y (not in 'next') gets merged, and
when it is Y's turn to be merged, the merge-fix I used to apply when
merging topic X will be applied.
In the ideal world (I think I'm repeating the ideas raised in the
thread quoted), the merge-fix database should be indexed with a pair
of commit object names (e.g. a step in branch X that adds a new
callsite for function frotz() and a step in branch Y that changes
the function signature of frotz()), and teach the system to
cherry-pick refs/merge-fix/A-B to resolve semantic conflicts, when
both commits A and B appears in the integration branch for the first
time. And make sure these are kept up-to-date across rebasing of
commits A and B. After rebasing the topics X and Y that contained
the commits A and B, if they became C and D, the system somehow
needs to be able to locate the previous merge-fix that was valid for
A-B pair when C-D pair gets merged.
^ permalink raw reply [relevance 3%]
* Re: [RFC] Rebasing merges: a jorney to the ultimate solution (Road Clear)
2018-03-08 8:18 2% ` Junio C Hamano
@ 2018-03-11 11:56 0% ` Johannes Schindelin
2018-03-13 18:24 3% ` Junio C Hamano
0 siblings, 1 reply; 200+ results
From: Johannes Schindelin @ 2018-03-11 11:56 UTC (permalink / raw)
To: Junio C Hamano
Cc: Phillip Wood, Sergey Organov, Igor Djordjevic, phillip.wood,
Git mailing list, Jacob Keller, Johannes Sixt
Hi Junio,
On Thu, 8 Mar 2018, Junio C Hamano wrote:
> Johannes Schindelin <Johannes.Schindelin@gmx.de> writes:
>
> >> Non-textual semantic conflicts are made (in the best case just once)
> >> as a separate commit on top of mechanical auto-merge whose focus is
> >> predictability (rather than cleverness) done by Git, and then that
> >> separate commit is kept outside the history. When replaying these
> >> merges to rebuild the 'pu' branch, after resetting the tip to
> >> 'master', each topic is merged mechanically, and if such a fix-up
> >> commit is present, "cherry-pick --no-commit" applies it and then
> >> "commit --amend --no-edit" to adjust the merge. I find it quite
> >> valuable to have a separate record of what "evil" non-mechanical
> >> adjustment was done, which I know won't be lost in the noise when
> >> these merges need to be redone daily or more often.
> >
> > So essentially, you have something that `git rerere` would have learned,
> > but as a commit?
>
> You probably wouldn't be asking that if you read what you cut out
> when you quoted above ;-)
Sorry to be so stupid, and no, the part I cut did not clarify it for me,
hence my question.
> There are a collection of cherry-pickable commits in hierarchy under
> refs/merge-fix. They are indexed by the branch that will cause
> semantic conflicts that do not involve textual conflicts at all (the
> important implication of which is that 'rerere' fundamentally will
> not trigger to help resolving them) [*1*], and are used to create
> evil merge when a corresponding branch is merged to 'pu' (and down).
I see. My question was unclear, I agree. Please let me re-try:
So essentially, what your cherry-pick'able commits are is a way to store
what rerere would have stored (i.e. the set of merge conflicts together
with their resolution)?
If so, what tooling do you have to identify quickly what to cherry-pick,
given merge conflicts?
(I know I could spend some half hour to scour your `todo` branch and the
documentation you wrote about how you maintain Git, but you already know
the answer to this question, and it would probably be interesting to
others who are as eager to have better tools for handling merge conflicts
as I am, too, so it would save time overall to discuss this single
question here.)
> *1* One topic adds an extra parameter to read_index_from() that has
> been and still is defined in a file and merged to 'pu' first, while
> another topic adds a new callsite for the same function in a file
> that the former topic does not touch, hence a merge of the latter
> topic has no textual conflict to the file with a new callsite, but
> still needs adjusting. That sort of think.
Okay, so it is even more intricate than `rerere`: it does not only store
the merge conflicts (by grace of using the "patch ID" of the merge
conflicts) together with their resolution, but instead it has some sort of
idea of what context needs to be met to require the resolution?
Color me intrigued.
If you really found a way to automate describing, say, that a function
signature changed in one branch, and a caller was introduced in another,
and that merging those requires adjusting the caller in a specific way, I
now *really* think that this should be made available more broadly.
Ciao,
Dscho
^ permalink raw reply [relevance 0%]
* Re: [RFC] Rebasing merges: a jorney to the ultimate solution (Road Clear)
@ 2018-03-08 8:18 2% ` Junio C Hamano
2018-03-11 11:56 0% ` Johannes Schindelin
0 siblings, 1 reply; 200+ results
From: Junio C Hamano @ 2018-03-08 8:18 UTC (permalink / raw)
To: Johannes Schindelin
Cc: Phillip Wood, Sergey Organov, Igor Djordjevic, phillip.wood,
Git mailing list, Jacob Keller, Johannes Sixt
Johannes Schindelin <Johannes.Schindelin@gmx.de> writes:
>> Non-textual semantic conflicts are made (in the best case just once)
>> as a separate commit on top of mechanical auto-merge whose focus is
>> predictability (rather than cleverness) done by Git, and then that
>> separate commit is kept outside the history. When replaying these
>> merges to rebuild the 'pu' branch, after resetting the tip to
>> 'master', each topic is merged mechanically, and if such a fix-up
>> commit is present, "cherry-pick --no-commit" applies it and then
>> "commit --amend --no-edit" to adjust the merge. I find it quite
>> valuable to have a separate record of what "evil" non-mechanical
>> adjustment was done, which I know won't be lost in the noise when
>> these merges need to be redone daily or more often.
>
> So essentially, you have something that `git rerere` would have learned,
> but as a commit?
You probably wouldn't be asking that if you read what you cut out
when you quoted above ;-)
There are a collection of cherry-pickable commits in hierarchy under
refs/merge-fix. They are indexed by the branch that will cause
semantic conflicts that do not involve textual conflicts at all (the
important implication of which is that 'rerere' fundamentally will
not trigger to help resolving them) [*1*], and are used to create
evil merge when a corresponding branch is merged to 'pu' (and down).
[Footnote]
*1* One topic adds an extra parameter to read_index_from() that has
been and still is defined in a file and merged to 'pu' first, while
another topic adds a new callsite for the same function in a file
that the former topic does not touch, hence a merge of the latter
topic has no textual conflict to the file with a new callsite, but
still needs adjusting. That sort of think.
^ permalink raw reply [relevance 2%]
* Re: [RFC] Rebasing merges: a jorney to the ultimate solution (Road Clear)
@ 2018-03-06 16:56 2% ` Junio C Hamano
0 siblings, 1 reply; 200+ results
From: Junio C Hamano @ 2018-03-06 16:56 UTC (permalink / raw)
To: Phillip Wood
Cc: Sergey Organov, Igor Djordjevic, phillip.wood, Git mailing list,
Jacob Keller, Johannes Schindelin, Johannes Sixt
Phillip Wood <phillip.wood@talktalk.net> writes:
> I wonder if just having a predicable result rather than forcing the
> rebase to stop if the user just squashes a fixup commit into a topic
> branch that is the parent of a merge might be more convenient in practice.
Unless I am misunderstanding what you are saying, that is pretty
much what I have automated for my daily rebuild of the 'pu' branch
Non-textual semantic conflicts are made (in the best case just once)
as a separate commit on top of mechanical auto-merge whose focus is
predictability (rather than cleverness) done by Git, and then that
separate commit is kept outside the history. When replaying these
merges to rebuild the 'pu' branch, after resetting the tip to
'master', each topic is merged mechanically, and if such a fix-up
commit is present, "cherry-pick --no-commit" applies it and then
"commit --amend --no-edit" to adjust the merge. I find it quite
valuable to have a separate record of what "evil" non-mechanical
adjustment was done, which I know won't be lost in the noise when
these merges need to be redone daily or more often.
The Appendix in Documentation/howto/maintain-git.txt talks about
this process. You can see what topics have such merge-fix defined
by peeking https://github.com/gitster/git/ repository.
^ permalink raw reply [relevance 2%]
* Re: [PATCH] notes: send "Automatic notes merge failed" messages to stderr
2017-11-15 13:13 0% ` Johan Herland
@ 2017-11-15 21:09 0% ` Todd Zullinger
0 siblings, 0 replies; 200+ results
From: Todd Zullinger @ 2017-11-15 21:09 UTC (permalink / raw)
To: Johan Herland; +Cc: Junio C Hamano, Santiago Torres, Git mailing list
Johan Herland wrote:
> On Tue, Nov 14, 2017 at 5:17 PM, Todd Zullinger <tmz@pobox.com> wrote:
>> All other error messages from notes use stderr. Do the same when
>> alerting users of an unresolved notes merge.
>>
>> Fix the output redirection in t3310 and t3320 as well. Previously, the
>> tests directed output to a file, but stderr was either not captured or
>> not sent to the file due to the order of the redirection operators.
>>
>> Signed-off-by: Todd Zullinger <tmz@pobox.com>
>
> Looks good to me.
Thanks Johan.
--
Todd
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Deliberation, n. The act of examining one's bread to determine which
side it is buttered on.
-- Ambrose Bierce, "The Devil's Dictionary"
^ permalink raw reply [relevance 0%]
* Re: [PATCH] notes: send "Automatic notes merge failed" messages to stderr
@ 2017-11-15 13:13 0% ` Johan Herland
2017-11-15 21:09 0% ` Todd Zullinger
0 siblings, 1 reply; 200+ results
From: Johan Herland @ 2017-11-15 13:13 UTC (permalink / raw)
To: Todd Zullinger; +Cc: Junio C Hamano, Santiago Torres, Git mailing list
On Tue, Nov 14, 2017 at 5:17 PM, Todd Zullinger <tmz@pobox.com> wrote:
> All other error messages from notes use stderr. Do the same when
> alerting users of an unresolved notes merge.
>
> Fix the output redirection in t3310 and t3320 as well. Previously, the
> tests directed output to a file, but stderr was either not captured or
> not sent to the file due to the order of the redirection operators.
>
> Signed-off-by: Todd Zullinger <tmz@pobox.com>
Looks good to me.
...Johan
^ permalink raw reply [relevance 0%]
Results 1-200 of ~2000 next (older) | reverse | options above
-- pct% links below jump to the message on this page, permalinks otherwise --
2017-11-14 9:31 [PATCH] t/lib-gpg: fix gpgconf stderr redirect to /dev/null Johan Herland
2017-11-14 16:17 ` [PATCH] notes: send "Automatic notes merge failed" messages to stderr Todd Zullinger
2017-11-15 13:13 0% ` Johan Herland
2017-11-15 21:09 0% ` Todd Zullinger
2018-02-16 13:08 [RFC] Rebasing merges: a jorney to the ultimate solution (Road Clear) Sergey Organov
2018-02-19 23:44 ` Igor Djordjevic
2018-02-27 0:07 ` Johannes Schindelin
2018-02-27 5:30 ` Jacob Keller
2018-02-27 16:21 ` Johannes Schindelin
2018-02-27 18:55 ` Igor Djordjevic
2018-02-27 19:59 ` Igor Djordjevic
2018-02-27 23:40 ` Igor Djordjevic
2018-02-28 5:19 ` Sergey Organov
2018-02-28 20:25 ` Igor Djordjevic
2018-03-01 5:39 ` Sergey Organov
2018-03-02 11:31 ` Phillip Wood
2018-03-03 0:29 ` Igor Djordjevic
2018-03-05 5:00 ` Sergey Organov
2018-03-06 10:52 ` Phillip Wood
2018-03-06 16:56 2% ` Junio C Hamano
2018-03-08 7:05 ` Johannes Schindelin
2018-03-08 8:18 2% ` Junio C Hamano
2018-03-11 11:56 0% ` Johannes Schindelin
2018-03-13 18:24 3% ` Junio C Hamano
2018-03-26 13:17 0% ` Johannes Schindelin
2018-04-17 16:34 [PATCH v1 0/5] Allocate cache entries from memory pool Jameson Miller
2018-04-18 4:49 ` Junio C Hamano
2018-04-20 17:49 ` Stefan Beller
2018-04-23 16:44 2% ` Jameson Miller
2018-04-23 16:19 1% ` Jameson Miller
2018-04-19 17:57 3% [PATCH v10 00/36] Add directory rename detection to git Elijah Newren
2018-04-25 8:37 3% What's cooking in git.git (Apr 2018, #03; Wed, 25) Junio C Hamano
2018-04-30 3:25 3% What's cooking in git.git (Apr 2018, #04; Mon, 30) Junio C Hamano
2018-05-07 14:58 3% What's cooking in git.git (May 2018, #01; Mon, 7) Junio C Hamano
2018-05-17 6:01 3% What's cooking in git.git (May 2018, #02; Thu, 17) Junio C Hamano
2018-05-30 22:47 3% [ANNOUNCE] Git v2.18.0-rc0 Junio C Hamano
2018-06-03 6:58 3% [RFC PATCH 0/7] merge requirement: index matches head Elijah Newren
2018-06-03 6:58 1% ` [RFC PATCH 7/7] merge: fix misleading pre-merge check documentation Elijah Newren
2018-06-07 5:27 3% ` Elijah Newren
2018-07-01 1:24 3% ` [PATCH v2 0/9] Fix merge issues with index not matching HEAD Elijah Newren
2018-07-01 1:25 1% ` [PATCH v2 9/9] merge: fix misleading pre-merge check documentation Elijah Newren
2018-06-04 13:53 3% [ANNOUNCE] Git v2.18.0-rc1 Junio C Hamano
2018-06-13 22:12 3% [ANNOUNCE] Git v2.18.0-rc2 Junio C Hamano
2018-06-21 19:27 3% [ANNOUNCE] Git v2.18.0 Junio C Hamano
2018-06-29 1:21 [PATCH v3 00/32] object-store: lookup_commit Stefan Beller
2018-06-29 17:57 ` Junio C Hamano
2018-06-29 18:03 2% ` Junio C Hamano
2018-06-29 18:34 0% ` Stefan Beller
2018-07-11 5:18 [PATCH 0/2] Address recovery failures with directory/file conflicts Elijah Newren
2018-07-11 5:18 2% ` [PATCH 2/2] read-cache: fix directory/file conflict handling in read_index_unmerged() Elijah Newren
2018-07-13 16:33 ` [PATCH v2 0/2] Address recovery failures with directory/file conflicts Elijah Newren
2018-07-13 16:33 2% ` [PATCH v2 2/2] read-cache: fix directory/file conflict handling in read_index_unmerged() Elijah Newren
2018-07-31 17:12 ` [PATCH v3 0/2] Address recovery failures with directory/file conflicts Elijah Newren
2018-07-31 17:12 2% ` [PATCH v3 2/2] read-cache: fix directory/file conflict handling in read_index_unmerged() Elijah Newren
2018-07-11 19:02 3% What's cooking in git.git (Jul 2018, #01; Wed, 11) Junio C Hamano
2018-07-18 22:03 3% What's cooking in git.git (Jul 2018, #02; Wed, 18) Junio C Hamano
2018-07-25 22:13 3% What's cooking in git.git (Jul 2018, #03; Wed, 25) Junio C Hamano
2018-08-02 23:02 3% What's cooking in git.git (Aug 2018, #01; Thu, 2) Junio C Hamano
2018-08-20 22:13 3% [ANNOUNCE] Git v2.19.0-rc0 Junio C Hamano
2018-09-04 20:27 [PATCH 0/2] commit-graph: add progress output Ævar Arnfjörð Bjarmason
2018-09-07 18:29 ` [PATCH v2 1/2] commit-graph write: " Ævar Arnfjörð Bjarmason
2018-09-21 20:01 ` Derrick Stolee
2018-09-21 21:43 ` Junio C Hamano
2018-09-21 21:57 2% ` Junio C Hamano
2018-09-10 20:11 3% [ANNOUNCE] Git v2.19.0 Junio C Hamano
2018-09-21 5:22 What's cooking in git.git (Sep 2018, #04; Thu, 20) Junio C Hamano
2018-09-21 17:05 ` Johannes Sixt
2018-09-21 17:17 3% ` Junio C Hamano
2018-11-07 9:41 What's cooking in git.git (Nov 2018, #03; Wed, 7) Junio C Hamano
2018-11-07 13:09 ` SZEDER Gábor
2018-11-07 15:09 ` Duy Nguyen
2018-11-07 22:09 2% ` Junio C Hamano
2018-11-08 6:09 1% ` Junio C Hamano
2018-11-13 18:05 1% Git Test Coverage Report (Tuesday, Nov 13) Derrick Stolee
2019-01-29 10:56 [PATCH 0/1] Provide a fix for the semantic merge conflict between 'js/vsts-ci' and 'sg/travis-specific-cc' Johannes Schindelin via GitGitGadget
2019-01-29 10:56 ` [PATCH 1/1] fixup! Merge branch 'js/vsts-ci' into pu Johannes Schindelin via GitGitGadget
2019-01-29 17:50 2% ` Junio C Hamano
2019-03-21 13:16 [PATCH v5 00/26] Add new command 'switch' Nguyễn Thái Ngọc Duy
2019-03-29 10:38 ` [PATCH v6 00/27] " Nguyễn Thái Ngọc Duy
2019-03-29 10:38 ` [PATCH v6 07/27] checkout: inform the user when removing branch state Nguyễn Thái Ngọc Duy
2019-07-02 8:06 ` SZEDER Gábor
2019-07-02 9:03 ` Duy Nguyen
2019-07-02 17:51 2% ` Junio C Hamano
2019-07-04 23:57 0% ` Duy Nguyen
2019-05-24 20:28 3% [PATCH 00/52] fix some -Wmissing-field-initializer warnings Ramsay Jones
2019-07-25 17:45 [PATCH 00/19] Cleanup merge API Elijah Newren
2019-07-25 17:45 2% ` [PATCH 03/19] Ensure index matches head before invoking merge machinery, round N Elijah Newren
2019-07-25 19:41 0% ` Johannes Schindelin
2019-07-25 19:58 0% ` Elijah Newren
2019-07-26 15:52 ` [PATCH v2 00/20] Cleanup merge API Elijah Newren
2019-07-26 15:52 2% ` [PATCH v2 03/20] Ensure index matches head before invoking merge machinery, round N Elijah Newren
2019-08-15 21:40 ` [PATCH v3 00/24] Clean up merge API Elijah Newren
2019-08-15 21:40 2% ` [PATCH v3 08/24] Ensure index matches head before invoking merge machinery, round N Elijah Newren
2019-08-17 18:41 ` [PATCH v4 00/24] Clean up merge API Elijah Newren
2019-08-17 18:41 2% ` [PATCH v4 08/24] Ensure index matches head before invoking merge machinery, round N Elijah Newren
2019-08-26 2:43 [PATCH 00/11] hashmap: bugfixes, safety fixes, and WIP improvements Eric Wong
2019-08-26 2:43 ` [PATCH 04/11] hashmap_entry: detect improper initialization Eric Wong
2019-08-27 9:10 ` Johannes Schindelin
2019-08-27 9:49 ` Eric Wong
2019-08-27 22:16 1% ` Junio C Hamano
2019-08-28 15:04 0% ` Johannes Schindelin
2020-01-08 0:31 [PATCH] submodule add: show 'add --dry-run' stderr when aborting Kyle Meyer
2020-01-16 16:17 ` Johannes Schindelin
2020-01-16 20:23 2% ` Junio C Hamano
2020-03-27 11:44 git rebase fast-forward fails with abbreviateCommands Jan Alexander Steffens (heftig)
2020-03-30 12:42 2% ` [PATCH v1 0/2] rebase --merge: fix fast forwarding when `rebase.abbreviateCommands' is set Alban Gruin
2020-06-12 14:08 Collaborative conflict resolution feature request Curtin, Eric
2020-06-13 12:08 ` Christian Couder
2020-06-13 12:38 ` Curtin, Eric
2020-06-13 13:14 ` Philip Oakley
2020-06-13 16:44 2% ` Junio C Hamano
2020-06-15 9:51 ` Sergey Organov
2020-06-15 11:04 ` Philip Oakley
2020-06-16 17:17 ` Stefan Moch
2020-06-17 18:32 2% ` Curtin, Eric
2020-06-23 10:58 8% [PATCH] Doc: reference 'seen' instead of 'pu' in meta docs Denton Liu
2020-06-23 15:09 0% ` Johannes Schindelin
2020-06-23 15:04 [PATCH 0/3] Accommodate for pu having been renamed to seen Johannes Schindelin via GitGitGadget
2020-06-23 15:04 8% ` [PATCH 2/3] docs: adjust the technical overview for the rename `pu` -> `seen` Johannes Schindelin via GitGitGadget
2020-06-24 14:48 ` [PATCH v2 0/3] Accommodate for pu having been renamed to seen Johannes Schindelin via GitGitGadget
2020-06-24 14:48 8% ` [PATCH v2 2/3] docs: adjust the technical overview for the rename `pu` -> `seen` Johannes Schindelin via GitGitGadget
2020-06-25 12:18 ` [PATCH v3 0/3] Accommodate for pu having been renamed to seen Johannes Schindelin via GitGitGadget
2020-06-25 12:18 8% ` [PATCH v3 2/3] docs: adjust the technical overview for the rename `pu` -> `seen` Johannes Schindelin via GitGitGadget
2020-07-23 17:56 [PATCH v2 00/18] Maintenance builtin, allowing 'gc --auto' customization Derrick Stolee via GitGitGadget
2020-07-30 22:24 ` [PATCH v3 00/20] " Derrick Stolee via GitGitGadget
2020-07-30 23:31 ` Junio C Hamano
2020-07-31 2:58 2% ` Junio C Hamano
2020-07-28 20:21 [PATCH 0/11] renaming argv_array Jeff King
2020-07-28 20:27 ` [PATCH 10/11] strvec: drop argv_array compatibility layer Jeff King
2020-07-28 22:23 ` Junio C Hamano
2020-07-29 0:04 ` Jeff King
2020-07-29 0:37 ` Jeff King
2020-07-29 0:44 2% ` Junio C Hamano
2020-07-29 16:22 0% ` Jeff King
2020-08-02 6:33 [PATCH 0/4] Attr fixes Elijah Newren via GitGitGadget
2020-08-02 6:33 2% ` [PATCH 1/4] t6038: make tests fail for the right reason Elijah Newren via GitGitGadget
2020-08-02 18:17 0% ` Junio C Hamano
2020-08-02 19:10 0% ` Eric Sunshine
2020-08-03 18:41 ` [PATCH v2 0/4] Attr fixes Elijah Newren via GitGitGadget
2020-08-03 18:41 2% ` [PATCH v2 1/4] t6038: make tests fail for the right reason Elijah Newren via GitGitGadget
2020-09-09 0:49 [PATCH v4 0/9] propose config-based hooks Emily Shaffer
2020-09-09 21:04 2% ` Junio C Hamano
2021-01-08 19:22 What's cooking in git.git (Jan 2021, #02; Fri, 8) Junio C Hamano
2021-01-14 23:06 ` Emily Shaffer
2021-01-15 2:36 ` Derrick Stolee
2021-01-15 6:36 ` Junio C Hamano
2021-01-15 6:38 ` Junio C Hamano
2021-01-15 11:36 ` Derrick Stolee
2021-01-15 19:44 2% ` Junio C Hamano
2021-03-20 21:39 What's cooking in git.git (Mar 2021, #06; Sat, 20) Junio C Hamano
2021-03-22 13:52 ` Matheus Tavares Bernardino
2021-03-22 18:41 2% ` Junio C Hamano
2021-04-09 4:02 [RFC PATCH v1 00/13][GSoC] doc: (monospace) apply CodingGuidelines on a large-scale Firmin Martin
2021-04-09 4:02 2% ` [RFC PATCH v1 02/13] doc: typeset branches and remotes in monospace Firmin Martin
2021-04-22 0:55 [PATCH v3] git-merge: rewrite already up to date message Josh Soref via GitGitGadget
2021-05-02 5:14 3% ` [PATCH v4 0/2] normalize & fix merge "up to date" messages Eric Sunshine
2021-05-02 5:14 2% ` [PATCH v4 2/2] merge: fix swapped "up to date" message components Eric Sunshine
2021-05-03 5:21 2% ` Junio C Hamano
2021-05-03 5:50 2% ` Eric Sunshine
2021-05-03 6:28 2% ` Junio C Hamano
2021-05-06 5:37 3% What's cooking in git.git (May 2021, #01; Thu, 6) Junio C Hamano
2021-05-12 7:46 3% What's cooking in git.git (May 2021, #02; Wed, 12) Junio C Hamano
2021-05-17 7:06 3% [ANNOUNCE] Git v2.32.0-rc0 Junio C Hamano
2021-05-22 14:21 3% [ANNOUNCE] Git v2.32.0-rc1 Junio C Hamano
2021-05-28 6:13 3% [ANNOUNCE] Git v2.32.0-rc2 Junio C Hamano
2021-06-02 8:29 3% [ANNOUNCE] Git v2.32.0-rc3 Junio C Hamano
2021-06-06 12:40 3% [ANNOUNCE] Git v2.32.0 Junio C Hamano
2021-06-10 13:06 1% [PATCH] add_pending_object_with_path(): work around "gcc -O3" complaint Jeff King
2021-06-13 22:58 3% [PATCH 0/4] merge: cleanups and fix Felipe Contreras
2021-06-13 22:58 2% ` [PATCH 2/4] merge: fix Yoda conditions Felipe Contreras
2021-08-24 16:41 'git pull' complains that a locally resurrected directory would be overwritten by merge when no pulled changes are affecting that directory Yuri
2021-08-25 1:05 ` Jeff King
2021-08-25 15:42 3% ` Elijah Newren
2021-08-27 23:59 [PATCH] t7900: add '--scheduler=launchctl' parameter to fix test Ramsay Jones
2021-08-30 16:02 ` Junio C Hamano
2021-08-31 0:44 ` Ramsay Jones
2021-08-31 15:59 2% ` Junio C Hamano
2022-01-20 7:47 3% [PATCH 0/2] Fix some old memory leaks in merge-ort and builtin/merge Elijah Newren via GitGitGadget
2022-01-20 7:47 2% ` [PATCH 2/2] merge: fix memory leaks in cmd_merge() Elijah Newren via GitGitGadget
2022-01-22 0:05 2% ` Junio C Hamano
2022-01-22 5:16 3% What's cooking in git.git (Jan 2022, #06; Fri, 21) Junio C Hamano
2022-01-24 19:39 2% What's cooking in git.git (Jan 2022, #07; Mon, 24) Junio C Hamano
2022-02-04 5:22 3% What's cooking in git.git (Feb 2022, #01; Thu, 3) Junio C Hamano
2022-02-10 0:12 3% What's cooking in git.git (Feb 2022, #02; Wed, 9) Junio C Hamano
2022-02-21 11:10 3% [PATCH 0/7] rebase: make reflog messages independent of the backend Phillip Wood via GitGitGadget
2022-02-21 11:10 1% ` [PATCH 2/7] rebase --merge: fix reflog when continuing Phillip Wood via GitGitGadget
2022-04-07 13:49 2% ` Christian Couder
2022-04-15 14:00 2% ` Phillip Wood
2022-04-17 1:57 2% ` Elijah Newren
2022-02-21 11:10 2% ` [PATCH 3/7] rebase --merge: fix reflog message after skipping Phillip Wood via GitGitGadget
2022-04-17 1:58 2% ` Elijah Newren
2022-04-04 15:34 0% ` Review Request (was Re: [PATCH 0/7] rebase: make reflog messages independent of the backend) Phillip Wood
2022-04-17 2:13 0% ` Elijah Newren
2022-04-18 18:56 0% ` Phillip Wood
2022-04-17 2:09 0% ` [PATCH 0/7] rebase: make reflog messages independent of the backend Elijah Newren
2022-04-20 9:56 3% ` [PATCH v2 0/8] " Phillip Wood via GitGitGadget
2022-04-20 9:56 2% ` [PATCH v2 3/8] rebase --merge: fix reflog when continuing Phillip Wood via GitGitGadget
2022-04-20 9:56 2% ` [PATCH v2 4/8] rebase --merge: fix reflog message after skipping Phillip Wood via GitGitGadget
2022-10-12 9:35 2% ` [PATCH v3 0/8] rebase: make reflog messages independent of the backend Phillip Wood via GitGitGadget
2022-10-12 9:35 2% ` [PATCH v3 3/8] rebase --merge: fix reflog when continuing Phillip Wood via GitGitGadget
2022-10-12 9:35 2% ` [PATCH v3 4/8] rebase --merge: fix reflog message after skipping Phillip Wood via GitGitGadget
2022-10-21 9:21 2% ` [PATCH v4 0/8] rebase: make reflog messages independent of the backend Phillip Wood via GitGitGadget
2022-10-21 9:21 2% ` [PATCH v4 3/8] rebase --merge: fix reflog when continuing Phillip Wood via GitGitGadget
2022-10-21 17:37 2% ` Junio C Hamano
2022-10-25 10:08 2% ` Phillip Wood
2022-10-25 16:11 2% ` Junio C Hamano
2022-10-26 15:17 2% ` Phillip Wood
2022-10-26 16:55 2% ` Junio C Hamano
2022-10-21 9:21 2% ` [PATCH v4 4/8] rebase --merge: fix reflog message after skipping Phillip Wood via GitGitGadget
2022-04-04 20:43 3% [ANNOUNCE] Git v2.36.0-rc0 Junio C Hamano
2022-04-08 23:30 3% [ANNOUNCE] Git v2.36.0-rc1 Junio C Hamano
2022-04-12 17:03 3% [ANNOUNCE] Git v2.36.0-rc2 Junio C Hamano
2022-04-18 16:27 3% [ANNOUNCE] Git v2.36.0 Junio C Hamano
2022-05-19 16:26 [PATCH 0/2] Fix merge restore state Elijah Newren via GitGitGadget
2022-06-19 6:50 3% ` [PATCH v2 0/6] " Elijah Newren via GitGitGadget
2022-06-19 6:50 2% ` [PATCH v2 3/6] merge: fix save_state() to work when there are racy-dirty files Elijah Newren via GitGitGadget
2022-07-17 16:28 2% ` ZheNing Hu
2022-07-19 22:49 2% ` Junio C Hamano
2022-07-21 1:09 2% ` Elijah Newren
2022-07-19 22:43 2% ` Junio C Hamano
2022-06-19 6:50 ` [PATCH v2 4/6] merge: make restore_state() restore staged state too Elijah Newren via GitGitGadget
2022-07-19 23:14 ` Junio C Hamano
2022-07-19 23:28 ` Junio C Hamano
2022-07-21 1:37 3% ` Elijah Newren
2022-07-21 8:16 3% ` [PATCH v3 0/7] Fix merge restore state Elijah Newren via GitGitGadget
2022-07-21 8:16 2% ` [PATCH v3 2/7] merge-resolve: abort if index does not match HEAD Elijah Newren via GitGitGadget
2022-07-21 8:16 2% ` [PATCH v3 3/7] merge: do not abort early if one strategy fails to handle the merge Elijah Newren via GitGitGadget
2022-07-25 10:38 0% ` Ævar Arnfjörð Bjarmason
2022-07-21 8:16 2% ` [PATCH v3 4/7] merge: fix save_state() to work when there are stat-dirty files Elijah Newren via GitGitGadget
2022-07-22 5:15 3% ` [PATCH v4 0/7] Fix merge restore state Elijah Newren via GitGitGadget
2022-07-22 5:15 2% ` [PATCH v4 2/7] merge-resolve: abort if index does not match HEAD Elijah Newren via GitGitGadget
2022-07-22 10:27 0% ` Ævar Arnfjörð Bjarmason
2022-07-23 0:28 0% ` Elijah Newren
2022-07-22 5:15 2% ` [PATCH v4 3/7] merge: do not abort early if one strategy fails to handle the merge Elijah Newren via GitGitGadget
2022-07-22 10:47 0% ` Ævar Arnfjörð Bjarmason
2022-07-23 0:36 0% ` Elijah Newren
2022-07-22 5:15 2% ` [PATCH v4 4/7] merge: fix save_state() to work when there are stat-dirty files Elijah Newren via GitGitGadget
2022-07-23 1:53 3% ` [PATCH v5 0/8] Fix merge restore state Elijah Newren via GitGitGadget
2022-07-23 1:53 2% ` [PATCH v5 2/8] merge-resolve: abort if index does not match HEAD Elijah Newren via GitGitGadget
2022-07-23 1:53 2% ` [PATCH v5 4/8] merge: do not abort early if one strategy fails to handle the merge Elijah Newren via GitGitGadget
2022-07-23 1:53 2% ` [PATCH v5 5/8] merge: fix save_state() to work when there are stat-dirty files Elijah Newren via GitGitGadget
2022-06-22 19:32 3% What's cooking in git.git (Jun 2022, #07; Wed, 22) Junio C Hamano
2022-06-27 18:22 3% What's cooking in git.git (Jun 2022, #08; Mon, 27) Junio C Hamano
2022-07-01 23:08 3% What's cooking in git.git (Jul 2022, #01; Fri, 1) Junio C Hamano
2022-07-09 20:36 3% What's cooking in git.git (Jul 2022, #02; Fri, 8) Junio C Hamano
2022-07-12 17:07 3% What's cooking in git.git (Jul 2022, #03; Mon, 11) Junio C Hamano
2022-07-14 1:32 3% What's cooking in git.git (Jul 2022, #04; Wed, 13) Junio C Hamano
2022-07-17 3:46 0% ` en/merge-restore-to-pristine (Was: Re: What's cooking in git.git (Jul 2022, #04; Wed, 13)) Elijah Newren
2022-07-17 16:58 0% ` ZheNing Hu
2022-07-18 3:14 3% What's cooking in git.git (Jul 2022, #05; Sun, 17) Junio C Hamano
2022-07-20 1:20 3% What's cooking in git.git (Jul 2022, #06; Tue, 19) Junio C Hamano
2022-07-23 1:01 3% What's cooking in git.git (Jul 2022, #07; Fri, 22) Junio C Hamano
2022-07-23 2:28 0% ` en/merge-restore-to-pristine (Was: Re: What's cooking in git.git (Jul 2022, #07; Fri, 22)) Elijah Newren
2022-07-29 23:18 3% What's cooking in git.git (Jul 2022, #08; Fri, 29) Junio C Hamano
2022-08-01 22:59 3% What's cooking in git.git (Aug 2022, #01; Mon, 1) Junio C Hamano
2022-08-06 3:38 3% What's cooking in git.git (Aug 2022, #02; Fri, 5) Junio C Hamano
2022-09-16 2:37 3% [ANNOUNCE] Git v2.38.0-rc0 Junio C Hamano
2022-09-22 0:11 3% [ANNOUNCE] Git v2.38.0-rc1 Junio C Hamano
2022-09-27 21:10 3% [ANNOUNCE] Git v2.38.0-rc2 Junio C Hamano
2022-10-03 17:26 3% [ANNOUNCE] Git v2.38.0 Junio C Hamano
2022-10-12 21:23 3% What's cooking in git.git (Oct 2022, #04; Wed, 12) Junio C Hamano
2022-10-17 23:05 2% What's cooking in git.git (Oct 2022, #05; Mon, 17) Junio C Hamano
2022-10-20 1:31 3% What's cooking in git.git (Oct 2022, #06; Wed, 19) Junio C Hamano
2022-10-20 9:56 0% ` pw/rebase-reflog-fixes (was Re: What's cooking in git.git (Oct 2022, #06; Wed, 19)) Phillip Wood
2022-10-20 1:34 3% What's cooking in git.git (Oct 2022, #06; Wed, 19) Junio C Hamano
2022-10-26 18:43 3% What's cooking in git.git (Oct 2022, #07; Wed, 26) Junio C Hamano
2022-10-28 22:51 3% What's cooking in git.git (Oct 2022, #08; Fri, 28) Junio C Hamano
2022-10-31 5:31 3% What's cooking in git.git (Oct 2022, #09; Mon, 31) Taylor Blau
2022-11-03 17:05 [PATCH 00/17] leak fixes: use existing constructors & other trivia Ævar Arnfjörð Bjarmason
2022-11-03 17:06 2% ` [PATCH 14/17] sequencer.c: fix sequencer_continue() leak Ævar Arnfjörð Bjarmason
2022-11-23 7:25 3% [ANNOUNCE] Git v2.39.0-rc0 Junio C Hamano
2022-11-30 6:12 3% [ANNOUNCE] Git v2.39.0-rc1 Junio C Hamano
2022-12-06 4:00 3% [ANNOUNCE] Git v2.39.0-rc2 Junio C Hamano
2022-12-12 13:43 3% [ANNOUNCE] Git v2.39.0 Junio C Hamano
2023-05-20 8:01 I think there is error in merge documents - current branch Minnie Shi
2023-05-20 8:44 2% ` [PATCH] doc: merge: fix mention of `ORIG_HEAD` Kristoffer Haugsbakk
2023-05-20 9:25 2% ` Minnie Shi
2023-05-20 9:41 2% ` Minnie Shi
2023-05-20 22:27 ` I think there is error in merge documents - current branch Junio C Hamano
2023-05-21 12:23 ` Sergey Organov
2023-05-21 13:28 2% ` Minnie Shi
2023-05-21 13:49 0% ` Minnie Shi
2023-07-31 17:57 3% What's cooking in git.git (Jul 2023, #07; Mon, 31) Junio C Hamano
2023-08-02 18:10 2% What's cooking in git.git (Aug 2023, #01; Wed, 2) Junio C Hamano
2023-08-18 20:04 [PATCH] This fixes a minor memory leak (detected by LeakSanitizer) in git merge Kevin Backhouse via GitGitGadget
2023-08-24 14:12 3% ` [PATCH v2 0/2] " Kevin Backhouse via GitGitGadget
2023-09-20 14:00 [PATCH] attr: attr.allowInvalidSource config to allow invalid revision John Cai via GitGitGadget
2023-10-04 18:18 ` [PATCH v2 0/2] attr: add attr.tree and attr.allowInvalidSource configs John Cai via GitGitGadget
2023-10-04 18:18 ` [PATCH v2 1/2] attr: add attr.tree for setting the treeish to read attributes from John Cai via GitGitGadget
2023-10-04 23:45 1% ` Junio C Hamano
2023-10-06 17:20 0% ` Jonathan Tan
2023-09-27 19:49 [PATCH 00/30] Initial support for multiple hash functions Eric W. Biederman
2023-09-27 19:55 ` [PATCH 21/30] repository: Implement extensions.compatObjectFormat Eric W. Biederman
2023-09-27 21:39 ` Junio C Hamano
2023-09-28 20:18 ` Junio C Hamano
2023-09-29 16:59 ` Eric W. Biederman
2023-09-29 18:48 2% ` Junio C Hamano
2023-10-02 0:48 0% ` Eric W. Biederman
2023-10-08 6:45 [PATCH 00/25] Documentation fixes Elijah Newren via GitGitGadget
2023-10-08 6:45 1% ` [PATCH 01/25] documentation: wording improvements Elijah Newren via GitGitGadget
2023-10-08 6:45 4% ` [PATCH 14/25] documentation: fix choice of article Elijah Newren via GitGitGadget
2023-12-03 6:41 [PATCH 00/12] Additional header cleanups (removing unnecessary includes) Elijah Newren via GitGitGadget
2023-12-03 6:41 ` [PATCH 02/12] treewide: remove unnecessary includes in source files Elijah Newren via GitGitGadget
2023-12-03 13:15 2% ` Junio C Hamano
2024-03-12 9:10 [PATCH v2 0/16] allow multi-byte core.commentChar Jeff King
2024-03-12 9:17 ` [PATCH v2 16/16] config: " Jeff King
2024-03-13 18:23 ` Kristoffer Haugsbakk
2024-03-15 5:59 ` Jeff King
2024-03-15 7:16 ` Kristoffer Haugsbakk
2024-03-15 8:10 ` Jeff King
2024-03-26 22:10 ` Junio C Hamano
2024-03-27 7:46 ` Jeff King
2024-03-27 8:19 ` [PATCH 17/16] config: add core.commentString Jeff King
2024-03-27 16:13 2% ` Junio C Hamano
2024-04-01 19:09 What's cooking in git.git (Apr 2024, #01; Mon, 1) Junio C Hamano
2024-04-01 21:17 ` Taylor Blau
2024-04-01 22:09 ` Junio C Hamano
2024-04-01 23:08 2% ` Junio C Hamano
2024-04-01 23:27 0% ` Taylor Blau
2024-04-02 17:45 2% [BUG] "git range-diff" does not know X^! is a valid range Junio C Hamano
2024-04-02 20:24 0% ` René Scharfe
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).