Subject: What's cooking in git.git (Apr 2025, #03; Fri, 11)

From: Junio C Hamano <[email-masked]>
Date: Fri, 11 Apr 2025 15:58:33 -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).

As some of you may know, I do not like to issue "What's cooking"
reports rapidly in a row (which in turn means making merges to
'master' too often), but with so many backlogs that have matured,
I couldn't help it.

Copies of the source code to Git live in many repositories, and the
following is a list of the ones I push into or their mirrors.  Some
repositories have only a subset of branches.

With maint, master, next, seen, todo:

	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]

* 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-08) 4 commits
 - meson: add support for 'headers-check'
 - 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.

 Getting there.
 cf. <[email-masked]>
 source: <[email-masked]>

* ps/object-file-cleanup (2025-04-11) 10 commits
 - 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: split out functions relating to index subsystem
 - 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 "dir.c"
 - Merge branch 'ps/object-wo-the-repository' into ps/object-file-cleanup
 (this branch uses ps/object-wo-the-repository.)

 Code clean-up.

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

* ab/environment-clean-header (2025-04-09) 1 commit
  (merged to 'next' on 2025-04-09 at 845b92c7ef)
 + environment.h: remove unused variables

 Code clean-up.

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

* cj/refname-avail-check-optim-typofix (2025-04-09) 1 commit
  (merged to 'next' on 2025-04-09 at 95fe082872)
 + refs: fix duplicated word in comment

 Comment fix.

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

* dd/sparse-glibc-workaround (2025-04-09) 1 commit
  (merged to 'next' on 2025-04-09 at 14ee53c8e4)
 + sparse: ignore warning from new glibc headers

 Squelch false-positive from sparse.

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

* js/ci-github-update-ubuntu (2025-04-09) 1 commit
  (merged to 'next' on 2025-04-09 at fae10a2b5b)
 + ci: upgrade `sparse` to supported build agents

 Adjust to the deprecation of use of Ubuntu 20.04 GitHub Actions CI.

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

* ps/refname-avail-check-optim (2025-04-09) 1 commit
  (merged to 'next' on 2025-04-09 at 0d35104147)
 + refs/packed: fix BUG when seeking refs with UTF-8 characters

 Incorrect sorting of refs with bytes with high-bit set on platforms
 with signed char led to a BUG, which has been corrected.

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

* rj/build-tweaks (2025-04-09) 13 commits
 - 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.

 Comments?
 source: <[email-masked]>

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

* js/range-check-codeql-workaround (2025-03-28) 1 commit
 - read-cache: check range before dereferencing an array element

 Work around false positive from CodeQL checker.

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

* jt/help-sha-backend-info-in-build-options (2025-04-07) 2 commits
  (merged to 'next' on 2025-04-08 at 7389752293)
 + help: include unsafe SHA-1 build info in version
 + help: include SHA implementation in version info

 "git help --build-options" reports SHA-1 and SHA-256 backends used
 in the build.

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

* pb/perf-test-fixes (2025-03-28) 2 commits
  (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]>

* ps/cat-file-filter-batch (2025-04-07) 12 commits
  (merged to 'next' on 2025-04-08 at eb8dfb17ea)
 + builtin/cat-file: use bitmaps to efficiently filter by object type
 + builtin/cat-file: deduplicate logic to iterate over all objects
 + pack-bitmap: introduce function to check whether a pack is bitmapped
 + pack-bitmap: add function to iterate over filtered bitmapped objects
 + pack-bitmap: allow passing payloads to `show_reachable_fn()`
 + builtin/cat-file: support "object:type=" objects filter
 + builtin/cat-file: support "blob:limit=" objects filter
 + builtin/cat-file: support "blob:none" objects filter
 + builtin/cat-file: wire up an option to filter objects
 + builtin/cat-file: introduce function to report object status
 + builtin/cat-file: rename variable that tracks usage
 + Merge branch 'tb/incremental-midx-part-2' into ps/cat-file-filter-batch

 "git cat-file --batch" and friends learned to allow "--filter=" to
 omit certain objects, just like the transport layer does.

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

* ps/misc-build-fixes (2025-04-01) 5 commits
  (merged to 'next' on 2025-04-08 at 85693b6d96)
 + ci: use Visual Studio for win+meson job on GitHub Workflows
 + meson: distinguish build and target host binaries
 + meson: respect 'tests' build option in contrib
 + gitweb: fix generation of "gitweb.js"
 + meson: fix handling of '-Dcurl=auto'

 Random build fixes.

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

* ps/test-wo-perl-prereq (2025-04-07) 20 commits
  (merged to 'next' on 2025-04-08 at 424e2eab23)
 + t5703: refactor test to not depend on Perl
 + t5316: refactor `max_chain()` to not depend on Perl
 + t0210: refactor trace2 scrubbing to not use Perl
 + t0021: refactor `generate_random_characters()` to not depend on Perl
 + t/lib-httpd: refactor "one-time-perl" CGI script to not depend on Perl
 + t/lib-t6000: refactor `name_from_description()` to not depend on Perl
 + t/lib-gpg: refactor `sanitize_pgp()` to not depend on Perl
 + t: refactor tests depending on Perl for textconv scripts
 + t: refactor tests depending on Perl to print data
 + t: refactor tests depending on Perl substitution operator
 + t: refactor tests depending on Perl transliteration operator
 + Makefile: stop requiring Perl when running tests
 + meson: stop requiring Perl when tests are enabled
 + t: adapt existing PERL prerequisites
 + t: introduce PERL_TEST_HELPERS prerequisite
 + t: adapt `test_readlink()` to not use Perl
 + t: adapt `test_copy_bytes()` to not use Perl
 + t: adapt character translation helpers to not use Perl
 + t: refactor environment sanitization to not use Perl
 + t: skip chain lint when PERL_PATH is unset

 "make test" used to have a hard dependency on (basic) Perl; tests
 have been rewritten help environment with NO_PERL test the build as
 much as possible.

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

* pw/custom-conflict-marker-size-for-merge-related-docs (2025-03-29) 1 commit
  (merged to 'next' on 2025-04-07 at 281b7207e3)
 + merge-file doc: set conflict-marker-size attribute

 "git-merge-file" documentation source, which has lines that look
 like conflict markers, lacked custom conflict marker size defined,
 which has been corrected..

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

* ab/rm-sign-compare (2025-03-29) 1 commit
  (merged to 'next' on 2025-04-08 at bc1f98e81c)
 + rm: fix sign comparison warnings

 Some warnings from "-Wsign-compare" for builtin/rm.c have been
 squelched.

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

* kn/blame-porcelain-unblamable (2025-04-07) 1 commit
  (merged to 'next' on 2025-04-09 at 971ba23ba0)
 + blame: print unblamable and ignored commits in porcelain mode

 "git blame --porcelain" mode now talks about unblamable lines and
 lines that are blamed to an ignored commit.

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

* ua/update-update-server-info (2025-04-08) 1 commit
  (merged to 'next' on 2025-04-09 at f0d47e97b5)
 + builtin/update-server-info: remove unnecessary if statement

 Code simplification.

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

* ab/pathspec-sign-compare-workaround (2025-04-01) 1 commit
  (merged to 'next' on 2025-04-08 at 875fb0e3ee)
 + pathspec: fix sign comparison warnings

 Some warnings from "-Wsign-compare" for pathspec.c have been
 squelched.

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

* bc/allow-upload-pack-from-other-people (2025-04-01) 1 commit
  (merged to 'next' on 2025-04-07 at c27755834e)
 + t5605: fix test for cloning from a different user

 Test fix for an already graduated topic.

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

* en/merge-recursive-debug (2025-04-08) 8 commits
  (merged to 'next' on 2025-04-09 at 555be94c73)
 + builtin/{merge,rebase,revert}: remove GIT_TEST_MERGE_ALGORITHM
 + tests: remove GIT_TEST_MERGE_ALGORITHM and test_expect_merge_algorithm
 + merge-recursive.[ch]: thoroughly debug these
 + merge, sequencer: switch recursive merges over to ort
 + sequencer: switch non-recursive merges over to ort
 + merge-ort: enable diff-algorithms other than histogram
 + builtin/merge-recursive: switch to using merge_ort_generic()
 + checkout: replace merge_trees() with merge_ort_nonrecursive()

 Remove remnants of the recursive merge strategy backend, which was
 superseded by the ort merge strategy.

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

* ja/doc-reset-mv-rm-markup-updates (2025-04-01) 5 commits
 - 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

 Expecting a reroll.
 cf. <CAN0heSodC8_Uwg_Lw31rtkdLfOEDyGg=[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]>

* mh/left-right-limited (2025-04-01) 1 commit
 - 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 'next'?
 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

 Comments?
 source: <[email-masked]>

* ds/maintenance-loose-objects-batchsize (2025-03-23) 2 commits
  (merged to 'next' on 2025-04-07 at a4e55af4bc)
 + maintenance: add loose-objects.batchSize config
 + maintenance: force progress/no-quiet to children

 The job to coalesce loose objects into packfiles in "git
 maintenance" now has configurable batch size.

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

* jt/clone-guess-remote-head-fix (2025-03-25) 3 commits
  (merged to 'next' on 2025-04-07 at 35793fd7d8)
 + advice: allow disabling default branch name advice
 + builtin/clone: suppress unexpected default branch advice
 + remote: allow `guess_remote_head()` to suppress advice

 "git clone" still gave the message about the default branch name;
 this message has been turned into an advice message that can be
 turned off.

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

* lo/userdiff-gitconfig (2025-04-01) 1 commit
  (merged to 'next' on 2025-04-07 at 1b906232a1)
 + userdiff: add builtin driver for INI files

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

* js/comma-semicolon-confusion (2025-03-28) 10 commits
  (merged to 'next' on 2025-04-07 at 3c1f7f4226)
 + detect-compiler: detect clang even if it found CUDA
 + clang: warn when the comma operator is used
 + compat/regex: explicitly mark intentional use of the comma operator
 + wildmatch: avoid using of the comma operator
 + diff-delta: avoid using the comma operator
 + xdiff: avoid using the comma operator unnecessarily
 + clar: avoid using the comma operator unnecessarily
 + kwset: avoid using the comma operator unnecessarily
 + rebase: avoid using the comma operator unnecessarily
 + remote-curl: avoid using the comma operator unnecessarily

 Code clean-up.

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

* jt/ref-transaction-abort-fix (2025-03-21) 1 commit
  (merged to 'next' on 2025-04-08 at b653d86941)
 + builtin/fetch: avoid aborting closed reference transaction

 A ref transaction corner case fix.

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

* zy/send-email-error-handling (2025-04-07) 2 commits
  (merged to 'next' on 2025-04-08 at d5a716a940)
 + send-email: finer-grained SMTP error handling
 + send-email: capture errors in an eval {} block

 Auth-related (and unrelated) error handling in send-email has been
 made more robust.

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

* ps/mingw-creat-excl-fix (2025-03-21) 2 commits
  (merged to 'next' on 2025-04-07 at 590b0d4d21)
 + compat/mingw: fix EACCESS when opening files with `O_CREAT | O_EXCL`
 + meson: fix compat sources when compiling with MSVC

 Fix lockfile contention in reftable code on Windows.

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

* jk/fetch-follow-remote-head-fix (2025-04-09) 4 commits
  (merged to 'next' on 2025-04-09 at 3071fce577)
 + fetch: make set_head() call easier to read
  (merged to 'next' on 2025-04-07 at ba5ac342a5)
 + fetch: don't ask for remote HEAD if followRemoteHEAD is "never"
 + fetch: only respect followRemoteHEAD with configured refspecs
 + Merge branch 'jk/fetch-ref-prefix-cleanup' into jk/fetch-follow-remote-head-fix

 "git fetch [<remote>]" with only the configured fetch refspec
 should be the only thing to update refs/remotes/<remote>/HEAD,
 but the code was overly eager to do so in other cases.

 Will merge to 'master'.
 cf. <[email-masked]>
 source: <[email-masked]>
 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]>

* jt/rev-list-z (2025-03-21) 5 commits
  (merged to 'next' on 2025-04-08 at e608ba85c1)
 + rev-list: support NUL-delimited --missing option
 + rev-list: support NUL-delimited --boundary option
 + rev-list: support delimiting objects with NUL bytes
 + rev-list: refactor early option parsing
 + rev-list: inline `show_object_with_name()` in `show_object()`

 "git rev-list" learns machine-parsable output format that delimits
 each field with NUL.

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

* kn/reflog-drop (2025-03-17) 2 commits
  (merged to 'next' on 2025-04-07 at 193c01b203)
 + reflog: implement subcommand to drop reflogs
 + reflog: improve error for when reflog is not found

 "git reflog" learns "drop" subcommand, that discards the entire
 reflog data for a ref.

 Will merge to 'master'.
 cf. <CAP8UFD1vTkPH=5b++6+=koozC31=[email-masked]>
 source: <20[email-masked]>

* md/t1403-path-is-file (2025-03-04) 1 commit
  (merged to 'next' on 2025-04-07 at 93087893e8)
 + t1403: verify that path exists and is a file

 Test tweak.

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

* sk/clar-trailer-urlmatch-norm-test (2025-03-04) 2 commits
  (merged to 'next' on 2025-04-08 at 51cb3c8bce)
 + t/unit-tests: convert urlmatch-normalization test to clar
 + t/unit-tests: convert trailer test to use clar

 A few traditional unit tests have been rewritten to use the clar
 framework.

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

* kn/non-transactional-batch-updates (2025-04-08) 9 commits
  (merged to 'next' on 2025-04-08 at de64e9c49e)
 + update-ref: add --batch-updates flag for stdin mode
 + refs: support rejection in batch updates during F/D checks
 + refs: implement batch reference update support
 + refs: introduce enum-based transaction error types
 + refs/reftable: extract code from the transaction preparation
 + refs/files: remove duplicate duplicates check
 + refs: move duplicate refname update check to generic layer
 + refs/files: remove redundant check in split_symref_update()
 + Merge branch 'ps/refname-avail-check-optim' into kn/non-transactional-batch-updates

 Updating multiple references have only been possible in all-or-none
 fashion with transactions, but it can be more efficient to batch
 multiple updates even when some of them are allowed to fail in a
 best-effort manner.  A new "best effort batches of updates" mode
 has been introduced.

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

* ps/object-wo-the-repository (2025-03-10) 12 commits
  (merged to 'next' on 2025-04-07 at 0cc0c8631d)
 + hash: stop depending on `the_repository` in `null_oid()`
 + hash: fix "-Wsign-compare" warnings
 + object-file: split out logic regarding hash algorithms
 + delta-islands: stop depending on `the_repository`
 + object-file-convert: stop depending on `the_repository`
 + pack-bitmap-write: stop depending on `the_repository`
 + pack-revindex: stop depending on `the_repository`
 + pack-check: stop depending on `the_repository`
 + environment: move access to "core.bigFileThreshold" into repo settings
 + pack-write: stop depending on `the_repository` and `the_hash_algo`
 + object: stop depending on `the_repository`
 + csum-file: stop depending on `the_repository`
 (this branch is used by ps/object-file-cleanup.)

 The object layer has been updated to take an explicit repository
 instance as a parameter in more code paths.

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

* ps/maintenance-reflog-expire (2025-04-08) 6 commits
  (merged to 'next' on 2025-04-08 at 40d6884143)
 + builtin/maintenance: introduce "reflog-expire" task
 + builtin/gc: split out function to expire reflog entries
 + builtin/reflog: make functions regarding `reflog_expire_options` public
 + builtin/reflog: stop storing per-reflog expiry dates globally
 + builtin/reflog: stop storing default reflog expiry dates globally
 + reflog: rename `cmd_reflog_expire_cb` to `reflog_expire_options`

 "git maintenance" learns a new task to expire reflog entries.

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

* jk/zlib-inflate-fixes (2025-02-25) 10 commits
  (merged to 'next' on 2025-04-07 at 4343a155f7)
 + unpack_loose_rest(): rewrite return handling for clarity
 + unpack_loose_rest(): simplify error handling
 + unpack_loose_rest(): never clean up zstream
 + unpack_loose_rest(): avoid numeric comparison of zlib status
 + unpack_loose_header(): avoid numeric comparison of zlib status
 + git_inflate(): skip zlib_post_call() sanity check on Z_NEED_DICT
 + unpack_loose_header(): fix infinite loop on broken zlib input
 + unpack_loose_header(): report headers without NUL as "bad"
 + unpack_loose_header(): simplify next_out assignment
 + loose_object_info(): BUG() on inflating content with unknown type

 Fix our use of zlib corner cases.

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

* ps/reftable-windows-unlink-fix (2025-02-18) 2 commits
  (merged to 'next' on 2025-04-07 at 88e2a9a077)
 + reftable: ignore file-in-use errors when unlink(3p) fails on Windows
 + Merge branch 'ps/reftable-sans-compat-util' into ps/reftable-windows-unlink-fix

 Portability fix.

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