Subject: What's cooking in git.git (Apr 2025, #06; Tue, 22)

From: Junio C Hamano <[email-masked]>
Date: Tue, 22 Apr 2025 19:48:25 -0700

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-scm/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]

* js/git-perf-env-override (2025-04-20) 1 commit
  (merged to 'next' on 2025-04-22 at 77ea361791)
 + perf: do allow `GIT_PERF_*` to be overridden again

 Developer support fix..

 Will merge to 'master'.
 source: <[email-masked]>

* ua/call-repo-config-with-possibly-null-repository (2025-04-20) 2 commits
  (merged to 'next' on 2025-04-22 at 1f30a19c02)
 + builtin/difftool: remove unnecessary if statement
 + builtin/add: remove unnecessary if statement

 Since a call to repo_config() can be called with repo set to NULL
 these days, a command that is marked as RUN_SETUP in the builtin
 command table does not have to check repo with NULL before making
 the call.

 Will merge to 'master'.
 source: <[email-masked]>

* az/tighten-string-array-constness (2025-04-21) 1 commit
 - global: mark usage strings and string tables const

 Code clean-up.

 Will merge to 'next'.
 source: <[email-masked]>

* es/meson-cleanup (2025-04-21) 6 commits
 - meson: only check for missing networking syms on non-Windows; add compat impls
 - meson: fix typo in function check that prevented checking for hstrerror
 - meson: add a couple missing networking dependencies
 - meson: do a full usage-based compile check for sysinfo
 - meson: check for getpagesize before using it
 - meson: simplify and parameterize various standard function checks

 Code clean-up for meson-based build infrastructure.

 Comments?
 source: <[email-masked]>

* jh/gc-launchctl-schedule-fix (2025-04-21) 1 commit
 - maintenance: fix launchctl calendar intervals

 Fix for scheduled maintenance tasks on platforms using launchctl.

 Will merge to 'next'.
 source: <[email-masked]>

* js/windows-arm64 (2025-04-21) 6 commits
 - max_tree_depth: lower it for clangarm64 on Windows
 - mingw(arm64): do move the `/etc/git*` location
 - msvc: do handle builds on Windows/ARM64
 - mingw: do not use nedmalloc on Windows/ARM64
 - config.mak.uname: add support for clangarm64
 - bswap.h: add support for built-in bswap functions

 Update to arm64 Windows port.

 Will merge to 'next'.
 source: <[email-masked]>

* jk/p5332-testfix (2025-04-22) 1 commit
 - p5332: drop "+" from --stdin-packs input

 A test fix.

 Will merge to 'next'.
 source: <[email-masked]>

* lo/remove-log-reencode-from-rev-info (2025-04-22) 1 commit
 - revision: remove log_reencode field from rev_info

 Code clean-up.

 Will merge to 'next'.
 source: <[email-masked]>

* ps/ci-resurrect-p4-on-github (2025-04-22) 1 commit
 - ci: fix p4d executable not being found on GitHub Actions

 CI fix.

 Will merge to 'next'.
 source: <[email-masked]>

* ps/install-bash-completion (2025-04-22) 1 commit
 - contrib/completion: install Bash completion

 Build update to install bash (but not zsh) completion script.

 Will merge to 'next'.
 source: <[email-masked]>

* sj/string-list-typefix (2025-04-22) 5 commits
 - u-string-list: move "remove duplicates" test to "u-string-list.c"
 - u-string-list: move "filter string" test to "u-string-list.c"
 - u-string-list: move "test_split_in_place" to "u-string-list.c"
 - u-string-list: move "test_split" into "u-string-list.c"
 - string-list: fix sign compare warnings

 Code and test clean-up around string-list API.

 Comments?
 source: <aAetW0dan8S3Fljq@ArchLinux>

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

* ds/doc-disable-hooks (2025-04-16) 1 commit
  (merged to 'next' on 2025-04-18 at 4b543e57a5)
 + docs: document core.hooksPath=/dev/null

 Document the convention to disable hooks altogether by setting the
 hooksPath configuration variable to /dev/nulll

 Will merge to 'master'.
 source: <[email-masked]>

* tb/midx-avoid-cruft-packs (2025-04-15) 9 commits
 - repack: exclude cruft pack(s) from the MIDX where possible
 - pack-objects: introduce '--stdin-packs=follow'
 - pack-objects: swap 'show_{object,commit}_pack_hint'
 - pack-objects: fix typo in 'show_object_pack_hint()'
 - pack-objects: perform name-hash traversal for unpacked objects
 - pack-objects: declare 'rev_info' for '--stdin-packs' earlier
 - pack-objects: factor out handling '--stdin-packs'
 - pack-objects: limit scope in 'add_object_entry_from_pack()'
 - pack-objects: use standard option incompatibility functions

 "pack-objects" has been taught to avoid pointing into objects in
 cruft packs from midx.

 Comments?
 source: <[email-masked]>

* tb/pack-bitmap-lookup-tables (2025-04-17) 4 commits
 - t/perf/lib-bitmap.sh: avoid test_perf during setup
 - t/perf: avoid testing bitmaps without lookup table
 - p5312: removed duplicate performance test script
 - pack-bitmap: write lookup table extension by default

 Enable lookup tables extension in pack bitmap (and midx bitmap) by
 default.

 Comments?
 source: <[email-masked]>

* as/typofix-in-env-h-header (2025-04-18) 1 commit
 - environment: fix typo: 'setup_git_directory_gently'

 Typofix.

 Will merge to 'next'.
 source: <[email-masked]>

* ps/meson-build-perf-bench (2025-04-22) 5 commits
 - meson: wire up benchmarking options
 - meson: wire up benchmarks
 - t/perf: fix benchmarks with out-of-tree builds
 - t/perf: use configured PERL_PATH
 - t/perf: fix benchmarks with alternate repo formats

 The build procedure based on Meson learned to drive the
 benchmarking tests.

 Comments?
 source: <[email-masked]>

* aw/t9811-modernize (2025-04-18) 2 commits
  (merged to 'next' on 2025-04-18 at 37484f566f)
 + t9811: fix misconversion of tests
  (merged to 'next' on 2025-04-16 at 53103e8873)
 + t9811: be more precise to check importing of tags

 Test updates.

 Will merge to 'master'.
 source: <[email-masked]>

* ps/fewer-perl (2025-04-16) 5 commits
 - Documentation: stop depending on Perl to generate command list
 - Documentation: stop depending on Perl to massage user manual
 - request-pull: stop depending on Perl
 - filter-branch: stop depending on Perl
 - Merge branch 'ps/test-wo-perl-prereq' into ps/fewer-perl

 Reduce requirement for Perl in our documentation build and a few
 scripts.

 Will merge to 'next'?
 source: <[email-masked]>

* ps/parse-options-integers (2025-04-17) 7 commits
  (merged to 'next' on 2025-04-18 at 30159c9252)
 + parse-options: detect mismatches in integer signedness
 + parse-options: introduce precision handling for `OPTION_UNSIGNED`
 + parse-options: introduce precision handling for `OPTION_INTEGER`
 + parse-options: rename `OPT_MAGNITUDE()` to `OPT_UNSIGNED()`
 + parse-options: support unit factors in `OPT_INTEGER()`
 + global: use designated initializers for options
 + parse: fix off-by-one for minimum signed values

 Update parse-options API to catch mistakes to pass address of an
 integral variable of a wrong type/size.

 Will merge to 'master'.
 source: <[email-masked]>

* kn/bundle-dedup-optim (2025-04-08) 2 commits
  (merged to 'next' on 2025-04-11 at 082f7c87e0)
 + bundle: fix non-linear performance scaling with refs
 + t6020: test for duplicate refnames in bundle creation

 Optimize the code to dedup references recorded in a bundle file.

 Will merge to 'master'.
 source: <20250408-488-generating-bundles-w[email-masked]>

* kn/meson-hdr-check (2025-04-20) 6 commits
 . makefile/meson: add 'check-headers' as alias for 'hdr-check'
 . meson: add support for 'hdr-check'
 . meson: rename 'third_party_sources' to 'third_party_excludes'
 . meson: move headers definition from 'contrib/coccinelle'
 . coccinelle: meson: rename variables to be more specific
 . Merge branch 'es/meson-build-skip-coccinelle' into kn/meson-hdr-check

 Add an equivalent to "make hdr-check" target to meson based builds.

 Seems to break linux.meson CI job.
 cf. https://github.com/git/git/actions/runs/14563669225/job/40850047961
 source: <[email-masked]>

* ps/object-file-cleanup (2025-04-15) 11 commits
  (merged to 'next' on 2025-04-17 at 4f5b5725c6)
 + object-store: merge "object-store-ll.h" and "object-store.h"
 + object-store: remove global array of cached objects
 + object: split out functions relating to object store subsystem
 + object-file: drop `index_blob_stream()`
 + object-file: split up concerns of `HASH_*` flags
 + object-file: split out functions relating to object store subsystem
 + object-file: move `xmmap()` into "wrapper.c"
 + object-file: move `git_open_cloexec()` to "compat/open.c"
 + object-file: move `safe_create_leading_directories()` into "path.c"
 + object-file: move `mkdir_in_gitdir()` into "path.c"
 + Merge branch 'ps/object-wo-the-repository' into ps/object-file-cleanup

 Code clean-up.

 Will merge to 'master'.
 cf. <CABPp-BFGeJ6eANb_5m4KSWRY_r9KCWarzya_qMkQNchKD5Q=[email-masked]>
 source: <[email-masked]>

* rj/build-tweaks (2025-04-17) 13 commits
  (merged to 'next' on 2025-04-18 at 0ad43d3038)
 + config.mak.uname: set CSPRNG_METHOD to getrandom on Linux
 + config.mak.uname: add arc4random to the cygwin build
 + config.mak.uname: add sysinfo() configuration for cygwin
 + builtin/gc.c: correct RAM calculation when using sysinfo
 + config.mak.uname: add clock_gettime() to the cygwin build
 + config.mak.uname: add HAVE_GETDELIM to the cygwin section
 + config.mak.uname: only set NO_REGEX on cygwin for v1.7
 + config.mak.uname: add a note about NO_STRLCPY for Linux
 + Makefile: remove NEEDS_LIBRT build variable
 + meson.build: set default help format to html on windows
 + meson.build: only set build variables for non-default values
 + Makefile: only set some BASIC_CFLAGS when RUNTIME_PREFIX is set
 + meson.build: remove -DCURL_DISABLE_TYPECHECK

 Various build tweaks, including CSPRNG selection on some platforms.

 Will merge to 'master'.
 source: <[email-masked]>

* js/range-check-codeql-workaround (2025-03-28) 1 commit
  (merged to 'next' on 2025-04-17 at 809b3c3f63)
 + read-cache: check range before dereferencing an array element

 Work around false positive from CodeQL checker.

 Will merge to 'master'.
 source: <73ca[email-masked]>

* pb/perf-test-fixes (2025-04-14) 3 commits
  (merged to 'next' on 2025-04-15 at f911b5420a)
 + p7821: fix instructions for testing with threads
  (merged to 'next' on 2025-04-08 at a8aaeee41e)
 + p9210: fix 'scalar clone' when running from a detached HEAD
 + p7821: fix test_perf invocation for prereqs

 "make perf" fixes.

 Will merge to 'master'.
 cf. <[email-masked]>
 cf. <[email-masked]>
 source: <[email-masked]>

* pb/status-rebase-fixes (2025-03-28) 4 commits
 - wt-status: suggest 'git rebase --continue' to conclude 'merge' instruction
 - wt-status: also abbreviate 'merge' and 'fixup -C' lines during rebase
 - SQUASH??? - <[email-masked]>
 - rebase -r: do create merge commit after empty resolution

 A few fixes around "git status" while "git rebase" is running,
 plus a corner case bug fix for "git rebase -r".

 Expecting a (small and hopefully final) clarifying reroll.
 cf. <[email-masked]>
 cf. <[email-masked]>
 source: <[email-masked]>

* ja/doc-reset-mv-rm-markup-updates (2025-04-14) 7 commits
  (merged to 'next' on 2025-04-15 at 0b19646642)
 + doc: add markup for characters in Guidelines
 + doc: fix asciidoctor synopsis processing of triple-dots
 + doc: convert git-mv to new documentation format
 + doc: move synopsis git-mv commands in the synopsis section
 + doc: convert git-rm to new documentation format
 + doc: fix synopsis analysis logic
 + doc: convert git-reset to new documentation format

 Doc mark-up updates.

 Will merge to 'master'.
 source: <[email-masked]>

* md/userdiff-bash-shell-function (2025-04-01) 1 commit
 - userdiff: extend Bash pattern to cover more shell function forms

 The userdiff pattern for shell scripts has been updated to cope
 with more bash-isms.

 Comments?
 source: <[email-masked]>

* mh/left-right-limited (2025-04-01) 1 commit
  (merged to 'next' on 2025-04-17 at 1976b29af9)
 + revision: fix --left/right-only use with unrelated histories

 "git log --{left,right}-only A...B", when A and B does not share
 any common ancestor, now behaves as expected.

 Will merge to 'master'.
 source: <[email-masked]>

* ps/reftable-api-revamp (2025-04-07) 17 commits
 - reftable/table: move printing logic into test helper
 - reftable/constants: make block types part of the public interface
 - reftable/table: introduce iterator for table blocks
 - reftable/table: add `reftable_table` to the public interface
 - reftable/block: expose a generic iterator over reftable records
 - reftable/block: make block iterators reseekable
 - reftable/block: store block pointer in the block iterator
 - reftable/block: create public interface for reading blocks
 - git-zlib: use `struct z_stream_s` instead of typedef
 - reftable/block: rename `block_reader` to `reftable_block`
 - reftable/block: rename `block` to `block_data`
 - reftable/table: move reading block into block reader
 - reftable/block: simplify how we track restart points
 - reftable/blocksource: consolidate code into a single file
 - reftable/reader: rename data structure to "table"
 - reftable: fix formatting of the license header
 - Merge branch 'ps/reftable-sans-compat-util' into ps/reftable-api-revamp

 Overhaul of the reftable API.

 Will merge to 'next'?
 cf. <3okrcl7bdpy75hzyzpmrp7fluan4n3zvsroioq64id4a2kt3o4@fc6fetilb6y2>
 source: <[email-masked]>

* sc/bundle-uri-use-all-refs-in-bundle (2025-03-18) 2 commits
 - bundle-uri: add test for bundle-uri clones with tags
 - bundle-uri: copy all bundle references ino the refs/bundle space

 Bundle-URI feature did not use refs recorded in the bundle other
 than normal branches as anchoring points to optimize the follow-up
 fetch during "git clone"; now it is told to utilize all.

 Needs more work on tests.
 cf. <[email-masked]>
 source: <[email-masked]>

* ds/path-walk-2 (2025-03-25) 13 commits
 - pack-objects: allow --shallow and --path-walk
 - path-walk: add new 'edge_aggressive' option
 - pack-objects: thread the path-based compression
 - pack-objects: refactor path-walk delta phase
 - scalar: enable path-walk during push via config
 - pack-objects: enable --path-walk via config
 - repack: add --path-walk option
 - t5538: add tests to confirm deltas in shallow pushes
 - pack-objects: introduce GIT_TEST_PACK_PATH_WALK
 - p5313: add performance tests for --path-walk
 - pack-objects: update usage to match docs
 - pack-objects: add --path-walk option
 - pack-objects: extract should_attempt_deltas()

 "git pack-objects" learns to find delta bases from blobs at the
 same path, using the --path-walk API.

 Comments?
 source: <[email-masked]>

* ib/diff-S-G-with-longhand (2025-02-12) 10 commits
 - diff: docs: Use --patch-{grep,modifies} over -G/-S
 - diff: --pickaxe-{all,regex} help: Add --patch-{grep,modifies}
 - diff: test: Use --patch-{grep,modifies} over -G/-S
 - completion: Support --patch-{grep,modifies}
 - diff: --patch-{grep,modifies} arg names for -G and -S
 - docs: gitdiffcore: -G and -S: Use regex/string placeholders
 - diff: short help: Add -G and --pickaxe-grep
 - diff: short help: Correct -S description
 - diff: -G description: Correct copy/paste error
 - t/t4209-log-pickaxe: Naming typo: -G takes a regex

 The commands in the "diff" family learned longhands for "-S" and
 "-G" options.

 Expecting a reroll.
 source: <[email-masked]>

* ej/cat-file-remote-object-info (2025-02-24) 8 commits
 - cat-file: add remote-object-info to batch-command
 - transport: add client support for object-info
 - serve: advertise object-info feature
 - fetch-pack: move fetch initialization
 - fetch-pack: refactor packet writing
 - t1006: split test utility functions into new "lib-cat-file.sh"
 - cat-file: add declaration of variable i inside its for loop
 - git-compat-util: add strtoul_ul() with error handling

 "git cat-file --batch" and friends can optionally ask a remote
 server about objects it does not have.

 Expecting a reroll.
 cf. <[email-masked]>
 source: <[email-masked]>