]> git.ipfire.org Git - thirdparty/git.git/log
thirdparty/git.git
10 months agorebase: rewrite --(no-)autosquash documentation
Andy Koppe [Tue, 14 Nov 2023 21:43:39 +0000 (21:43 +0000)] 
rebase: rewrite --(no-)autosquash documentation

Rewrite the description of the rebase --(no-)autosquash options to try
to make it a bit clearer. Don't use "the '...'" to refer to part of a
commit message, mention how --interactive can be used to review the
todo list, and add a bit more detail on commit --squash/amend.

Signed-off-by: Andy Koppe <andy.koppe@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 months agorebase: support --autosquash without -i
Andy Koppe [Tue, 14 Nov 2023 21:43:38 +0000 (21:43 +0000)] 
rebase: support --autosquash without -i

The rebase --autosquash option is quietly ignored when used without
--interactive (apart from preventing preemptive fast-forwarding and
triggering conflicts with apply backend options).

Change that to support --autosquash without --interactive, by dropping
its restriction to REBASE_INTERACTIVE_EXCPLICIT mode. When used this
way, auto-squashing is done without opening the todo list editor.

Drop the -i requirement from the --autosquash description, and amend
t3415-rebase-autosquash.sh to test the option and the rebase.autoSquash
config variable with and without -i.

Signed-off-by: Andy Koppe <andy.koppe@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 months agorebase: fully ignore rebase.autoSquash without -i
Andy Koppe [Tue, 14 Nov 2023 21:43:37 +0000 (21:43 +0000)] 
rebase: fully ignore rebase.autoSquash without -i

Setting the rebase.autoSquash config variable to true implies a couple
of restrictions: it prevents preemptive fast-forwarding and it triggers
conflicts with apply backend options. However, it only actually results
in auto-squashing when combined with the --interactive (or -i) option,
due to code in run_specific_rebase() that disables auto-squashing unless
the REBASE_INTERACTIVE_EXPLICIT flag is set.

Doing autosquashing for rebase.autoSquash without --interactive would be
problematic in terms of backward compatibility, but conversely, there is
no need for the aforementioned restrictions without --interactive.

So drop the options.config_autosquash check from the conditions for
clearing allow_preemptive_ff, as the case where it is combined with
--interactive is already covered by the REBASE_INTERACTIVE_EXPLICIT
flag check above it.

Also drop the "apply options are incompatible with rebase.autoSquash"
error, because it is unreachable if it is restricted to --interactive,
as apply options already cause an error when used with --interactive.
Drop the tests for the error from t3422-rebase-incompatible-options.sh,
which has separate tests for the conflicts of --interactive with apply
options.

When neither --autosquash nor --no-autosquash are given, only set
options.autosquash to true if rebase.autosquash is combined with
--interactive.

Don't initialize options.config_autosquash to -1, as there is no need to
distinguish between rebase.autoSquash being unset or explicitly set to
false.

Finally, amend the rebase.autoSquash documentation to say it only
affects interactive mode.

Signed-off-by: Andy Koppe <andy.koppe@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 months agoRelNotes: minor wording fixes in 2.43.0 release notes
Elijah Newren [Sat, 11 Nov 2023 04:02:20 +0000 (04:02 +0000)] 
RelNotes: minor wording fixes in 2.43.0 release notes

Signed-off-by: Elijah Newren <newren@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 months agoGit 2.43-rc1 v2.43.0-rc1
Junio C Hamano [Wed, 8 Nov 2023 06:04:27 +0000 (15:04 +0900)] 
Git 2.43-rc1

Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 months agoMerge branch 'tb/rev-list-unpacked-fix'
Junio C Hamano [Wed, 8 Nov 2023 06:04:42 +0000 (15:04 +0900)] 
Merge branch 'tb/rev-list-unpacked-fix'

"git rev-list --unpacked --objects" failed to exclude packed
non-commit objects, which has been corrected.

* tb/rev-list-unpacked-fix:
  pack-bitmap: drop --unpacked non-commit objects from results
  list-objects: drop --unpacked non-commit objects from results

10 months agoMerge branch 'ps/leakfixes'
Junio C Hamano [Wed, 8 Nov 2023 06:04:41 +0000 (15:04 +0900)] 
Merge branch 'ps/leakfixes'

Leakfix.

* ps/leakfixes:
  setup: fix leaking repository format
  setup: refactor `upgrade_repository_format()` to have common exit
  shallow: fix memory leak when registering shallow roots
  test-bloom: stop setting up Git directory twice

10 months agoPrepare for -rc1
Junio C Hamano [Wed, 8 Nov 2023 02:03:26 +0000 (11:03 +0900)] 
Prepare for -rc1

Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 months agoMerge branch 'jc/test-i18ngrep'
Junio C Hamano [Wed, 8 Nov 2023 02:04:02 +0000 (11:04 +0900)] 
Merge branch 'jc/test-i18ngrep'

Another step to deprecate test_i18ngrep.

* jc/test-i18ngrep:
  tests: teach callers of test_i18ngrep to use test_grep
  test framework: further deprecate test_i18ngrep

10 months agoMerge branch 'la/strvec-header-fix'
Junio C Hamano [Wed, 8 Nov 2023 02:04:01 +0000 (11:04 +0900)] 
Merge branch 'la/strvec-header-fix'

Code clean-up.

* la/strvec-header-fix:
  strvec: drop unnecessary include of hex.h

10 months agoMerge branch 'bc/merge-file-object-input'
Junio C Hamano [Wed, 8 Nov 2023 02:04:01 +0000 (11:04 +0900)] 
Merge branch 'bc/merge-file-object-input'

"git merge-file" learns a mode to read three contents to be merged
from blob objects.

* bc/merge-file-object-input:
  merge-file: add an option to process object IDs
  git-merge-file doc: drop "-file" from argument placeholders

10 months agoMerge branch 'kn/rev-list-missing-fix'
Junio C Hamano [Wed, 8 Nov 2023 02:04:01 +0000 (11:04 +0900)] 
Merge branch 'kn/rev-list-missing-fix'

"git rev-list --missing" did not work for missing commit objects,
which has been corrected.

* kn/rev-list-missing-fix:
  rev-list: add commit object support in `--missing` option
  rev-list: move `show_commit()` to the bottom
  revision: rename bit to `do_not_die_on_missing_objects`

10 months agoMerge branch 'an/clang-format-typofix'
Junio C Hamano [Wed, 8 Nov 2023 02:04:00 +0000 (11:04 +0900)] 
Merge branch 'an/clang-format-typofix'

Typofix.

* an/clang-format-typofix:
  clang-format: fix typo in comment

10 months agoMerge branch 'tb/format-pack-doc-update'
Junio C Hamano [Wed, 8 Nov 2023 02:04:00 +0000 (11:04 +0900)] 
Merge branch 'tb/format-pack-doc-update'

Doc update.

* tb/format-pack-doc-update:
  Documentation/gitformat-pack.txt: fix incorrect MIDX documentation
  Documentation/gitformat-pack.txt: fix typo

10 months agoMerge branch 'ps/show-ref'
Junio C Hamano [Wed, 8 Nov 2023 02:03:59 +0000 (11:03 +0900)] 
Merge branch 'ps/show-ref'

Teach "git show-ref" a mode to check the existence of a ref.

* ps/show-ref:
  t: use git-show-ref(1) to check for ref existence
  builtin/show-ref: add new mode to check for reference existence
  builtin/show-ref: explicitly spell out different modes in synopsis
  builtin/show-ref: ensure mutual exclusiveness of subcommands
  builtin/show-ref: refactor options for patterns subcommand
  builtin/show-ref: stop using global vars for `show_one()`
  builtin/show-ref: stop using global variable to count matches
  builtin/show-ref: refactor `--exclude-existing` options
  builtin/show-ref: fix dead code when passing patterns
  builtin/show-ref: fix leaking string buffer
  builtin/show-ref: split up different subcommands
  builtin/show-ref: convert pattern to a local variable

10 months agoMerge branch 'ps/do-not-trust-commit-graph-blindly-for-existence'
Junio C Hamano [Wed, 8 Nov 2023 02:03:59 +0000 (11:03 +0900)] 
Merge branch 'ps/do-not-trust-commit-graph-blindly-for-existence'

The codepath to traverse the commit-graph learned to notice that a
commit is missing (e.g., corrupt repository lost an object), even
though it knows something about the commit (like its parents) from
what is in commit-graph.

* ps/do-not-trust-commit-graph-blindly-for-existence:
  commit: detect commits that exist in commit-graph but not in the ODB
  commit-graph: introduce envvar to disable commit existence checks

10 months agoMerge branch 'js/ci-use-macos-13'
Junio C Hamano [Wed, 8 Nov 2023 02:03:59 +0000 (11:03 +0900)] 
Merge branch 'js/ci-use-macos-13'

Replace macos-12 used at GitHub CI with macos-13.

* js/ci-use-macos-13:
  ci: upgrade to using macos-13

10 months agoMerge branch 'jk/chunk-bounds'
Junio C Hamano [Wed, 8 Nov 2023 02:03:58 +0000 (11:03 +0900)] 
Merge branch 'jk/chunk-bounds'

Test portability fix.

* jk/chunk-bounds:
  t: avoid perl's pack/unpack "Q" specifier

10 months agoMerge branch 'jk/tree-name-and-depth-limit'
Junio C Hamano [Wed, 8 Nov 2023 02:03:58 +0000 (11:03 +0900)] 
Merge branch 'jk/tree-name-and-depth-limit'

Further limit tree depth max to avoid Windows build running out of
the stack space.

* jk/tree-name-and-depth-limit:
  max_tree_depth: lower it for MSVC to avoid stack overflows

10 months agopack-bitmap: drop --unpacked non-commit objects from results
Taylor Blau [Mon, 6 Nov 2023 22:56:33 +0000 (17:56 -0500)] 
pack-bitmap: drop --unpacked non-commit objects from results

When performing revision queries with `--objects` and
`--use-bitmap-index`, the output may incorrectly contain objects which
are packed, even when the `--unpacked` option is given. This affects
traversals, but also other querying operations, like `--count`,
`--disk-usage`, etc.

Like in the previous commit, the fix is to exclude those objects from
the result set before they are shown to the user (or, in this case,
before the bitmap containing the result of the traversal is enumerated
and its objects listed).

This is performed by a new function in pack-bitmap.c, called
`filter_packed_objects_from_bitmap()`. Note that we do not have to
inspect individual bits in the result bitmap, since we know that the
first N (where N is the number of objects in the bitmap's pack/MIDX)
bits correspond to objects which packed by definition.

In other words, for an object to have a bitmap position (not in the
extended index), it must appear in either the bitmap's pack or one of
the packs in its MIDX.

This presents an appealing optimization to us, which is that we can
simply memset() the corresponding number of `eword_t`'s to zero,
provided that we handle any objects which spill into the next word (but
don't occupy all 64 bits of the word itself).

We only have to handle objects in the bitmap's extended index. These
objects may (or may not) appear in one or more pack(s). Since these
objects are known to not appear in either the bitmap's MIDX or pack,
they may be stored as loose, appear in other pack(s), or both.

Before returning a bitmap containing the result of the traversal back to
the caller, drop any bits from the extended index which appear in one or
more packs. This implements the correct behavior for rev-list operations
which use the bitmap index to compute their result.

Co-authored-by: Jeff King <peff@peff.net>
Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Taylor Blau <me@ttaylorr.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 months agolist-objects: drop --unpacked non-commit objects from results
Taylor Blau [Mon, 6 Nov 2023 22:56:30 +0000 (17:56 -0500)] 
list-objects: drop --unpacked non-commit objects from results

In git-rev-list(1), we describe the `--unpacked` option as:

    Only useful with `--objects`; print the object IDs that are not in
    packs.

This is true of commits, which we discard via get_commit_action(), but
not of the objects they reach. So if we ask for an --objects traversal
with --unpacked, we may get arbitrarily many objects which are indeed
packed.

I am nearly certain this behavior dates back to the introduction of
`--unpacked` via 12d2a18780 ("git rev-list --unpacked" shows only
unpacked commits, 2005-07-03), but I couldn't get that revision of Git
to compile for me. At least as early as v2.0.0 this has been subtly
broken:

    $ git.compile --version
    git version 2.0.0

    $ git.compile rev-list --objects --all --unpacked
    72791fe96c93f9ec5c311b8bc966ab349b3b5bbe
    05713d991c18bbeef7e154f99660005311b5004d v1.0
    153ed8b7719c6f5a68ce7ffc43133e95a6ac0fdb
    8e4020bb5a8d8c873b25de15933e75cc0fc275df one
    9200b628cf9dc883a85a7abc8d6e6730baee589c two
    3e6b46e1b7e3b91acce99f6a823104c28aae0b58 unpacked.t

There, only the first, third, and sixth entries are loose, with the
remaining set of objects belonging to at least one pack.

The implications for this are relatively benign: bare 'git repack'
invocations which invoke pack-objects with --unpacked are impacted, and
at worst we'll store a few extra objects that should have been excluded.

Arguably changing this behavior is a backwards-incompatible change,
since it alters the set of objects emitted from rev-list queries with
`--objects` and `--unpacked`. But I argue that this change is still
sensible, since the existing implementation deviates from
clearly-written documentation.

The fix here is straightforward: avoid showing any non-commit objects
which are contained in packs by discarding them within list-objects.c,
before they are shown to the user. Note that similar treatment for
`list-objects.c::show_commit()` is not needed, since that case is
already handled by `revision.c::get_commit_action()`.

Co-authored-by: Jeff King <peff@peff.net>
Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Taylor Blau <me@ttaylorr.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 months agoRelNotes: improve wording of credential helper notes
Todd Zullinger [Fri, 3 Nov 2023 14:17:51 +0000 (10:17 -0400)] 
RelNotes: improve wording of credential helper notes

Offer a slightly more verbose description of the issue fixed by
7144dee3ec (credential/libsecret: erase matching creds only, 2023-07-26)
and cb626f8e5c (credential/wincred: erase matching creds only,
2023-07-26).

Signed-off-by: Todd Zullinger <tmz@pobox.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 months agoRelNotes: minor typo fixes in 2.43.0 draft
Todd Zullinger [Fri, 3 Nov 2023 14:17:50 +0000 (10:17 -0400)] 
RelNotes: minor typo fixes in 2.43.0 draft

Signed-off-by: Todd Zullinger <tmz@pobox.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 months agoA bit more before -rc1
Junio C Hamano [Tue, 7 Nov 2023 00:38:26 +0000 (09:38 +0900)] 
A bit more before -rc1

10 months agoMerge branch 'rc/trace-upload-pack'
Junio C Hamano [Tue, 7 Nov 2023 01:26:45 +0000 (10:26 +0900)] 
Merge branch 'rc/trace-upload-pack'

Trace2 update.

* rc/trace-upload-pack:
  upload-pack: add tracing for fetches

10 months agoMerge branch 'es/bugreport-no-extra-arg'
Junio C Hamano [Tue, 7 Nov 2023 01:26:44 +0000 (10:26 +0900)] 
Merge branch 'es/bugreport-no-extra-arg'

"git bugreport" learned to complain when it received a command line
argument that it will not use.

* es/bugreport-no-extra-arg:
  bugreport: reject positional arguments
  t0091-bugreport: stop using i18ngrep

10 months agoMerge branch 'js/my-first-contribution-update'
Junio C Hamano [Tue, 7 Nov 2023 01:26:44 +0000 (10:26 +0900)] 
Merge branch 'js/my-first-contribution-update'

Documentation update.

* js/my-first-contribution-update:
  Include gettext.h in MyFirstContribution tutorial

10 months agoMerge branch 'ms/send-email-validate-fix'
Junio C Hamano [Tue, 7 Nov 2023 01:26:44 +0000 (10:26 +0900)] 
Merge branch 'ms/send-email-validate-fix'

"git send-email" did not have certain pieces of data computed yet
when it tried to validate the outging messages and its recipient
addresses, which has been sorted out.

* ms/send-email-validate-fix:
  send-email: move validation code below process_address_list

10 months agoMerge branch 'rs/reflog-expire-single-worktree-fix'
Junio C Hamano [Tue, 7 Nov 2023 01:26:43 +0000 (10:26 +0900)] 
Merge branch 'rs/reflog-expire-single-worktree-fix'

"git reflog expire --single-worktree" has been broken for the past
20 months or so, which has been corrected.

* rs/reflog-expire-single-worktree-fix:
  reflog: fix expire --single-worktree

10 months agoMerge branch 'rs/fix-arghelp'
Junio C Hamano [Tue, 7 Nov 2023 01:26:43 +0000 (10:26 +0900)] 
Merge branch 'rs/fix-arghelp'

Doc and help update.

* rs/fix-arghelp:
  am, rebase: fix arghelp syntax of --empty

10 months agoMerge branch 'rs/parse-options-cmdmode'
Junio C Hamano [Tue, 7 Nov 2023 01:26:43 +0000 (10:26 +0900)] 
Merge branch 'rs/parse-options-cmdmode'

parse-options improvements for OPT_CMDMODE options.

* rs/parse-options-cmdmode:
  am: simplify --show-current-patch handling
  parse-options: make CMDMODE errors more precise

10 months agoMerge branch 'jc/grep-f-relative-to-cwd'
Junio C Hamano [Tue, 7 Nov 2023 01:26:43 +0000 (10:26 +0900)] 
Merge branch 'jc/grep-f-relative-to-cwd'

"cd sub && git grep -f patterns" tried to read "patterns" file at
the top level of the working tree; it has been corrected to read
"sub/patterns" instead.

* jc/grep-f-relative-to-cwd:
  grep: -f <path> is relative to $cwd

10 months agoMerge branch 'ar/submitting-patches-doc-update'
Junio C Hamano [Tue, 7 Nov 2023 01:26:42 +0000 (10:26 +0900)] 
Merge branch 'ar/submitting-patches-doc-update'

Doc update.

* ar/submitting-patches-doc-update:
  SubmittingPatches: call gitk's command "Copy commit reference"

10 months agosetup: fix leaking repository format
Patrick Steinhardt [Mon, 6 Nov 2023 10:46:05 +0000 (11:46 +0100)] 
setup: fix leaking repository format

While populating the `repository_format` structure may cause us to
allocate memory, we do not call `clear_repository_format()` in some
places and thus potentially leak memory. Fix this.

Signed-off-by: Patrick Steinhardt <ps@pks.im>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 months agosetup: refactor `upgrade_repository_format()` to have common exit
Patrick Steinhardt [Mon, 6 Nov 2023 10:46:01 +0000 (11:46 +0100)] 
setup: refactor `upgrade_repository_format()` to have common exit

The `upgrade_repository_format()` function has multiple exit paths,
which means that there is no common cleanup of acquired resources.
While this isn't much of a problem right now, we're about to fix a
memory leak that would require us to free the resource in every one of
those exit paths.

Refactor the code to have a common exit path so that the subsequent
memory leak fix becomes easier to implement.

Signed-off-by: Patrick Steinhardt <ps@pks.im>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 months agoshallow: fix memory leak when registering shallow roots
Patrick Steinhardt [Mon, 6 Nov 2023 10:45:57 +0000 (11:45 +0100)] 
shallow: fix memory leak when registering shallow roots

When registering shallow roots, we unset the list of parents of the
to-be-registered commit if it's already been parsed. This causes us to
leak memory though because we never free this list. Fix this.

Signed-off-by: Patrick Steinhardt <ps@pks.im>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 months agotest-bloom: stop setting up Git directory twice
Patrick Steinhardt [Mon, 6 Nov 2023 10:45:53 +0000 (11:45 +0100)] 
test-bloom: stop setting up Git directory twice

We're setting up the Git directory twice in the `test-tool bloom`
helper, once at the beginning of `cmd_bloom()` and once in the local
subcommand implementation `get_bloom_filter_for_commit()`. This can lead
to memory leaks as we'll overwrite variables of `the_repository` with
newly allocated data structures. On top of that it's simply unnecessary.

Fix this by only setting up the Git directory once.

Signed-off-by: Patrick Steinhardt <ps@pks.im>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 months agot: avoid perl's pack/unpack "Q" specifier
Jeff King [Fri, 3 Nov 2023 16:20:19 +0000 (12:20 -0400)] 
t: avoid perl's pack/unpack "Q" specifier

The perl script introduced by 86b008ee61 (t: add library for munging
chunk-format files, 2023-10-09) uses pack("Q") and unpack("Q") to read
and write 64-bit values ("quadwords" in perl parlance) from the on-disk
chunk files. However, some builds of perl may not support 64-bit
integers at all, and throw an exception here. While some 32-bit
platforms may still support 64-bit integers in perl (such as our linux32
CI environment), others reportedly don't (the NonStop 32-bit builds).

We can work around this by treating the 64-bit values as two 32-bit
values. We can't ever combine them into a single 64-bit value, but in
practice this is OK. These are representing file offsets, and our files
are much smaller than 4GB. So the upper half of the 64-bit value will
always be 0.

We can just introduce a few helper functions which perform the
translation and double-check our assumptions.

Reported-by: Randall S. Becker <randall.becker@nexbridge.ca>
Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 months agoci: upgrade to using macos-13
Johannes Schindelin [Fri, 3 Nov 2023 07:27:35 +0000 (07:27 +0000)] 
ci: upgrade to using macos-13

In April, GitHub announced that the `macos-13` pool is available:
https://github.blog/changelog/2023-04-24-github-actions-macos-13-is-now-available/.
It is only a matter of time until the `macos-12` pool is going away,
therefore we should switch now, without pressure of a looming deadline.

Since the `macos-13` runners no longer include Python2, we also drop
specifically testing with Python2 and switch uniformly to Python3, see
https://github.com/actions/runner-images/blob/HEAD/images/macos/macos-13-Readme.md
for details about the software available on the `macos-13` pool's
runners.

Also, on macOS 13, Homebrew seems to install a `gcc@9` package that no
longer comes with a regular `unistd.h` (there seems only to be a
`ssp/unistd.h`), and hence builds would fail with:

    In file included from base85.c:1:
    git-compat-util.h:223:10: fatal error: unistd.h: No such file or directory
      223 | #include <unistd.h>
          |          ^~~~~~~~~~
    compilation terminated.

The reason why we install GCC v9.x explicitly is historical, and back in
the days it was because it was the _newest_ version available via
Homebrew: 176441bfb58 (ci: build Git with GCC 9 in the 'osx-gcc' build
job, 2019-11-27).

To reinstate the spirit of that commit _and_ to fix that build failure,
let's switch to the now-newest GCC version: v13.x.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 months agostrvec: drop unnecessary include of hex.h
Linus Arver [Thu, 2 Nov 2023 20:51:17 +0000 (20:51 +0000)] 
strvec: drop unnecessary include of hex.h

In 41771fa435 (cache.h: remove dependence on hex.h; make other files
include it explicitly, 2023-02-24) we added this as part of a larger
mechanical refactor. But strvec doesn't actually depend on hex.h, so
remove it.

Signed-off-by: Linus Arver <linusa@google.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 months agotests: teach callers of test_i18ngrep to use test_grep
Junio C Hamano [Tue, 31 Oct 2023 05:23:30 +0000 (14:23 +0900)] 
tests: teach callers of test_i18ngrep to use test_grep

They are equivalents and the former still exists, so as long as the
only change this commit makes are to rewrite test_i18ngrep to
test_grep, there won't be any new bug, even if there still are
callers of test_i18ngrep remaining in the tree, or when merged to
other topics that add new uses of test_i18ngrep.

This patch was produced more or less with

    git grep -l -e 'test_i18ngrep ' 't/t[0-9][0-9][0-9][0-9]-*.sh' |
    xargs perl -p -i -e 's/test_i18ngrep /test_grep /'

and a good way to sanity check the result yourself is to run the
above in a checkout of c4603c1c (test framework: further deprecate
test_i18ngrep, 2023-10-31) and compare the resulting working tree
contents with the result of applying this patch to the same commit.
You'll see that test_i18ngrep in a few t/lib-*.sh files corrected,
in addition to the manual reproduction.

Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 months agoGit 2.43-rc0 v2.43.0-rc0
Junio C Hamano [Thu, 2 Nov 2023 08:09:48 +0000 (17:09 +0900)] 
Git 2.43-rc0

Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 months agoGit 2.42.1 v2.42.1
Junio C Hamano [Thu, 2 Nov 2023 07:38:18 +0000 (16:38 +0900)] 
Git 2.42.1

Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 months agoMerge branch 'ms/doc-push-fix' into maint-2.42
Junio C Hamano [Thu, 2 Nov 2023 07:53:28 +0000 (16:53 +0900)] 
Merge branch 'ms/doc-push-fix' into maint-2.42

Docfix.

* ms/doc-push-fix:
  git-push doc: more visibility for -q option

10 months agoMerge branch 'jc/commit-new-underscore-index-fix' into maint-2.42
Junio C Hamano [Thu, 2 Nov 2023 07:53:28 +0000 (16:53 +0900)] 
Merge branch 'jc/commit-new-underscore-index-fix' into maint-2.42

Message fix.

* jc/commit-new-underscore-index-fix:
  commit: do not use cryptic "new_index" in end-user facing messages

10 months agoMerge branch 'wx/merge-ort-comment-typofix' into maint-2.42
Junio C Hamano [Thu, 2 Nov 2023 07:53:27 +0000 (16:53 +0900)] 
Merge branch 'wx/merge-ort-comment-typofix' into maint-2.42

Typofix.

* wx/merge-ort-comment-typofix:
  merge-ort.c: fix typo 'neeed' to 'needed'

10 months agoMerge branch 'ps/git-repack-doc-fixes' into maint-2.42
Junio C Hamano [Thu, 2 Nov 2023 07:53:27 +0000 (16:53 +0900)] 
Merge branch 'ps/git-repack-doc-fixes' into maint-2.42

Doc updates.

* ps/git-repack-doc-fixes:
  doc/git-repack: don't mention nonexistent "--unpacked" option
  doc/git-repack: fix syntax for `-g` shorthand option

10 months agoMerge branch 'ni/die-message-fix-for-git-add' into maint-2.42
Junio C Hamano [Thu, 2 Nov 2023 07:53:27 +0000 (16:53 +0900)] 
Merge branch 'ni/die-message-fix-for-git-add' into maint-2.42

Message updates.

* ni/die-message-fix-for-git-add:
  builtin/add.c: clean up die() messages

10 months agoMerge branch 'jc/am-doc-whitespace-action-fix' into maint-2.42
Junio C Hamano [Thu, 2 Nov 2023 07:53:27 +0000 (16:53 +0900)] 
Merge branch 'jc/am-doc-whitespace-action-fix' into maint-2.42

Docfix.

* jc/am-doc-whitespace-action-fix:
  am: align placeholder for --whitespace option with apply

10 months agoMerge branch 'jc/update-list-references-to-lore' into maint-2.42
Junio C Hamano [Thu, 2 Nov 2023 07:53:26 +0000 (16:53 +0900)] 
Merge branch 'jc/update-list-references-to-lore' into maint-2.42

Doc update.

* jc/update-list-references-to-lore:
  doc: update list archive reference to use lore.kernel.org

10 months agoMerge branch 'ps/rewritten-is-per-worktree-doc' into maint-2.42
Junio C Hamano [Thu, 2 Nov 2023 07:53:26 +0000 (16:53 +0900)] 
Merge branch 'ps/rewritten-is-per-worktree-doc' into maint-2.42

Doc update.

* ps/rewritten-is-per-worktree-doc:
  doc/git-worktree: mention "refs/rewritten" as per-worktree refs

10 months agoMerge branch 'sn/cat-file-doc-update' into maint-2.42
Junio C Hamano [Thu, 2 Nov 2023 07:53:26 +0000 (16:53 +0900)] 
Merge branch 'sn/cat-file-doc-update' into maint-2.42

"git cat-file" documentation updates.

* sn/cat-file-doc-update:
  doc/cat-file: make synopsis and description less confusing

10 months agoMerge branch 'jk/decoration-and-other-leak-fixes' into maint-2.42
Junio C Hamano [Thu, 2 Nov 2023 07:53:26 +0000 (16:53 +0900)] 
Merge branch 'jk/decoration-and-other-leak-fixes' into maint-2.42

Leakfix.

* jk/decoration-and-other-leak-fixes:
  daemon: free listen_addr before returning
  revision: clear decoration structs during release_revisions()
  decorate: add clear_decoration() function

10 months agoMerge branch 'rs/parse-opt-ctx-cleanup' into maint-2.42
Junio C Hamano [Thu, 2 Nov 2023 07:53:26 +0000 (16:53 +0900)] 
Merge branch 'rs/parse-opt-ctx-cleanup' into maint-2.42

Code clean-up.

* rs/parse-opt-ctx-cleanup:
  parse-options: drop unused parse_opt_ctx_t member

10 months agoMerge branch 'ob/am-msgfix' into maint-2.42
Junio C Hamano [Thu, 2 Nov 2023 07:53:25 +0000 (16:53 +0900)] 
Merge branch 'ob/am-msgfix' into maint-2.42

The parameters to generate an error message have been corrected.

* ob/am-msgfix:
  am: fix error message in parse_opt_show_current_patch()

10 months agoMerge branch 'hy/doc-show-is-like-log-not-diff-tree' into maint-2.42
Junio C Hamano [Thu, 2 Nov 2023 07:53:25 +0000 (16:53 +0900)] 
Merge branch 'hy/doc-show-is-like-log-not-diff-tree' into maint-2.42

Doc update.

* hy/doc-show-is-like-log-not-diff-tree:
  show doc: redirect user to git log manual instead of git diff-tree

10 months agoMerge branch 'ch/clean-docfix' into maint-2.42
Junio C Hamano [Thu, 2 Nov 2023 07:53:25 +0000 (16:53 +0900)] 
Merge branch 'ch/clean-docfix' into maint-2.42

Typofix.

* ch/clean-docfix:
  git-clean doc: fix "without do cleaning" typo

10 months agoMerge branch 'eg/config-type-path-docfix' into maint-2.42
Junio C Hamano [Thu, 2 Nov 2023 07:53:24 +0000 (16:53 +0900)] 
Merge branch 'eg/config-type-path-docfix' into maint-2.42

Typofix.

* eg/config-type-path-docfix:
  git-config: fix misworded --type=path explanation

10 months agoMerge branch 'ob/t3404-typofix' into maint-2.42
Junio C Hamano [Thu, 2 Nov 2023 07:53:24 +0000 (16:53 +0900)] 
Merge branch 'ob/t3404-typofix' into maint-2.42

Code clean-up.

* ob/t3404-typofix:
  t3404-rebase-interactive.sh: fix typos in title of a rewording test

10 months agoMerge branch 'ob/sequencer-remove-dead-code' into maint-2.42
Junio C Hamano [Thu, 2 Nov 2023 07:53:24 +0000 (16:53 +0900)] 
Merge branch 'ob/sequencer-remove-dead-code' into maint-2.42

Code clean-up.

* ob/sequencer-remove-dead-code:
  sequencer: remove unreachable exit condition in pick_commits()

10 months agoMerge branch 'rs/name-rev-use-opt-hidden-bool' into maint-2.42
Junio C Hamano [Thu, 2 Nov 2023 07:53:24 +0000 (16:53 +0900)] 
Merge branch 'rs/name-rev-use-opt-hidden-bool' into maint-2.42

Simplify use of parse-options API a bit.

* rs/name-rev-use-opt-hidden-bool:
  name-rev: use OPT_HIDDEN_BOOL for --peel-tag

10 months agoMerge branch 'rs/grep-parseopt-simplify' into maint-2.42
Junio C Hamano [Thu, 2 Nov 2023 07:53:23 +0000 (16:53 +0900)] 
Merge branch 'rs/grep-parseopt-simplify' into maint-2.42

Simplify use of parse-options API a bit.

* rs/grep-parseopt-simplify:
  grep: use OPT_INTEGER_F for --max-depth

10 months agoMerge branch 'ob/sequencer-reword-error-message' into maint-2.42
Junio C Hamano [Thu, 2 Nov 2023 07:53:23 +0000 (16:53 +0900)] 
Merge branch 'ob/sequencer-reword-error-message' into maint-2.42

Update an error message (which would probably never been seen).

* ob/sequencer-reword-error-message:
  sequencer: fix error message on failure to copy SQUASH_MSG

10 months agoMerge branch 'bc/more-git-var' into maint-2.42
Junio C Hamano [Thu, 2 Nov 2023 07:53:23 +0000 (16:53 +0900)] 
Merge branch 'bc/more-git-var' into maint-2.42

Fix-up for a topic that already has graduated.

* bc/more-git-var:
  var: avoid a segmentation fault when `HOME` is unset

10 months agoMerge branch 'jk/ci-retire-allow-ref' into maint-2.42
Junio C Hamano [Thu, 2 Nov 2023 07:53:22 +0000 (16:53 +0900)] 
Merge branch 'jk/ci-retire-allow-ref' into maint-2.42

CI update.

* jk/ci-retire-allow-ref:
  ci: deprecate ci/config/allow-ref script
  ci: allow branch selection through "vars"

10 months agoMerge branch 'ws/git-svn-retire-faketerm' into maint-2.42
Junio C Hamano [Thu, 2 Nov 2023 07:53:22 +0000 (16:53 +0900)] 
Merge branch 'ws/git-svn-retire-faketerm' into maint-2.42

Code clean-up.

* ws/git-svn-retire-faketerm:
  git-svn: drop FakeTerm hack

10 months agoMerge branch 'ch/t6300-verify-commit-test-cleanup' into maint-2.42
Junio C Hamano [Thu, 2 Nov 2023 07:53:22 +0000 (16:53 +0900)] 
Merge branch 'ch/t6300-verify-commit-test-cleanup' into maint-2.42

Test clean-up.

* ch/t6300-verify-commit-test-cleanup:
  t/t6300: drop magic filtering
  t/lib-gpg: forcibly run a trustdb update

10 months agoMerge branch 'jc/mv-d-to-d-error-message-fix' into maint-2.42
Junio C Hamano [Thu, 2 Nov 2023 07:53:22 +0000 (16:53 +0900)] 
Merge branch 'jc/mv-d-to-d-error-message-fix' into maint-2.42

Typofix in an error message.

* jc/mv-d-to-d-error-message-fix:
  mv: fix error for moving directory to another

10 months agoMerge branch 'ja/worktree-orphan' into maint-2.42
Junio C Hamano [Thu, 2 Nov 2023 07:53:21 +0000 (16:53 +0900)] 
Merge branch 'ja/worktree-orphan' into maint-2.42

Typofix in an error message.

* ja/worktree-orphan:
  builtin/worktree.c: fix typo in "forgot fetch" msg

10 months agoMerge branch 'ob/t9001-indent-fix' into maint-2.42
Junio C Hamano [Thu, 2 Nov 2023 07:53:21 +0000 (16:53 +0900)] 
Merge branch 'ob/t9001-indent-fix' into maint-2.42

Test style fix.

* ob/t9001-indent-fix:
  t9001: fix indentation in test_no_confirm()

10 months agoMerge branch 'jk/function-pointer-mismatches-fix' into maint-2.42
Junio C Hamano [Thu, 2 Nov 2023 07:53:20 +0000 (16:53 +0900)] 
Merge branch 'jk/function-pointer-mismatches-fix' into maint-2.42

Code clean-up to please clang-18.

* jk/function-pointer-mismatches-fix:
  hashmap: use expected signatures for comparison functions

10 months agoMerge branch 'ds/upload-pack-error-sequence-fix' into maint-2.42
Junio C Hamano [Thu, 2 Nov 2023 07:53:20 +0000 (16:53 +0900)] 
Merge branch 'ds/upload-pack-error-sequence-fix' into maint-2.42

Error message generation fix.

* ds/upload-pack-error-sequence-fix:
  upload-pack: fix exit code when denying fetch of unreachable object ID
  upload-pack: fix race condition in error messages

10 months agoMerge branch 'ws/git-push-doc-grammofix' into maint-2.42
Junio C Hamano [Thu, 2 Nov 2023 07:53:20 +0000 (16:53 +0900)] 
Merge branch 'ws/git-push-doc-grammofix' into maint-2.42

Doc update.

* ws/git-push-doc-grammofix:
  git-push.txt: fix grammar

10 months agoMerge branch 'jk/test-pass-ubsan-options-to-http-test' into maint-2.42
Junio C Hamano [Thu, 2 Nov 2023 07:53:20 +0000 (16:53 +0900)] 
Merge branch 'jk/test-pass-ubsan-options-to-http-test' into maint-2.42

UBSAN options were not propagated through the test framework to git
run via the httpd, unlike ASAN options, which has been corrected.

* jk/test-pass-ubsan-options-to-http-test:
  test-lib: set UBSAN_OPTIONS to match ASan

10 months agoMerge branch 'tb/send-email-extract-valid-address-error-message-fix' into maint-2.42
Junio C Hamano [Thu, 2 Nov 2023 07:53:19 +0000 (16:53 +0900)] 
Merge branch 'tb/send-email-extract-valid-address-error-message-fix' into maint-2.42

An error message given by "git send-email" when given a malformed
address did not give correct information, which has been corrected.

* tb/send-email-extract-valid-address-error-message-fix:
  git-send-email.perl: avoid printing undef when validating addresses

10 months agoMerge branch 'jk/redact-h2h3-headers-fix' into maint-2.42
Junio C Hamano [Thu, 2 Nov 2023 07:53:19 +0000 (16:53 +0900)] 
Merge branch 'jk/redact-h2h3-headers-fix' into maint-2.42

HTTP Header redaction code has been adjusted for a newer version of
cURL library that shows its traces differently from earlier
versions.

* jk/redact-h2h3-headers-fix:
  http: update curl http/2 info matching for curl 8.3.0
  http: factor out matching of curl http/2 trace lines

10 months agoMerge branch 'pb/completion-aliases-doc' into maint-2.42
Junio C Hamano [Thu, 2 Nov 2023 07:53:19 +0000 (16:53 +0900)] 
Merge branch 'pb/completion-aliases-doc' into maint-2.42

Clarify how "alias.foo = : git cmd ; aliased-command-string" should
be spelled with necessary whitespaces around punctuation marks to
work.

* pb/completion-aliases-doc:
  completion: improve doc for complex aliases

10 months agoMerge branch 'js/diff-cached-fsmonitor-fix' into maint-2.42
Junio C Hamano [Thu, 2 Nov 2023 07:53:19 +0000 (16:53 +0900)] 
Merge branch 'js/diff-cached-fsmonitor-fix' into maint-2.42

"git diff --cached" codepath did not fill the necessary stat
information for a file when fsmonitor knows it is clean and ended
up behaving as if it is not clean, which has been corrected.

* js/diff-cached-fsmonitor-fix:
  diff-lib: fix check_removed when fsmonitor is on

10 months agoMerge branch 'js/systemd-timers-wsl-fix' into maint-2.42
Junio C Hamano [Thu, 2 Nov 2023 07:53:18 +0000 (16:53 +0900)] 
Merge branch 'js/systemd-timers-wsl-fix' into maint-2.42

Update "git maintainance" timers' implementation based on systemd
timers to work with WSL.

* js/systemd-timers-wsl-fix:
  maintenance(systemd): support the Windows Subsystem for Linux

10 months agoMerge branch 'pw/diff-no-index-from-named-pipes' into maint-2.42
Junio C Hamano [Thu, 2 Nov 2023 07:53:18 +0000 (16:53 +0900)] 
Merge branch 'pw/diff-no-index-from-named-pipes' into maint-2.42

"git diff --no-index -R <(one) <(two)" did not work correctly,
which has been corrected.

* pw/diff-no-index-from-named-pipes:
  diff --no-index: fix -R with stdin

10 months agoMerge branch 'js/complete-checkout-t' into maint-2.42
Junio C Hamano [Thu, 2 Nov 2023 07:53:18 +0000 (16:53 +0900)] 
Merge branch 'js/complete-checkout-t' into maint-2.42

The completion script (in contrib/) has been taught to treat the
"-t" option to "git checkout" and "git switch" just like the
"--track" option, to complete remote-tracking branches.

* js/complete-checkout-t:
  completion(switch/checkout): treat --track and -t the same

10 months agoMerge branch 'rs/grep-no-no-or' into maint-2.42
Junio C Hamano [Thu, 2 Nov 2023 07:53:17 +0000 (16:53 +0900)] 
Merge branch 'rs/grep-no-no-or' into maint-2.42

"git grep -e A --no-or -e B" is accepted, even though the negation
of "or" did not mean anything, which has been tightened.

* rs/grep-no-no-or:
  grep: reject --no-or

10 months agoMerge branch 'so/diff-doc-for-patch-update' into maint-2.42
Junio C Hamano [Thu, 2 Nov 2023 07:53:17 +0000 (16:53 +0900)] 
Merge branch 'so/diff-doc-for-patch-update' into maint-2.42

References from description of the `--patch` option in various
manual pages have been simplified and improved.

* so/diff-doc-for-patch-update:
  doc/diff-options: fix link to generating patch section

10 months agoMerge branch 'pw/rebase-i-after-failure' into maint-2.42
Junio C Hamano [Thu, 2 Nov 2023 07:53:17 +0000 (16:53 +0900)] 
Merge branch 'pw/rebase-i-after-failure' into maint-2.42

Various fixes to the behaviour of "rebase -i" when the command got
interrupted by conflicting changes.
cf. <6b927687-cf6e-d73e-78fb-bd4f46736928@gmx.de>

* pw/rebase-i-after-failure:
  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

10 months agoMerge branch 'ks/ref-filter-sort-numerically' into maint-2.42
Junio C Hamano [Thu, 2 Nov 2023 07:53:16 +0000 (16:53 +0900)] 
Merge branch 'ks/ref-filter-sort-numerically' into maint-2.42

"git for-each-ref --sort='contents:size'" sorts the refs according
to size numerically, giving a ref that points at a blob twelve-byte
(12) long before showing a blob hundred-byte (100) long.

* ks/ref-filter-sort-numerically:
  ref-filter: sort numerically when ":size" is used

10 months agoMerge branch 'jk/diff-result-code-cleanup' into maint-2.42
Junio C Hamano [Thu, 2 Nov 2023 07:53:16 +0000 (16:53 +0900)] 
Merge branch 'jk/diff-result-code-cleanup' into maint-2.42

"git diff --no-such-option" and other corner cases around the exit
status of the "diff" command has been corrected.

* jk/diff-result-code-cleanup:
  diff: drop useless "status" parameter from diff_result_code()
  diff: drop useless return values in git-diff helpers
  diff: drop useless return from run_diff_{files,index} functions
  diff: die when failing to read index in git-diff builtin
  diff: show usage for unknown builtin_diff_files() options
  diff-files: avoid negative exit value
  diff: spell DIFF_INDEX_CACHED out when calling run_diff_index()

10 months agoMerge branch 'ob/sequencer-empty-hint-fix' into maint-2.42
Junio C Hamano [Thu, 2 Nov 2023 07:53:16 +0000 (16:53 +0900)] 
Merge branch 'ob/sequencer-empty-hint-fix' into maint-2.42

The use of API between two calls to require_clean_work_tree() from
the sequencer code has been cleaned up for consistency.

* ob/sequencer-empty-hint-fix:
  sequencer: rectify empty hint in call of require_clean_work_tree()

10 months agoMerge branch 'ts/unpacklimit-config-fix' into maint-2.42
Junio C Hamano [Thu, 2 Nov 2023 07:53:16 +0000 (16:53 +0900)] 
Merge branch 'ts/unpacklimit-config-fix' into maint-2.42

transfer.unpackLimit ought to be used as a fallback, but overrode
fetch.unpackLimit and receive.unpackLimit instead.

* ts/unpacklimit-config-fix:
  transfer.unpackLimit: fetch/receive.unpackLimit takes precedence

10 months agoMerge branch 'jc/diff-exit-code-with-w-fixes' into maint-2.42
Junio C Hamano [Thu, 2 Nov 2023 07:53:15 +0000 (16:53 +0900)] 
Merge branch 'jc/diff-exit-code-with-w-fixes' into maint-2.42

"git diff -w --exit-code" with various options did not work
correctly, which is being addressed.

* jc/diff-exit-code-with-w-fixes:
  diff: the -w option breaks --exit-code for --raw and other output modes
  t4040: remove test that succeeded for a wrong reason
  diff: teach "--stat -w --exit-code" to notice differences
  diff: mode-only change should be noticed by "--patch -w --exit-code"
  diff: move the fallback "--exit-code" code down

10 months agoMerge branch 'tb/commit-graph-verify-fix' into maint-2.42
Junio C Hamano [Thu, 2 Nov 2023 07:53:15 +0000 (16:53 +0900)] 
Merge branch 'tb/commit-graph-verify-fix' into maint-2.42

The commit-graph verification code that detects mixture of zero and
non-zero generation numbers has been updated.

* tb/commit-graph-verify-fix:
  commit-graph: avoid repeated mixed generation number warnings
  t/t5318-commit-graph.sh: test generation zero transitions during fsck
  commit-graph: verify swapped zero/non-zero generation cases
  commit-graph: introduce `commit_graph_generation_from_graph()`

10 months agoMerge branch 'jc/ci-skip-same-commit' into maint-2.42
Junio C Hamano [Thu, 2 Nov 2023 07:53:15 +0000 (16:53 +0900)] 
Merge branch 'jc/ci-skip-same-commit' into maint-2.42

Tweak GitHub Actions CI so that pushing the same commit to multiple
branch tips at the same time will not waste building and testing
the same thing twice.

* jc/ci-skip-same-commit:
  ci: avoid building from the same commit in parallel

10 months agoMerge branch 'ds/scalar-updates' into maint-2.42
Junio C Hamano [Thu, 2 Nov 2023 07:53:14 +0000 (16:53 +0900)] 
Merge branch 'ds/scalar-updates' into maint-2.42

Scalar updates.

* ds/scalar-updates:
  scalar reconfigure: help users remove buggy repos
  setup: add discover_git_directory_reason()
  scalar: add --[no-]src option

10 months agoMerge branch 'mp/rebase-label-length-limit' into maint-2.42
Junio C Hamano [Thu, 2 Nov 2023 07:53:14 +0000 (16:53 +0900)] 
Merge branch 'mp/rebase-label-length-limit' into maint-2.42

Overly long label names used in the sequencer machinery are now
chopped to fit under filesystem limitation.

* mp/rebase-label-length-limit:
  rebase: allow overriding the maximal length of the generated labels
  sequencer: truncate labels to accommodate loose refs

10 months agoMerge branch 'js/ci-coverity' into maint-2.42
Junio C Hamano [Thu, 2 Nov 2023 07:53:14 +0000 (16:53 +0900)] 
Merge branch 'js/ci-coverity' into maint-2.42

GitHub CI workflow has learned to trigger Coverity check.

* js/ci-coverity:
  coverity: detect and report when the token or project is incorrect
  coverity: allow running on macOS
  coverity: support building on Windows
  coverity: allow overriding the Coverity project
  coverity: cache the Coverity Build Tool
  ci: add a GitHub workflow to submit Coverity scans

10 months agoMerge branch 'jk/test-lsan-denoise-output' into maint-2.42
Junio C Hamano [Thu, 2 Nov 2023 07:53:14 +0000 (16:53 +0900)] 
Merge branch 'jk/test-lsan-denoise-output' into maint-2.42

Tests with LSan from time to time seem to emit harmless message
that makes our tests unnecessarily flakey; we work it around by
filtering the uninteresting output.

* jk/test-lsan-denoise-output:
  test-lib: ignore uninteresting LSan output

10 months agoMerge branch 'js/ci-san-skip-p4-and-svn-tests' into maint-2.42
Junio C Hamano [Thu, 2 Nov 2023 07:53:13 +0000 (16:53 +0900)] 
Merge branch 'js/ci-san-skip-p4-and-svn-tests' into maint-2.42

Flakey "git p4" tests, as well as "git svn" tests, are now skipped
in the (rather expensive) sanitizer CI job.

* js/ci-san-skip-p4-and-svn-tests:
  ci(linux-asan-ubsan): let's save some time

10 months agoMerge branch 'tb/mark-more-tests-as-leak-free' into maint-2.42
Junio C Hamano [Thu, 2 Nov 2023 07:53:13 +0000 (16:53 +0900)] 
Merge branch 'tb/mark-more-tests-as-leak-free' into maint-2.42

Tests that are known to pass with LSan are now marked as such.

* tb/mark-more-tests-as-leak-free:
  leak tests: mark t5583-push-branches.sh as leak-free
  leak tests: mark t3321-notes-stripspace.sh as leak-free
  leak tests: mark a handful of tests as leak-free

10 months agomax_tree_depth: lower it for MSVC to avoid stack overflows
Johannes Schindelin [Wed, 1 Nov 2023 13:03:30 +0000 (13:03 +0000)] 
max_tree_depth: lower it for MSVC to avoid stack overflows

There seems to be some internal stack overflow detection in MSVC's
`malloc()` machinery that seems to be independent of the `stack reserve`
and `heap reserve` sizes specified in the executable (editable via
`EDITBIN /STACK:<n> <exe>` and `EDITBIN /HEAP:<n> <exe>`).

In the newly test cases added by `jk/tree-name-and-depth-limit`, this
stack overflow detection is unfortunately triggered before Git can print
out the error message about too-deep trees and exit gracefully. Instead,
it exits with `STATUS_STACK_OVERFLOW`. This corresponds to the numeric
value -1073741571, something the MSYS2 runtime we sadly need to use to
run Git's test suite cannot handle and which it internally maps to the
exit code 127. Git's test suite, in turn, mistakes this to mean that the
command was not found, and fails both test cases.

Here is an example stack trace from an example run:

    [0x0]   ntdll!RtlpAllocateHeap+0x31   0x4212603f50   0x7ff9d6d4cd49
    [0x1]   ntdll!RtlpAllocateHeapInternal+0x6c9   0x42126041b0   0x7ff9d6e14512
    [0x2]   ntdll!RtlDebugAllocateHeap+0x102   0x42126042b0   0x7ff9d6dcd8b0
    [0x3]   ntdll!RtlpAllocateHeap+0x7ec70   0x4212604350   0x7ff9d6d4cd49
    [0x4]   ntdll!RtlpAllocateHeapInternal+0x6c9   0x42126045b0   0x7ff9596ed480
    [0x5]   ucrtbased!heap_alloc_dbg_internal+0x210   0x42126046b0   0x7ff9596ed20d
    [0x6]   ucrtbased!heap_alloc_dbg+0x4d   0x4212604750   0x7ff9596f037f
    [0x7]   ucrtbased!_malloc_dbg+0x2f   0x42126047a0   0x7ff9596f0dee
    [0x8]   ucrtbased!malloc+0x1e   0x42126047d0   0x7ff730fcc1ef
    [0x9]   git!do_xmalloc+0x2f   0x4212604800   0x7ff730fcc2b9
    [0xa]   git!do_xmallocz+0x59   0x4212604840   0x7ff730fca779
    [0xb]   git!xmallocz_gently+0x19   0x4212604880   0x7ff7311b0883
    [0xc]   git!unpack_compressed_entry+0x43   0x42126048b0   0x7ff7311ac9a4
    [0xd]   git!unpack_entry+0x554   0x42126049a0   0x7ff7311b0628
    [0xe]   git!cache_or_unpack_entry+0x58   0x4212605250   0x7ff7311ad3a8
    [0xf]   git!packed_object_info+0x98   0x42126052a0   0x7ff7310a92da
    [0x10]   git!do_oid_object_info_extended+0x3fa   0x42126053b0   0x7ff7310a44e7
    [0x11]   git!oid_object_info_extended+0x37   0x4212605460   0x7ff7310a38ba
    [0x12]   git!repo_read_object_file+0x9a   0x42126054a0   0x7ff7310a6147
    [0x13]   git!read_object_with_reference+0x97   0x4212605560   0x7ff7310b4656
    [0x14]   git!fill_tree_descriptor+0x66   0x4212605620   0x7ff7310dc0a5
    [0x15]   git!traverse_trees_recursive+0x3f5   0x4212605680   0x7ff7310dd831
    [0x16]   git!unpack_callback+0x441   0x4212605790   0x7ff7310b4c95
    [0x17]   git!traverse_trees+0x5d5   0x42126058a0   0x7ff7310dc0f2
    [0x18]   git!traverse_trees_recursive+0x442   0x4212605980   0x7ff7310dd831
    [0x19]   git!unpack_callback+0x441   0x4212605a90   0x7ff7310b4c95
    [0x1a]   git!traverse_trees+0x5d5   0x4212605ba0   0x7ff7310dc0f2
    [0x1b]   git!traverse_trees_recursive+0x442   0x4212605c80   0x7ff7310dd831
    [0x1c]   git!unpack_callback+0x441   0x4212605d90   0x7ff7310b4c95
    [0x1d]   git!traverse_trees+0x5d5   0x4212605ea0   0x7ff7310dc0f2
    [0x1e]   git!traverse_trees_recursive+0x442   0x4212605f80   0x7ff7310dd831
    [0x1f]   git!unpack_callback+0x441   0x4212606090   0x7ff7310b4c95
    [0x20]   git!traverse_trees+0x5d5   0x42126061a0   0x7ff7310dc0f2
    [0x21]   git!traverse_trees_recursive+0x442   0x4212606280   0x7ff7310dd831
    [...]
    [0xfad]   git!cmd_main+0x2a2   0x42126ff740   0x7ff730fb6345
    [0xfae]   git!main+0xe5   0x42126ff7c0   0x7ff730fbff93
    [0xfaf]   git!wmain+0x2a3   0x42126ff830   0x7ff731318859
    [0xfb0]   git!invoke_main+0x39   0x42126ff8a0   0x7ff7313186fe
    [0xfb1]   git!__scrt_common_main_seh+0x12e   0x42126ff8f0   0x7ff7313185be
    [0xfb2]   git!__scrt_common_main+0xe   0x42126ff960   0x7ff7313188ee
    [0xfb3]   git!wmainCRTStartup+0xe   0x42126ff990   0x7ff9d5ed257d
    [0xfb4]   KERNEL32!BaseThreadInitThunk+0x1d   0x42126ff9c0   0x7ff9d6d6aa78
    [0xfb5]   ntdll!RtlUserThreadStart+0x28   0x42126ff9f0   0x0

I verified manually that `traverse_trees_cur_depth` was 562 when that
happened, which is far below the 2048 that were already accepted into
Git as a hard limit.

Despite many attempts to figure out which of the internals trigger this
`STATUS_STACK_OVERFLOW` and how to maybe increase certain sizes to avoid
running into this issue and let Git behave the same way as under Linux,
I failed to find any build-time/runtime knob we could turn to that
effect.

Note: even switching to using a different allocator (I used mimalloc
because that's what Git for Windows uses for its GCC builds) does not
help, as the zlib code used to unpack compressed pack entries _still_
uses the regular `malloc()`. And runs into the same issue.

Note also: switching to using a different allocator _also_ for zlib code
seems _also_ not to help. I tried that, and it still exited with
`STATUS_STACK_OVERFLOW` that seems to have been triggered by a
`mi_assert_internal()`, i.e. an internal assertion of mimalloc...

So the best bet to work around this for now seems to just lower the
maximum allowed tree depth _even further_ for MSVC builds.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 months agomerge-file: add an option to process object IDs
brian m. carlson [Wed, 1 Nov 2023 19:24:19 +0000 (19:24 +0000)] 
merge-file: add an option to process object IDs

git merge-file knows how to merge files on the file system already.  It
would be helpful, however, to allow it to also merge single blobs.
Teach it an `--object-id` option which means that its arguments are
object IDs and not files to allow it to do so.

We handle the empty blob specially since read_mmblob doesn't read it
directly and otherwise users cannot specify an empty ancestor.

Signed-off-by: brian m. carlson <bk2204@github.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
10 months agogit-merge-file doc: drop "-file" from argument placeholders
Martin Ågren [Wed, 1 Nov 2023 19:24:18 +0000 (19:24 +0000)] 
git-merge-file doc: drop "-file" from argument placeholders

`git merge-file` takes three positional arguments. Each of them is
documented as `<foo-file>`. In preparation for teaching this command to
alternatively take three object IDs, make these placeholders a bit more
generic by dropping the "-file" parts. Instead, clarify early that the
three arguments are filenames. Even after the next commit, we can afford
to present this file-centric view up front and in the general
discussion, since it will remain the default one.

Signed-off-by: Martin Ågren <martin.agren@gmail.com>
Signed-off-by: brian m. carlson <bk2204@github.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>