Subject: What's cooking in git.git (May 2025, #01; Fri, 2)

From: Junio C Hamano <[email-masked]>
Date: Fri, 02 May 2025 18:35:04 -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/

--------------------------------------------------
[Graduated to 'master']

* as/typofix-in-env-h-header (2025-04-18) 1 commit
  (merged to 'next' on 2025-04-23 at a9954f6cec)
 + environment: fix typo: 'setup_git_directory_gently'

 Typofix.
 source: <[email-masked]>

* az/tighten-string-array-constness (2025-04-21) 1 commit
  (merged to 'next' on 2025-04-23 at 5a2b439731)
 + global: mark usage strings and string tables const

 Code clean-up.
 source: <[email-masked]>

* jh/gc-launchctl-schedule-fix (2025-04-23) 1 commit
  (merged to 'next' on 2025-04-23 at ab4f2e0c26)
 + maintenance: fix launchctl calendar intervals

 Fix for scheduled maintenance tasks on platforms using launchctl.
 source: <[email-masked]>

* jk/p5332-testfix (2025-04-22) 1 commit
  (merged to 'next' on 2025-04-24 at eafff4d7b7)
 + p5332: drop "+" from --stdin-packs input

 A test fix.
 source: <[email-masked]>

* 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..
 source: <[email-masked]>

* lo/remove-log-reencode-from-rev-info (2025-04-22) 1 commit
  (merged to 'next' on 2025-04-24 at 1c6c33ab1f)
 + revision: remove log_reencode field from rev_info

 Code clean-up.
 source: <[email-masked]>

* ps/ci-resurrect-p4-on-github (2025-04-22) 1 commit
  (merged to 'next' on 2025-04-24 at 8594d07a3e)
 + ci: fix p4d executable not being found on GitHub Actions

 CI fix.
 source: <[email-masked]>

* ps/fewer-perl (2025-04-16) 5 commits
  (merged to 'next' on 2025-04-23 at 275d267126)
 + 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.
 source: <[email-masked]>

* ps/install-bash-completion (2025-04-22) 1 commit
  (merged to 'next' on 2025-04-24 at 1171444ac4)
 + contrib/completion: install Bash completion

 Build update to install bash (but not zsh) completion script.
 source: <[email-masked]>

* ps/reftable-api-revamp (2025-04-07) 17 commits
  (merged to 'next' on 2025-04-23 at 1a5f00290a)
 + 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.
 cf. <3okrcl7bdpy75hzyzpmrp7fluan4n3zvsroioq64id4a2kt3o4@fc6fetilb6y2>
 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.
 source: <[email-masked]>

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

* cc/promisor-remote-capability (2025-04-29) 3 commits
 - promisor-remote: allow a client to check fields
 - promisor-remote: allow a server to advertise more fields
 - promisor-remote: refactor to get rid of 'struct strvec'

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

* en/hashmap-clear-fix (2025-04-29) 1 commit
  (merged to 'next' on 2025-04-30 at b0cdbeb28e)
 + hashmap: ensure hashmaps are reusable after hashmap_clear()

 hashmap API clean-up to ensure hashmap_clear() leaves a cleared map
 in a reusable state.

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

* js/diff-codeql-false-positive-workaround (2025-04-29) 1 commit
  (merged to 'next' on 2025-05-01 at a840276032)
 + diff: check range before dereferencing an array element

 Work around false positive given by CodeQL.

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

* ng/xdiff-truly-minimal (2025-04-29) 1 commit
 - xdiff: disable cleanup_records heuristic with --minimal

 "git diff --minimal" used to give non-minimal output when its
 optimization kicked in, which has been disabled.

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

* ds/scalar-no-maintenance (2025-04-30) 2 commits
 - scalar clone: add --no-maintenance option
 - scalar register: add --no-maintenance option

 Two "scalar" subcommands that adds a repository that hasn't been
 under "scalar"'s control are taught an option not to enable the
 scheduled maintenance on it.

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

* ps/mv-contradiction-fix (2025-04-30) 2 commits
  (merged to 'next' on 2025-05-01 at 5c27b05f45)
 + builtin/mv: convert assert(3p) into `BUG()`
 + builtin/mv: bail out when trying to move child and its parent

 "git mv a a/b dst" would ask to move the directory 'a' itself, as
 well as its contents, in a single destination directory, which is
 a contradicting request that is impossible to satisfy. This case is
 now detected and the command errors out.

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

* cf/wrapper-netbsd-errno-eftype (2025-05-02) 1 commit
 - wrapper: NetBSD gives EFTYPE where POSIX uses ELOOP

 source: <[email-masked]>

* en/get-tree-entry-doc (2025-05-02) 1 commit
 - tree-walk.h: fix incorrect API comment

 source: <[email-masked]>

* jc/doc-synopsis-option-markup (2025-05-02) 3 commits
 - git-daemon doc: update mark-up of synopsis option descriptions
 - git-{var,write-tree} docs: update mark-up of synopsis option descriptions
 - git-verify-* doc: update mark-up of synopsis option descriptions

 Doc mark-up fixes.

 Comments?
 source: <[email-masked]>

* jc/you-still-use-whatchanged (2025-05-02) 6 commits
 - whatschanged: list it in BreakingChanges document
 - whatchanged: remove when built with WITH_BREAKING_CHANGES
 - whatchanged: require --i-still-use-this
 - tests: prepare for a world without whatchanged
 - doc: prepare for a world without whatchanged
 - you-still-use-that??: help deprecating commands for removal

 "git whatchanged" that is longer to type than "git log --raw"
 which is its modern rough equivalent has outlived its usefulness
 more than 10 years ago.  Plan to deprecate and remove it.

 Comments?
 source: <[email-masked]>

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

* jc/ci-skip-unavailable-external-software (2025-04-25) 2 commits
 - ci: download JGit from maven, not eclipse.org
 - ci: update the message for unavailble third-party software

 Further refinement on CI messages when an optional external
 software is unavailable (e.g. due to third-party service outage).

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

* js/ci-win-meson-timeout-workaround (2025-04-25) 1 commit
 - ci(win+Meson): build in Release mode, avoiding t7001-mv hangs

 win+Meson CI pipeline, unlike other pipelines for Windows,
 used to build artifacts in develper mode, which has been changed to
 build them in release mode for consistency.

 Expecting a reroll, stating an updated rationale for the change.
 cf. <[email-masked]>
 source: <[email-masked]>

* ps/maintenance-missing-tasks (2025-05-02) 7 commits
 - builtin/maintenance: introduce "rerere-gc" task
 - builtin/gc: move rerere garbage collection into separate function
 - builtin/maintenance: introduce "worktree-prune" task
 - worktree: expose function to retrieve worktree names
 - builtin/gc: move pruning of worktrees into a separate function
 - builtin/gc: remove global variables where it trivial to do
 - builtin/gc: fix indentation of `cmd_gc()` parameters

 Make repository clean-up tasks "gc" can do available to "git
 maintenance" front-end.

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

* ag/send-email-outlook (2025-04-29) 2 commits
 - send-email: add --[no-]outlook-id-fix option
 - send-email: retrieve Message-ID from outlook SMTP server

 Update send-email to work better with Outlook's smtp server.

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

* ds/fix-thin-fix (2025-04-28) 3 commits
 - index-pack: allow revisiting REF_DELTA chains
 - t5309: create failing test for 'git index-pack'
 - test-tool: add pack-deltas helper

 "git index-pack --fix-thin" used to abort to prevent a cycle in
 delta chains from forming in a corner case even when there is no
 such cycle.

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

* ps/object-store-cleanup (2025-04-29) 8 commits
 - object-store: drop `repo_has_object_file()`
 - treewide: convert users of `repo_has_object_file()` to `has_object()`
 - object-store: allow fetching objects via `has_object()`
 - object-store: move function declarations to their respective subsystems
 - object-store: move and rename `odb_pack_keep()`
 - object-store: drop `loose_object_path()`
 - object-store: move `struct packed_git` into "packfile.h"
 - Merge branch 'ps/object-file-cleanup' into ps/object-store-cleanup

 Further code clean-up in the object-store layer.

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

* cc/fast-import-export-signature-names (2025-04-24) 1 commit
 . fast-(import|export): improve on the signature algorithm name

 Clean up the way how signature on commit objects are exported to
 and imported from fast-import stream.

 Expecting a reroll.
 cf. <[email-masked]>
 cf. https://github.com/git/git/actions/runs/14671270673/job/41178138711
 source: <[email-masked]>

* dd/meson-perl-custom-path (2025-04-24) 1 commit
 - meson: allow customize perl installation path

 Meson-based build framework update.

 Looking good.  Expecting a minor reroll.
 cf. <[email-masked]>
 source: <80[email-masked]>

* ps/meson-bin-sh (2025-04-25) 2 commits
 - meson: prefer shell at "/bin/sh"
 - meson: report detected runtime executable paths

 Meson-based build framework update.

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

* es/meson-cleanup (2025-04-25) 6 commits
  (merged to 'next' on 2025-04-28 at 0cc8ee98dc)
 + 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.

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

* js/windows-arm64 (2025-04-23) 6 commits
  (merged to 'next' on 2025-04-28 at c3d4cea333)
 + 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 'master'.
 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.

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

* 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]>

* ps/meson-build-perf-bench (2025-04-28) 5 commits
  (merged to 'next' on 2025-04-28 at f563542bfd)
 + 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.

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

* kn/meson-hdr-check (2025-04-23) 7 commits
  (merged to 'next' on 2025-04-29 at c925448238)
 + 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
 + ci/github: install git before checking out the repository
 + Merge branch 'es/meson-build-skip-coccinelle' into kn/meson-hdr-check

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

 Will merge to 'master'.
 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]>

* 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]>

* sc/bundle-uri-use-all-refs-in-bundle (2025-04-25) 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.

 Ready?
 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.

 Will merge to 'next'?
 cf. <[email-masked]>
 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]>