Subject: What's cooking in git.git (May 2025, #02; Mon, 5)

From: Junio C Hamano <[email-masked]>
Date: Mon, 05 May 2025 18:20:16 -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']

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

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

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

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

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

 The fallback implementation of open_nofollow() depended on
 open("symlink", O_NOFOLLOW) to set errno to ELOOP, but a few BSD
 derived systems use different errno, which has been worked around.

 source: <[email-masked]>

* js/ci-build-win-in-release-mode (2025-05-05) 1 commit
 - ci(win+Meson): build in Release mode

 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.

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

* js/ci-buildsystems-cleanup (2025-05-05) 3 commits
 - config.mak.uname: drop the `vcxproj` target
 - contrib/buildsystems: drop support for building . vcproj/.vcxproj files
 - ci: stop linking the `prove` cache

 Code clean-up around stale CI elements and building with Visual Studio.

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

* kh/docfixes (2025-05-05) 2 commits
 - doc: branch: fix inline-verbatim
 - doc: reflog: fix `drop` subheading

 Docfixes.

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

* kj/glob-path-with-special-char (2025-05-05) 1 commit
 - dir.c: literal match with wildcard in pathspec should still glob

 "git add 'f?o'" did not add 'foo' if 'f?o', an unusual pathname,
 also existed on the working tree, which has been corrected.

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

* ps/ci-test-aggreg-fix-for-meson (2025-05-05) 1 commit
 - ci: fix aggregation of test results with Meson

 Test result aggregation did not work in Meson based CI jobs.

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

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

* 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
  (merged to 'next' on 2025-05-05 at 62e0c33153)
 + 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 'master'.
 source: <[email-masked]>

* ds/scalar-no-maintenance (2025-05-05) 4 commits
 - scalar reconfigure: add --no-maintenance option
 - scalar clone: add --no-maintenance option
 - scalar register: add --no-maintenance option
 - scalar: customize register_dir()'s behavior

 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.

 Will merge to 'next'?
 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]>

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

 Doc update.

 Will merge to 'next'.
 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-05) 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]>

* jc/ci-skip-unavailable-external-software (2025-04-25) 2 commits
  (merged to 'next' on 2025-05-05 at a13d958c1b)
 + 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 'master'.
 source: <[email-masked]>

* ps/maintenance-missing-tasks (2025-05-05) 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
  (merged to 'next' on 2025-05-05 at c85e7a2e65)
 + 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 'master'.
 source: <[email-masked]>
 source: <[email-masked]>

* ds/fix-thin-fix (2025-04-28) 3 commits
  (merged to 'next' on 2025-05-05 at 200a988f98)
 + 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 'master'.
 source: <[email-masked]>

* ps/object-store-cleanup (2025-04-29) 8 commits
  (merged to 'next' on 2025-05-05 at f91eca32c9)
 + 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 'master'.
 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
  (merged to 'next' on 2025-05-05 at 546cdf31bf)
 + meson: prefer shell at "/bin/sh"
 + meson: report detected runtime executable paths

 Meson-based build framework update.

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

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